利用窗口函數來過濾數據,我有以下數據:如何火花
rowid uid time code
1 1 5 a
2 1 6 b
3 1 7 c
4 2 8 a
5 2 9 c
6 2 9 c
7 2 10 c
8 2 11 a
9 2 12 c
現在我想篩選這樣的數據,我可以刪除這些行6,7爲特定UID我想在代碼僅保存一行與值「C」
所以預期的數據應該是:
rowid uid time code
1 1 5 a
2 1 6 b
3 1 7 c
4 2 8 a
5 2 9 c
8 2 11 a
9 2 12 c
我使用的窗函數是這樣的:
val window = Window.partitionBy("uid").orderBy("time")
val change = ((lag("code", 1).over(window) <=> "c")).cast("int")
這將幫助我們識別代碼爲'c'的每一行。我可以延長這個過濾掉行,以獲得預期的數據
你能澄清你的要求嗎?對於每個UID,您是否只想爲每個代碼保留一行,或者僅針對代碼「c」,您需要執行此操作? – mattinbits