我对spark和scala编程非常陌生,我有一个问题,希望一些聪明人能帮我解决。我有一个名为users的表,表中有4列:status、userid、name、date
行是:
status user_id name date
active 1 Peter 2020-01-01
active 2 John 2020-01-01
active 3 Alex 2020-01-01
inactive 1 Peter 2020-02-01
inactive 2 John 2020-01-01
我只需要选择活动用户。两个用户被停用。同一天只有一个被灭活了。
我的目标是过滤非活动状态的行(我可以这样做),并在非活动行与活动行的列匹配时过滤非活动用户。彼得在不同的日期被灭活了,他没有被过滤。预期结果是:
1 Peter 2020-01-01
3 Alex 2020-01-01
已筛选非活动状态的行。john被禁用了,所以他的行也被过滤了。
我最接近的方法是筛选处于非活动状态的用户:
val users = spark.table("db.users")
.filter(col("status").not Equal("Inactive"))
.select("user_id", "name", "date")
如何解决这个问题有什么想法或建议吗?谢谢!
1条答案
按热度按时间yvgpqqbh1#
首先用groupby检查每个用户和日期的非活动项,并将此结果加入原始df。