如果我有一个每天都以快照的形式跟踪值的表,我怎么能只选择每个id至少有一个值更改的行,当然不包括日期。每个id的第一行也应该包含在结果中。
例如,使用此表:
id phone_number email date
1 12345 a@gmail.com 2020-01-01
1 12345 a@gmail.com 2020-01-02
1 23456 a@gmail.com 2020-01-03
1 34567 a@gmail.com 2020-01-04
1 34567 a@gmail.com 2020-01-05
1 45678 a@gmail.com 2020-01-06
1 45678 a@gmail.com 2020-01-07
2 56789 b@gmail.com 2020-01-01
2 56789 b@gmail.com 2020-01-02
2 56789 c@gmail.com 2020-01-03
2 67890 c@gmail.com 2020-01-04
2 67890 c@gmail.com 2020-01-05
3 78901 d@gmail.com 2020-01-01
3 78901 d@gmail.com 2020-01-02
3 78901 d@gmail.com 2020-01-03
将返回此结果:
id phone_number email date
1 12345 a@gmail.com 2020-01-01
1 23456 a@gmail.com 2020-01-03
1 34567 a@gmail.com 2020-01-04
1 45678 a@gmail.com 2020-01-06
2 56789 b@gmail.com 2020-01-01
2 56789 c@gmail.com 2020-01-03
2 67890 c@gmail.com 2020-01-04
3 78901 d@gmail.com 2020-01-01
3条答案
按热度按时间htrmnn0y1#
nvbavucw2#
我将其作为sql查询使用,我可以这样运行:
这很好用,现在我只想把它翻译成原生的pyspark代码。
toe950273#
iiuc,您需要使用带有行号()的窗口函数,并且只取第一个值-
在这里创建df
输出
逻辑在这里