使用rank时无法将窗口调用分解为组

问题描述

我有一个属性数据集,我正在尝试按属性计数对每个细分进行排名。然后,我想将具有大多数属性的段分配为管理这些属性的xml_id的段。我已经尝试过了:

select
    yyyy_mm_dd,xml_id,ps_segment
from(
    select
        pspd.yyyy_mm_dd,xppd.xml_id,ps.ps_segment,count(pspd.property_id) as property_count.
        rank() over (partition by pspd.yyyy_mm_dd order by count(pspd.property_id) desc) rn 
    from(
        select
            yyyy_mm_dd,property_id
        from
            t1
    ) pspd
    left join(
        select
            yyyy_mm_dd,property_id,xml_id
        from
            t2
    ) xppd on xppd.property_id = pspd.property_id and xppd.yyyy_mm_dd = pspd.yyyy_mm_dd
    inner join
        t3 ps on ps.property_id = property_id
    group by
        1,2,3
) x
where
    rn = 1

以上内容引发以下错误:

编译语句时出错:失败:SemanticException无法将窗口调用分解为组。至少1组必须仅取决于输入列。还要检查循环依赖性。基本错误:org.apache.hadoop.hive.ql.parse.SemanticException:第5:50行表达式不在GROUP BY键'property_count'

因此,xml_id本质上以ps_segment结尾,而{{1}}具有最高的属性计数。我在查询中做错了什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)