利用窗口函数来过滤数据,我有以下数据:如何火花
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