hive lag函数-year over year change-to获取以前的值,即使没有当前值

swvgeqrz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(274)

我正在计算逐年变化,下面是Hive中的查询

select Name, 
    Year, 
    Month, 
    ID,
    value as Current, 
    LAG(value,1,0) OVER(PARTITION BY name,month,id ORDER BY year ASC) as Previous, 
    value - LAG(value,1,0) OVER(PARTITION BY name,month,id ORDER BY year ASC) as Change

当前结果

Name    Year    Month   ID  Current     Previous        Change
    A       2015    1       8320    944     0               944
    O       2015    1       8320    153     0               153
    O       2016    1       8320    133.92  153             -19.08
    B       2015    1       8320    572     0               572
    C       2016    1       8320    126     0               126

2016年有3起案件
名字o-有2016年和2015年的两个值,我得到了不同的值
名称c-仅在2016年有值,我将2015年的差值保持为0
名称a和b-只有2015年才有值,而不是2016年-所以我需要得到两个条目,a和b的更改分别为-944和-572。
我的预期结果是:

Name    Year    Month   ID  Current     Previous        Change
    A       2015    1       8320    944     0               944
    A       2016    1       8320    0       944             -944
    O       2015    1       8320    153     0               153
    O       2016    1       8320    133.92  153             -19.08
    B       2015    1       8320    572     0               572
    B       2016    1       8320    0       572             -572
    C       2016    1       8320    126     0               126

请指导我如何获取上一年的值,即使没有本年的值。提前感谢您的帮助。

暂无答案!

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

相关问题