如何在 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 - 使用自定义聚合(百分位)按列值分组