У меня проблема с условием фильтра в Hive с предложением CASE WHEN. Ниже приведены заявление и ошибка:
Заявление:
select day
from db.tableName
where case when length(day) <> '19' then substr(day,1,19) else day end
Ошибка:
org.apache.spark.sql.AnalysisException: выражение фильтра 'CASE WHEN (NOT length (tableName. day
) =' 19 ') THEN подстрока (tableName. day
, 1, 19) ELSE tableName. day
END 'типа string не является логическим значением. ;;
Если я помещу предложение case в предложение select
, оператор выполняется отлично, но помещается туда, где условие создает упомянутую ошибку. Несмотря на то, что я зафиксировал ошибку от Zeppelin
, но та же самая ошибка строкового типа не является логической, также на Beeline
.
Есть какие-нибудь указатели по этому вопросу?