2013-01-14 121 views
1

加入記錄我有一個類型的記錄:Apache的豬:通過移動

time | url 
========== 
34 google.com 
42 cnn.com 
54 yahoo.com 
64 fb.com 

我想另一列添加到這些記錄time_diff基本上採取與以前的記錄當前記錄的時間差。輸出應爲:

time | url | time_diff 
====================== 
34 google.com -- <can drop this row> 
42 cnn.com 08 
54 yahoo.com 12 
64 fb.com  10 

如果我能以某種方式添加另一列(同time)移位time由一個,使得42與34對齊,54與42對齊等,然後我可以採取這些列之間的差異來計算time_diff列。

我可以投射time列到一個新的變量T,如果我能在原始數據下降的第一條記錄,然後我可以T加入它,以獲得期望的結果。

我很感激任何幫助。謝謝!例如,

+0

是否有可能,你將不得不與同一時間多行?如果是這樣,什麼決定他們的順序? –

+0

時間是非遞減順序(是的,多行可以有相同的時間)。 – sachin2182

回答

3

參見this question。你需要把你的元組放到一個包中(在你的情況下使用GROUP ... ALL),然後在嵌套的FOREACH,ORDER中調用UDF來對它們進行排序。在你擁有這個等級後,你可以將這個包重新映射到一組元組中,並且你將有三個字段:timeurlrank。一旦你有了這個,創建第​​四列是rank-1,在後面兩列做一個自聯接,並且你將得到你需要計算的time_diff

由於多個記錄可以具有相同的time,所以在url上排序也是一個好主意,這樣每次都可以保證獲得相同的結果。