Неверный результат при использовании группирования наборов в Hive - PullRequest
0 голосов
/ 02 марта 2020

Я использую Улей 1.2.1, и у меня есть улей sql следующим образом:

select
    c1
  , c2
  , c3 
  , GROUPING__ID
  , count(*) as cnt
from (
    select 
         1 as c1, 2 as c2, 3  as c3
    union all
    select 
         1 as c1, 2 as c2, 33 as c3
    ) t
group by c1, c2,c3
grouping sets(
    (c1,c2,c3),
    (c1,c2),
    (c1)
)

Результат ниже, что неверно.

+-----+-----+-------+---------------+------+--+
| c1  | c2  |  c3   | grouping__id  | cnt  |
+-----+-----+-------+---------------+------+--+
| 1   | 2   | NULL  | 1             | 2    |
| 1   | 2   | NULL  | 3             | 2    |
| 1   | 2   | 3     | 7             | 1    |
| 1   | 2   | 33    | 7             | 1    |
+-----+-----+-------+---------------+------+--+ 

правильный результат должен быть:

+-----+-------+-------+---------------+------+--+
| c1  |  c2   |  c3   | grouping__id  | cnt  |
+-----+-------+-------+---------------+------+--+
| 1   | NULL  | NULL  | 1             | 2    |
| 1   | 2     | NULL  | 3             | 2    |
| 1   | 2     | 3     | 7             | 1    |
| 1   | 2     | 33    | 7             | 1    |
+-----+-------+-------+---------------+------+--+

Если я выполню запрос к таблице следующим образом, то результат будет правильным.

select
    c1
  , c2
  , c3 
  , GROUPING__ID
  , count(*) as cnt
from t
group by c1, c2,c3
grouping sets(
    (c1,c2,c3),
    (c1,c2),
    (c1)
)

Может ли кто-нибудь помочь взглянуть?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...