我正在尝试在配置单元中使用窗口函数count distinct,结果出错。
使用的查询如下:
select user, dt, count(distinct dt) over(partition by user) as dates
FROM table
它抛出以下错误:
FAILED: SemanticException [Error 10025]: Line 1:123 Expression not in GROUP BY key 'user'
我想我使用的是hive语言手册中指定的语法
我到底做错了什么?
3条答案
按热度按时间0ve6wy6x1#
另一个解决方案是结合使用
size
以及collect_set
:ni65a41a2#
两种可能性,
您不能选择
user
以及dt
在查询中使用distinct
,删除user
以及dt
查询将正常工作。你不能使用
distinct
在这种情况下,如果删除distinct
在上面的查询中,这可以正常工作。如果你想取distinct和它的计数,你可以进行如下的子查询,select dates.distinct dt from (select dt, count(distinct dt) over(partition by user) as dates FROM table )
如果这有帮助,请告诉我。6rqinv9w3#
下面的解决方案将像count distinct一样工作。稠密秩函数将给出分区中不同c的秩。最高密秩数将是c的不同条目数。由于执行了两个窗口功能,没有安静是最好的执行方式,但对我来说,这是唯一的方式让它在Hive<2.1.0工作。