查找pysparkMap时返回默认值列

cclgggtu  于 2023-02-18  发布在  Spark
关注(0)|答案(1)|浏览(184)

我有一个使用pyspark.sql.functions.create_map创建的map列。我正在执行一些操作,这些操作要求我在此map列中查找,如下所示。

lookup_map[col("col1")]

如果lookup_map列中不存在一个值,我希望它返回一个默认值,如何实现呢?

pjngdqdw

pjngdqdw1#

使用coalesce

F.coalesce(lookup_map[col("col1")], F.lit("default"))

例如
对于以下Map

mapping = {'1': 'value'}
mapping_expr = F.create_map([F.lit(x) for x in chain(*mapping.items())])

和输入DF:

产出

df.withColumn("value", F.coalesce(mapping_expr[F.col("id")], F.lit("x"))).show()

将为:

相关问题