pyspark 在Map中合并多个when条件

qij5mzcb  于 2022-12-22  发布在  Spark
关注(0)|答案(1)|浏览(178)

我有一个用例,要连接 Dataframe A和 Dataframe B,并根据when条件选择属性。

A.join(B, condition, "left") 
.select (when(A.template == "some_value", B.new_value)
         .when(A.template == "some_value1", B.new_value1)
         .when(A.template == "some_value2", B.new_value2)
         .otherwise(B.some_value3).alias("new_value")
)

我有25个when条件,我想让它成为map的一部分,而不是select语句的一部分,有办法做到吗?
我尝试使用UDF和map_from_arrays,但是不确定如何指定从 Dataframe B选择属性。

B[my_map.getItem(A.rate_template)].alias("new_value")
acruukt9

acruukt91#

如果您使用“left-semi”和标记所需条件的新列,可能会更容易。此外,使用pyspark.sql.functions import transform, transform_values, transform_keys可能是替代UDF的另一种选择(不惜任何代价避免它。如果它们损坏,则很难理解原因和调试)
您能否提供一些您正在连接的数据框的示例?

相关问题