当我尝试使用 Partition over Hive 时,

Posted

技术标签:

【中文标题】当我尝试使用 Partition over Hive 时,【英文标题】:While I try to use Partition over Hive, 【发布时间】:2013-09-27 01:05:54 【问题描述】:
SELECT
    prc.user_key,
    percentile(P.price, 0.5) OVER (PARTITION BY P.user_key) as median_price       
    FROM
    (
     SELECT 
     vfc.user_key,
     vfc.order_id,
     MIN(vddo.cc)  price
     FROM
     td_b.mv_a vfc
     JOIN
     td_b.dim_deal_option vddo
     ON vfc.d_key = vddo.d_key
     WHERE
     vfc.action = 'sale'
     GROUP BY  vfc.user_key, vfc.order_id
    ) prc limit 100;

给出错误“FAILED: Parse Error: line 4:13 mismatched input '(' Expecting FROM near 'OVER' in from 子句” 在蜂巢。当我删除百分位数和分区查询工作正常,知道吗?我试过count()而不是百分位数,仍然是同样的错误。

【问题讨论】:

你确定你有足够新的版本吗? 【参考方案1】:

百分位/分区行将子查询别名为“P”(P.price 和 P.user_key),但子查询为“prc”。有时错误的别名会抛出该错误

【讨论】:

【参考方案2】:

P.Price 和 P.user_key 不存在。

【讨论】:

以上是关于当我尝试使用 Partition over Hive 时,的主要内容,如果未能解决你的问题,请参考以下文章

在 OVER(PARTITION BY) 中使用 CTE

如何在 over 函数中使用 partition by 和 order by?

使用 sum() over(partition by) 逐一计算行中的值

Row_Number() OVER PARTITION BY 基于列中的值

Oracle SQL:使用 SUM OVER PARTITION 更新表

SQL Server 10.50 OVER PARTITION 无法识别