为啥在 hive 中执行 group by 时出现错误?
Posted
技术标签:
【中文标题】为啥在 hive 中执行 group by 时出现错误?【英文标题】:Why I am getting error while performing group by in hive?为什么在 hive 中执行 group by 时出现错误? 【发布时间】:2019-12-04 07:46:36 【问题描述】:我正在 hive 中执行以下命令:
Select child.data_volume_gprs_dl + child.data_volume_gprs_ul as data_usage,
parent.file_name,
parent.record_number
from table1 as parent
left join table2 child
on parent.file_name = child.file_name
and parent.record_number = child.record_number
where parent.served_imsi like '310120%'
or parent.served_imsi like '312530%'
and parent.serving_node_plmn_id like '310260%'
and parent.date_part = 20191201
group by parent.file_name, parent.record_number
错误:编译语句时出错:FAILED: SemanticException [错误 10025]:第 1:7 行表达式不在 GROUP BY 键中 'data_volume_gprs_dl'(状态=42000,代码=10025)
为什么会出现这个错误?
【问题讨论】:
请提供样本数据和期望的结果。显然,您的查询不是有效的 SQL,因此它不能很好地描述结果集。 【参考方案1】:所有非聚合列都应在GROUP BY
列表中,例如
group by parent.file_name, parent.record_number,
child.data_volume_gprs_dl, child.data_volume_gprs_ul
如果您只需要按parent.file_name
和parent.record_number
列进行分组,则可以对其余列应用聚合(sum()
、avg()
、count()
)函数。甚至可能添加sum(child.data_volume_gprs_dl + child.data_volume_gprs_ul)
。
【讨论】:
但我的要求是按 parent.file_name、parent.record_number 分组。有没有其他方法可以解决这个问题。以上是关于为啥在 hive 中执行 group by 时出现错误?的主要内容,如果未能解决你的问题,请参考以下文章
执行SQL时出现: ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
使用 group_by 和 summarise 时出现重复行