PySpark-基于开始/结束日期的行数

时间:2018-11-01 18:41:21

标签: python apache-spark pyspark

说我有一个数据框,如下所示,它代表订阅了特定服务的帐户,订阅开始的日期和订阅结束的日期(如果尚未结束,则为null)。

ACCOUNT_ID   START_DATE   END_DATE
1            2018-05-01   2018-09-07
2            2018-07-20   2018-08-10
3            2018-06-10   null

我的目标是生成一个下表,该表具有每月该月第一天订阅该服务的人数。

DATE        SUBSCRIBER_COUNT
2018-01-01    0
2018-02-01    0
2018-03-01    0
2018-04-01    0
2018-05-01    1
2018-06-01    2
2018-07-01    3
2018-08-01    3
2018-09-01    2
2018-10-01    1
2018-11-01    1

我尝试过的方法:

  • 以某种方式爆炸数据帧,以便对于每个帐户,我都有多行,每天该帐户已成为订户。然后将其过滤到我感兴趣的日期(即每个月的第一天),然后按天分组并计算帐户。
    • 不知道如何在不使用讨厌的UDF的情况下生成此类爆炸数据集。
  • 生成我感兴趣的日子的列表;通过执行subscribed_yyyymmdd,将每个布尔列添加到名为start < day && day < end的原始数据帧中。然后boolcount这些列以获取订阅者计数。
    • 必须添加新列很笨拙,而且如果我想每天而不是每月执行一次,则扩展性也不太好

0 个答案:

没有答案