hive表达式不在按键分组中

时间:2011-04-21 16:00:31

标签: group-by hive hiveql

我在HIVE中创建了一个表。 它包含以下列:

id bigint, rank bigint, date string

我想每个月获得平均(排名)。我可以使用这个命令。它有效。

select a.lens_id, avg(a.rank)
from tableA a
group by a.lens_id, year(a.date_saved), month(a.date_saved); 

但是,我也希望得到日​​期信息。我用这个命令:

select a.lens_id, avg(a.rank), a.date_saved
from lensrank_archive a
group by a.lens_id, year(a.date_saved), month(a.date_saved);

抱怨:Expression Not In Group By Key

4 个答案:

答案 0 :(得分:16)

完整的错误消息应采用Expression Not In Group By Key [value]格式 [value]将告诉您Group By中需要的表达式。

只看两个查询,我就说你需要明确地向a.date_saved添加Group By

答案 1 :(得分:9)

四处走动是将附加字段放在collect_set中并返回集合的第一个元素。例如

select a.lens_id, avg(a.rank), collect_set(a.date_saved)[0]
from lensrank_archive a
group by a.lens_id, year(a.date_saved), month(a.date_saved);

答案 2 :(得分:0)

这是因为您的分组依据下有多个“ date_saved”记录。您可以将这些“ date_saved”记录转换为数组并输出。

答案 3 :(得分:-1)

我也遇到了同样的问题。如果您尝试使用beeline执行查询,请以小写形式编写查询。像这样:

select column_name(s)
from table_name
where condition
group by column_name(s).

用小写字写它为我工作尝试它我认为它会起作用。