scala spark sql中带有循环表达式的when条件



我正在尝试将pyspark解决方案转换为scala。

这是代码:

conditions_ = [when(df1[c]!=df2[c], lit(c)).otherwise("") for c in df1.columns if c not in ['firstname','middlename','lastname']]
status = when(df1["id"].isNull(), lit("added"))
.when(df2["id"].isNull(), lit("deleted"))
.when(size(array_remove(array(*conditions_), "")) > 0, lit("updated"))
.otherwise("unchanged")

对于scala,我只是尝试使用expr而不是*来替换when子句中的conditions_表达式,但由于for语法的原因,它不受支持。

你能告诉我这里的正确语法吗?在when子句中添加一个循环,动态计算列差异的计数。

如果您想在scala中解压缩数组,可以使用以下语法:

when(size(array_remove(array(conditions_:_*), "")) > 0, lit("updated"))

"_*"操作员

最新更新