我在配置单元表中存储了计数器数据。计数器随时间递增,有时会重置为零。
我想计算连续行之间的差异,但如果计数器重置,则差异为负。示例数据和预期输出如下:
data: 1, 3, 6, 7, 1, 4
difference: 2, 3, 1, -6, 3, NA
expected: 2, 3, 1, 1, 3, NA
通常这种操作是通过计算滞后并从数据中减去它来完成的。在负差的情况下,我们应该只放lag的值,这里是函数的一个例子,它在r/dplyr中这样做:
diff_counter <-function(x){
# count difference between measurements
lag <- lag(x)
dx <- x - lag
reset_idx <- dx < 0 & !is.na(dx)
dx[reset_idx] = lag[reset_idx]
return(dx)
}
我能在Hive里做类似的事情吗?
向pawe问好ł
1条答案
按热度按时间vhmi4jdf1#
假设
t
是datetime列,计数器按该顺序递增,可以使用CASE
用LEAD
像这样运作。