我正在使用标准非聚合表列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
答案 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 |
+---+-----+-----+-------+------------+