配置单元:无法将窗口调用拆分为组无效的函数延迟

mbskvtky  于 2021-06-26  发布在  Hive
关注(0)|答案(0)|浏览(210)

我在 hive 里工作,
我有这样一个数据集:

client_id       date       nb_pts
        1     2016-06-01        1
        1     2016-06-02        3
        1     2016-06-03        4
        2     2016-06-01        2
        2     2016-06-02        3

我需要为每个客户机输出,当前nbu pts和以前nbu pts之间的差异。所以我的输出应该是:

client_id       date       nb_pts   nb_pts_per_row
        1     2016-06-01        1                1    (1-0)
        1     2016-06-02        3                2    (3-1)
        1     2016-06-03        4                1    (4-3)
        2     2016-06-01        2                2    (2-0)
        2     2016-06-02        3                1    (3-2)

我试过在hive中使用lag函数:

SELECT client_id, date, nb_pts, 
nb_pts - (LAG(nb_pts, 1, 0) OVER (PARTITION BY client_id ORDER BY date ROWS 1 PRECEDING)) as nb_pts_per_row
FROM MyTable

但是验证失败了。上面写着:
未能将窗口调用拆分为组。至少有一个组只能依赖于输入列。还要检查循环依赖关系。基本错误:函数lag需要左窗口帧边界((tok\u table\u or \u col nb\u pts),1,0)org.apache.hadoop.hive.ql.parse。windowingspec$windowspec@27a007cd 作为lag\u window\u 0是无界的。
编辑(解决方案):
因此它在没有行1的情况下工作:

SELECT client_id, date, nb_pts, 
nb_pts - (LAG(nb_pts, 1, 0) OVER (PARTITION BY client_id ORDER BY date)) as nb_pts_per_row
FROM MyTable

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题