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("")))
我建议将复杂的列表达式提取到变量中以进行清理。
我正在使用 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("")))
我建议将复杂的列表达式提取到变量中以进行清理。