Команда Hive create table выдает семантическое исключение строки 0:-1 Недопустимая функция «НЕВЕРНО»

#hive

Вопрос:

Мой запрос звучит так

 create table abc as select * from (select x,  (CASE WHEN ( y != '' and y is not null) THEN y ELSE z END ) AS testColumn from table1) q where q.testColumn is not null;
 

Всякий раз, когда я этим занимаюсь. Это дает мне

 SemanticException Line 0:-1 Invalid function 'IS NOT TRUE'
 

Если я удалю create table с самого начала, это сработает, если я изменю имя столбца с testColumn на x, это сработает, если я изменю create table, чтобы вставить в него, сработает.

Что не так с create table?

Заранее спасибо.

Ответ №1:

Есть избыточные () , я думаю, это вызывает ошибку. Также y != '' and y is not null является избыточным , потому что если y != '' оно не может быть равно НУЛЮ, значит, y != '' этого достаточно.

 create table abc as 
select * 
from 
 (select x, 
         CASE WHEN y != '' THEN y ELSE z END AS testColumn 
    from table1
 ) q 
where q.testColumn is not null;
 

Комментарии:

1. Спасибо за ваш ответ, но он все равно выдал мне ту же ошибку: Ошибка в строке семантического исключения 0:-1 Недопустимая функция «НЕ СООТВЕТСТВУЕТ ДЕЙСТВИТЕЛЬНОСТИ»

Ответ №2:

В нашем кластере произошло исправление, из-за которого он не работал. Чтобы это сработало, мне нужно установить свойство

 set hive.cbo.enable=false;
 

После этого мой запрос сработал.