2017-07-19 10 views
1

私は、クラウドストレージのデータよりもスパークのインスタンスで次のような顧客データを持つログテーブルを持っています。私は彼らの二つの連続のentires以上3 任意の顧客は、私が同じテーブルに参加を実行しようとしました距離を移動したかどうかを確認したい スパークSpark SQLの2つの行の間の列値の差を計算します

上のapacheツェッペリンを使用して同じことを照会する
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 

をしようとしています顧客IDで上記の条件を以下のようなwhere節に入れますが、それは助けになりませんでした。私は、得意先に参加すると思う間違っていると私はあなたがこれを行うにはlagを使用することができた結果

Select t1.customerID, t1.timestamp 
from sometable 
inner join sometable t2 on t2.customerID = t1.customerID 
where t2.timestamp-t1.timestamp < .02 and t2.distance - t1.distance > 3 

答えて

2

のセット全体を取得しています。

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 
関連する問題