TypeError: unsupported operand type(s) for &: 'str' and 'method'

TypeError: unsupported operand type(s) for &: 'str' and 'method'

我正在使用 spark 数据帧 api 操作转换配置单元 sql。其中一个用例需要验证字符串列是否为空白和 NULL。

我写了下面的代码来满足要求

when(trim(get_sor_tab_df["X"]) == 'D',
  when((trim(get_sor_tab_df["X1"]) != '' & get_sor_tab_df["X1"].isNotNull), trim(get_sor_tab_df["X2"])))
    .when(df2_lkp["r_code8"].isNotNull,df2_lkp["r_code8"]).otherwise(coalesce(trim(get_sor_tab_df["X3"]), lit("")))

(trim(get_sor_tab_df["X1"]) != '' & get_sor_tab_df["X1"].isNotNull)

这项检查给我错误。我怎样才能满足这个条件?

isNotNull是一个函数;你忘了 ().

您还需要在每个条件周围加上括号,因为 & 的运算符优先级高于 ==/!=

我相信这在逻辑上等同于你所拥有的,故意使用奇怪的格式来确保括号是平衡的并且逻辑分组在那里:

when( ( (trim(get_sor_tab_df["X"]) == 'D')
      & ( (trim(get_sor_tab_df["X1"]) != '') 
        & (get_sor_tab_df["X1"].isNotNull())
        )
      ),
      trim(get_sor_tab_df["X2"]) 
    )
.when(df2_lkp["r_code8"].isNotNull(), df2_lkp["r_code8"])
.otherwise(coalesce(trim(get_sor_tab_df["X3"]), lit("")))

我建议将复杂的列表达式提取到变量中以进行清理。