我想在 pyspark 中执行以下操作(对于 AWS Glue 作业):
JOIN a and b ON a.name = b.name AND a.number= b.number AND a.city LIKE b.city
Run Code Online (Sandbox Code Playgroud)
例如:
表一:
| 数字 | 姓名 | 城市 |
|---|---|---|
| 1000 | 鲍勃 | % |
| 2000年 | 乔 | 伦敦 |
表b:
| 数字 | 姓名 | 城市 |
|---|---|---|
| 1000 | 鲍勃 | 波士顿 |
| 1000 | 鲍勃 | 柏林 |
| 2000年 | 乔 | 巴黎 |
结果
| 数字 | 姓名 | 城市 |
|---|---|---|
| 1000 | 鲍勃 | 波士顿 |
| 1000 | 鲍勃 | 柏林 |
所以我不知道该怎么做的部分是实现通配符“%”并使用 LIKE 运算符。我知道你可以.like()在字符串上使用,例如:
df.where(col('col1').like("%string%")).show()
Run Code Online (Sandbox Code Playgroud)
但它需要一个字符串,在我的例子中我想把它作为一个列。像下面这样:
result = a.join(
b,
(a.name == b.name) &
(a.number == b.number) &
(a.city.like(b.city)) # <-- This doesnt work …Run Code Online (Sandbox Code Playgroud)