Использование group by для получения количества категорий, но в выходной таблице отсутствует одна категория, поскольку данные недоступны - PullRequest
0 голосов
/ 03 октября 2019

Проблема со сценарием Hive: у меня проблема с получением подсчета по группам с использованием Hive, когда это значение равно нулю. Если категория доступна во входной таблице, я смог увидеть количество в выходной таблице. Но когда конкретная категория недоступна во входной таблице, она не отображается как ноль в выходной таблице. Вместо этого эта категория исчезает из выходной таблицы. Любая помощь здесь высоко ценится. Заранее спасибо.

Таблицы ввода и вывода: введите описание изображения здесь

Таблица ввода разбита на " Год столбец

Код улья, который я пробовал: введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Вы можете попробовать использовать select from values синтаксис

SELECT
  input_table.attribute,
  bins.bin,
  COUNT(input_table.bin) bin_count 
FROM
  (VALUES (96),
          (97),
          (98))bins (bin)
left JOIN input_table
        ON bins.bin = input_table.bin 
group by bins.bin,input_table.attribute
0 голосов
/ 04 октября 2019

Я думаю, что вы слишком усложнили логику. Чтобы получить ожидаемые результаты, вы можете UNION ALL выполнить три простых запроса следующим образом:

SELECT 'ada' attribute, 96 bin, COUNT(*) FROM input_table WHERE bin = 96
UNION ALL SELECT 'ada' attribute, 97 bin, COUNT(*) FROM input_table WHERE bin = 97
UNION ALL SELECT 'ada' attribute, 98 bin, COUNT(*) FROM input_table WHERE bin = 98

Эти типы запросов с неявным GROUP BY всегда будут возвращать что-то, даже если нет записи, котораясоответствует условию WHERE.

Демонстрация на DB Fiddle :

attribute | bin | (No column name)
:-------- | --: | ---------------:
ada       |  96 |                3
ada       |  97 |                0
ada       |  98 |                5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...