问题描述
我有一个属性数据集,我正在尝试按属性计数对每个细分进行排名。然后,我想将具有大多数属性的段分配为管理这些属性的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 (将#修改为@)