簡體   English   中英

如何在 pyspark 中將 LIKE 運算符用作 JOIN 條件作為列

[英]How to use LIKE operator as a JOIN condition in pyspark as a column

我想在 pyspark 中執行以下操作(對於 AWS Glue 作業):

JOIN a and b ON a.name = b.name AND a.number= b.number AND a.city LIKE b.city

例如:

表一:

數字 姓名 城市
1000 鮑勃 %
2000 倫敦

表 b:

數字 姓名 城市
1000 鮑勃 波士頓
1000 鮑勃 柏林
2000 巴黎

結果

數字 姓名 城市
1000 鮑勃 波士頓
1000 鮑勃 柏林

所以我不知道該怎么做的部分是實現通配符“%”並使用 LIKE 運算符。 我知道您可以在字符串上使用.like() ,例如:

df.where(col('col1').like("%string%")).show()

但它需要一個字符串,在我的情況下,我想將它作為一個列。 類似於以下內容:

result = a.join(
    b,
    (a.name == b.name) &
    (a.number == b.number) &
    (a.city.like(b.city)) # <-- This doesnt work since it is not a string

對此的任何幫助將不勝感激!

嘗試使用表達式:

import pyspark.sql.functions as F

result = a.alias('a').join(
    b.alias('b'),
    (a.name == b.name) &
    (a.number == b.number) &
    F.expr("b.city like a.city")
)

我認為您的意思是b like a而不是a like b那樣做 b,因為%在表 a 中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM