2013-08-08 3 views
3

У меня есть столбец в улье с типом двойной, но некоторые строки являются NULL, когда я делаю:Обработка нулевых значений на улей

select columnA from table; 

теперь, если я бегу следующее, я получаю 0 для обоих запросов :

select count(*) from table where columnA = "NULL"; 
select count(*) from table where columnA = NULL; 

Как я могу подсчитать строки в таблице, которые являются NULL?

ответ

6

Правильный запрос:

select count(*) from table where columnA is null; 
+0

Олаф, вы знаете, как я мог это сделать для каждой колонки в таблице? Таблица имеет большое количество столбцов, и я бы предпочёл не запускать один запрос для каждого столбца. –

+1

@ user2932774: Я не пробовал это в Hive, но в стандартном SQL вы можете использовать «case». См. Ссылку: http://stackoverflow.com/questions/12789396/how-to-get-multiple-counts-with-one-sql-query – Olaf

+0

Спасибо за ссылку! –

5

В улья, граф (*) подсчитывает все строки и подсчета (Columna) будет рассчитывать только строки, где Columna не равен нулю. Если вы хотите сделать несколько столбцов, вы можете написать запрос по адресу:

select count(*)-count(columnA), count(*)-count(columnB) from table; 

и получить количество нулевых значений в каждом столбце. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF