是否可以在Hive中的常量列上进行分组?

时间:2017-04-17 07:08:03

标签: sql hive hiveql

我正在使用标准非聚合表列key1和key2上的group by运行Hive查询,如下所示。但我正在添加一个常量类型列,基于每个表的联合条件的条件。

CREATE TABLE IF NOT EXISTS T_FINAL AS SELECT DISTINCT union_tbles.key1 AS key1, union_tbles.key2 AS key2, union_tbles.cnt AS cnt, union_tbles.type AS type FROM (
SELECT key1 AS key1, key2 AS key2, COUNT(val) AS cnt, 'x1' AS type FROM T_SUB1 WHERE key1 IN ('X1') GROUP BY key1, key2
UNION ALL
SELECT key1 AS key1, key2 AS key2, COUNT(val) AS cnt, 'x2' AS type FROM T_SUB1 WHERE key1 IN ('X2') GROUP BY key1, key2
) union_tbles

是否可以将常量列类型添加为按列分组,如下所示? 当我尝试在分组中添加常量列类型时,我在Hive中收到无效列别名错误。有什么建议如何在Hive中做到这一点?

CREATE TABLE IF NOT EXISTS T_FINAL AS SELECT DISTINCT union_tbles.key1 AS key1, union_tbles.key2 AS key2, union_tbles.cnt AS cnt, union_tbles.type AS type FROM (
SELECT key1 AS key1, key2 AS key2, COUNT(val) AS cnt, 'x1' AS type FROM T_SUB1 WHERE key1 IN ('X1') GROUP BY key1, key2, type
UNION ALL
SELECT key1 AS key1, key2 AS key2, COUNT(val) AS cnt, 'x2' AS type FROM T_SUB1 WHERE key1 IN ('X2') GROUP BY key1, key2, type
) union_tbles

1 个答案:

答案 0 :(得分:0)

Hive无法识别GROUP BY子句中的别名 在任何情况下都绝对不需要按常数分组 常常不需要在GROUP BY子句中选择。

with t as (select 1 as x)
select    x
         ,count(*)
         ,1+1
         ,'Hello'
         ,current_date()
from      t
group by  x
+---+-----+-----+-------+------------+
| x | _c1 | _c2 |  _c3  |    _c4     |
+---+-----+-----+-------+------------+
| 1 |   1 |   2 | Hello | 2017-04-17 |
+---+-----+-----+-------+------------+