Hive CASE не работает в состоянии фильтра - PullRequest
0 голосов
/ 07 января 2019

У меня проблема с условием фильтра в 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.

Есть какие-нибудь указатели по этому вопросу?

1 Ответ

0 голосов
/ 07 января 2019

Ваш синтаксис неправильный. Вам не нужно использовать предложение WHERE здесь.

Попробуйте следующее:

select case 
      when length(day) <> '19' then substr(day,1,19) 
      else day 
      end
      from db.tableName;
...