Hive跟踪列中的更改

时间:2019-03-12 10:17:19

标签: sql hive hiveql impala

嗨,我一直在尝试监视配置单元中某列与原始值的差异。例如:

column 1  tracking_column
6          0
6          0
6          0
5          -1
6          0
6          0
7          1
8          2

我一直在使用lag函数,但是这似乎只允许我跟踪从一行到下一行的更改,并且无法保持运行计数。因此,当数字从6上升到7,然后上升到8。滞后或超前,我认为在这种情况下不起作用。

任何提示都值得赞赏。干杯

1 个答案:

答案 0 :(得分:1)

我认为您想要first_value()

select col1, (first_value(col1) over (order by ?) - col1) as diff
from t;

?是指定表顺序的列的占位符。

您也可以使用cross join

select t.col1, (t.col1 - t1.col1) as diff
from t cross join
     (select t.*
      from t
      order by ?
      limit 1
     ) t1;