计算Spark SQL中两行之间列值的差异

时间:2017-07-19 01:02:41

标签: sql apache-spark apache-zeppelin

我有一个日志表,在云存储数据的spark实例中有如下客户数据。我试图使用apache zeppelin over spark

查询相同内容
/Library/Java/JavaVirtualMachines

我想知道是否有任何顾客在连续两次入场时已经走了3个以上的距离 我尝试在客户ID的同一个表上进行连接,并将上述条件放在where子句中,如下所示,但这没有帮助;我认为customerID上的连接不正确,我得到了整套结果

CustomerID TimeStamp Distance
------------------------------
1           12.00        310
2           12.00        821
1           12.01        313
3           12.01        734
2           12.01        821
1           12.03        323
3           12.02        734
2           12.03        824

1 个答案:

答案 0 :(得分:2)

您可以使用lag执行此操作。

select customerID,timestamp
from (select customerID,timestamp
      ,distance-lag(distance,1,distance) over(partition by customerID order by timestamp) as diff_with_prev_dist
      from sometable 
     ) t
where diff_with_prev_dist > 3