Ошибка типа: неподдерживаемые типы операндов для &: 'str' и 'method'
Я конвертирую Hive SQL, используя операции API-интерфейса spark dataframe. Один из вариантов использования требует проверки строкового столбца на пустое и 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)
эта проверка дает мне ошибку. Как я могу удовлетворить это условие?
1 ответ
Решение
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("")))
Я бы порекомендовал вытащить сложные выражения столбца в переменные, чтобы очистить это.