2016-04-04 5 views
0

Я новичок в Impala, и я пытаюсь написать запрос, где одно поле SUM (X), и я хочу поставить условие в это поле. Когда я использовал этот запрос в MySQL, «HAVING SUM (X) IS NULL« отлично работает »- кто-нибудь знает, что эквивалентно в Impala?IS NOT NULL в Cloudera-Impala

Я попробовал несколько способов, это то, что я получил:

  • "HAVING SUM (X) IS NOT NULL" -> AnalysisException: Нет функции согласования с подписью: ISNULL (STRING).
  • «ИМЕЕТ СУММУ (X) НЕ НУЛЛ» -> АнализException: Синтаксическая ошибка в строке 93: ИМЕЕТ СУММУ (X) NOT NULL^Обнаружено: NULL Ожидается: МЕЖДУ, IN, LIKE, REGEXP, RLIKE, ВЫЗВАННОЕ: Исключение: Синтаксическая ошибка

Если у кого-то есть ответ, я бы очень признателен ... Спасибо!

+1

пожалуйста, напишите и пример запроса вы работаете – Jared

ответ

-1

Вы попробовали IF условная функция?

HAVING IF(SUM(X) = NULL, FALSE, TRUE) 

Документация: http://www.cloudera.com/documentation/archive/impala/2-x/2-1-x/topics/impala_conditional_functions.html

+0

Вы никогда не должны сравнивать непосредственно с = против NULL. Это всегда может давать ложь, независимо от того, что такое СУММ (X). Например, выберите 'IF (NULL = NULL, 1, 0)' дает 0, а не 1, как и следовало ожидать. С другой стороны, 'select IF (NULL! = NULL, 1, 0)' также дает 0, а не отрицание первого .... 'select if (NULL NULL, 1, 0), если (NULL не является NULL, 1, 0) 'работает как ожидалось, я говорю о конкретном случае Impala, здесь. Это не зависит от реализации, но поведение Impala в этом отношении следует, стандарт SQL, я считаю. – Mateo

+0

Кстати, в Импале простая альтернатива 'IF (expr, false, true)' просто 'NOT (expr)' – Mateo

 Смежные вопросы

  • Нет связанных вопросов^_^