- 报错信息:
FAILED: ParseException line 134:22 missing ) at ',' near ')' in subquery source
line 135:12 mismatched input ',' expecting ) near ')' in subquery source
- 报错case:
SELECT tab1.a,
tab1.b,
SUM(tab1.c)
FROM tab1
GROUP BY tab1.a,
tab1.b
GROUPING SETS ((tab1.a, tab1.b))
报错信息如上;
- 解决:
问题定位:去掉grouping sets代码段,正常执行;
查阅相关资料,错误应该来源于hive自身的bug--解析异常;
相关链接:[HIVE-6950] Parsing Error in GROUPING SETS - ASF JIRA
SELECT tab1.a,
tab1.b,
SUM(tab1.c)
FROM tab1
GROUP BY tab1.a,
tab1.b
GROUPING SETS ((a, tab1.b))
执行成功;
- 原因分析:语法有歧义
grouping sets解析过程中选择将 '((tab1.a, tab1.b))' 解释为'((tab1.a),(tab1.b))',所以报错信息会报')'缺失。
在 '((a, tab1.b))' 的情况下,会正确解析。
- 2022-11-28追加备注:
- 对于hive执行引擎,group by 后的第一个维度字段必须为主表唯一字段;
- group by后维度字段保证不为null,否则会导致取唯一维度数据时,造成与其他维度数据混乱。