如何在 Hive 中按列分组使用聚合函数

Posted

技术标签:

【中文标题】如何在 Hive 中按列分组使用聚合函数【英文标题】:How to use aggregate functions in Hive on Group by columns 【发布时间】:2012-10-15 15:39:09 【问题描述】:

当我尝试在配置单元中的 GroupBy 列上使用内置 UDF 函数或我自己的 UDF 函数时,我似乎遇到了错误

select col1, col2 from xyz group by my_func(col1), col2

它一直在抱怨column –col1 not found in group by expression

【问题讨论】:

【参考方案1】:

当您将函数应用于列时,它不再被称为相同的东西。您应该使用 as 关键字明确命名它。

select group1, group2 from xyz group by my_func(col1) as group1, col2 as group2;

另外,如果您只选择分组依据的列,而不是实际分组的数据,那么distinct 可能比group by 更合适?

【讨论】:

【参考方案2】:

对聚合函数的调用在错误的位置。应该是这样的:

从 xyz 组中选择 my_func(col1),col2 by col1,col2

【讨论】:

【参考方案3】:
select col1, col2 from xyz group by my_func(col1) as col1, col2 

基本是您的 GROUP BY 需要包含您在 SELECT 子句中提到的所有列。

【讨论】:

以上是关于如何在 Hive 中按列分组使用聚合函数的主要内容,如果未能解决你的问题,请参考以下文章

Power Query M - 使用自定义聚合(百分位)按列值分组

在 Hive 和 Presto 中按分组聚合字符串并按顺序排序

SUM 值按列分组,但不能“聚合”?

如何按列分组并聚合其余列

Hive 在使用 case 语句和聚合时按列分组出错

SQL:如何按列分组而不爆炸表中的聚合值