【发布时间】:2019-02-12 06:28:14
【问题描述】:
假设我有以下由 pyspark 创建的数据框
id date deleted
1 2019-02-07 true
1 2019-02-04 false
2 2019-02-01 true
3 2019-02-08 false
3 2019-02-06 true
我想从最早的日期到现在(比如 2019-02-09)每天重新索引这个表,最早的日期是基于每个 id,例如,对于 id 1,最早的日期是 2019- 02-04,对于id 3,最早的日期是2019-02-06。而预期的结果是:
id date deleted
1 2019-02-04 false
1 2019-02-05 null
1 2019-02-06 null
1 2019-02-07 true
1 2019-02-08 null
1 2019-02-09 null
2 2019-02-01 true
2 2019-02-02 null
...
2 2019-02-09 null
3 2019-02-06 true
3 2019-02-07 null
3 2019-02-08 false
3 2019-02-09 null
我知道如何根据所有 id(即 2019-02-01)来确定最早的日期,然后构建一个数据框,其中包含从 2019-02-01 到 2019-02-09 的所有日期id(交叉连接),然后左连接原始数据框。这种方法的问题是,如果有一个日期,比如 1980-01-01,那么 reindex 会为所有 id 填充从 1980-01-01 到现在的所有数据,这没有意义,并且会影响性能此数据帧上的以下 ETL。
根据每个分区求最早的日期,没找到好办法。
【问题讨论】:
标签: python pyspark apache-spark-sql pyspark-sql