PySpark使用sequence函数生成日期序列如何设置自定义日期间隔
PySpark sequence() 函数生成周间隔日期序列解决方案
当sequence()函数的起止参数为日期类型时,step参数需要传入时间间隔类型的取值,你要生成1周间隔的序列,直接使用周间隔表达式即可,有两种常用写法:
- 使用间隔字面量,需要配合
expr()函数解析 - 使用
make_interval()函数构造间隔,更适合参数化场景
修改后的可运行代码如下:
from pyspark.sql.functions import sequence, to_date, lit, explode, expr, make_interval from datetime import date # 写法1:使用间隔字面量 df = (spark.createDataFrame([{'date':1}]) .select(explode(sequence( to_date(lit('2021-01-01')), to_date(lit(date.today())), step = expr('interval 1 week') )).alias('calendar_date'))) # 写法2:使用make_interval构造,不需要expr包裹 df = (spark.createDataFrame([{'date':1}]) .select(explode(sequence( to_date(lit('2021-01-01')), to_date(lit(date.today())), step = make_interval(weeks=1) )).alias('calendar_date'))) df.show()
补充说明其他间隔的构造方式:
- 天间隔:
expr('interval N day')或make_interval(days=N) - 月间隔:
expr('interval N month')或make_interval(months=N) - 年间隔:
expr('interval N year')或make_interval(years=N)
内容的提问来源于stack exchange,提问作者dMb
相关产品推荐
相关产品推荐

