考慮下表中HIVE:需要過濾對具有HIVE一個ID多個記錄的記錄數據的方法
在這裏,我需要找出家庭的獨特組合,車輛和客戶。 但條件是這樣。如果對於同一家庭和車輛有兩個不同的客戶角色司機和所有者,我必須考慮所有者。 但是,如果對於單個家庭和車輛,只有一個客戶,並且如果該客戶是DRIVER或OWNER,則我也必須考慮該記錄。 我需要對此進行HIVE查詢。
的結果應該是像下表:
誰能幫助我在這裏?
考慮下表中HIVE:需要過濾對具有HIVE一個ID多個記錄的記錄數據的方法
在這裏,我需要找出家庭的獨特組合,車輛和客戶。 但條件是這樣。如果對於同一家庭和車輛有兩個不同的客戶角色司機和所有者,我必須考慮所有者。 但是,如果對於單個家庭和車輛,只有一個客戶,並且如果該客戶是DRIVER或OWNER,則我也必須考慮該記錄。 我需要對此進行HIVE查詢。
的結果應該是像下表:
誰能幫助我在這裏?
這可能是有用的,試試這個: -
select Household,Vehicle,Customer,Cust_role from (select *,row_number()
over (partition by Household,Vehicle order by Cust_role desc) rn from test_table) tableouter where rn=1;
輸出: -
I 1 A OWNER
II 2 C DRIVER
III 3 D OWNER
IV 4 E OWNER
基本上你要找的是一個Top-N窗口函數查詢,其中N爲1。你可以寫一個帶RANK函數的Hive查詢和一個額外的「LIMIT 1」子句來實現你想要的。請參閱Rank function in Hive開始。
你可以在這裏找到一個簡單的例子 - Hive - top n records within a group
非常感謝朋友! – Vaishak
如果您認爲此答案已解決或正確解答了您的問題。請點擊答案旁邊的複選標記,將其標記爲已接受。請參閱:[如何接受答案工作](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)?瞭解更多信息 – syadav