#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;
После этого мой запрос сработал.