//Input
spark.sql(" select 'apple;banana' value, 150 amount union all select 'carrot', 50 ").createOrReplaceTempView("df1")
spark.sql(" select 'apple' value union all select 'orange' ").createOrReplaceTempView("df2")
//Output
spark.sql("""
select a.value, b.amount
from df2 a
left join df1 b
on ';'||b.value||';' like '%;'||a.value||';%'
""").show(false)
+------+------+
|value |amount|
+------+------+
|apple |150 |
|orange|null |
+------+------+
2条答案
按热度按时间rekjcdws1#
你可以将
split
的值在df1
和explode
它们之前加入。完整示例:
**处理空值。**如果您希望成功连接的两个 Dataframe 中的“Value”列都为空值,则需要使用
eqNullSafe
等式。使用此条件通常会将两个 Dataframe 中的“Value”列保留在输出 Dataframe 中。因此,为了明确删除它,我建议在 Dataframe 上使用alias
。6yt4nkrj2#
在左外联接中使用SQL“like”运算符。请尝试以下操作