Pyspark - 生成一个日期列,其中包含两个给定日期之间的所有天数,并将其添加到现有数据框中

hot*_*_02 3 python apache-spark apache-spark-sql pyspark

我对 pyspark 比较陌生。我想生成一个数据框列,其日期在两个给定日期(常量)之间,并将该列添加到现有数据框。有效的方法是什么?

我尝试了这个但没有成功:

df_add_column = df.withColumn("repeat", expr("split(repeat(',', diffDays), ',')")).select("*", posexplode("repeat").alias('DATE', "val")) .drop("repeat", "val", "diffDays").withColumn('DATE', expr("date_add('2018-01-01', 'DATE')"))
Run Code Online (Sandbox Code Playgroud)

bla*_*hop 5

您可以使用sequence函数生成日期然后分解。例子:

from pyspark.sql import functions as F

df = spark.createDataFrame([(1,)], ["id"])

df1 = df.withColumn(
    "date", 
    F.explode(F.expr("sequence(to_date('2021-02-01'), to_date('2021-02-08'), interval 1 day)"))
)

df1.show()

#+---+----------+
#| id|      date|
#+---+----------+
#|  1|2021-02-01|
#|  1|2021-02-02|
#|  1|2021-02-03|
#|  1|2021-02-04|
#|  1|2021-02-05|
#|  1|2021-02-06|
#|  1|2021-02-07|
#|  1|2021-02-08|
#+---+----------+
Run Code Online (Sandbox Code Playgroud)