You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark中将周起始设为周一 调整dayofweek返回值的实现问题

实现方案

原生dayofweek函数的返回规则为周日对应1、周一对应2、周六对应7,只需对返回结果做简单偏移计算,即可实现周一为起始日的计数规则:周日返回7,周一返回1,其余日期按顺序递增。

完整示例代码

from pyspark.sql import SparkSession, functions as F
spark = SparkSession.builder.getOrCreate()

df = spark.createDataFrame([('2021-02-07',),('2021-02-08',)], ['date']) \
    .select(
        F.col('date').cast('date'),
        F.date_format('date', 'EEEE').alias('weekday'),
        # 核心计算逻辑
        F.when(F.dayofweek('date') == 1, 7).otherwise(F.dayofweek('date') - 1).alias('weekday_number')
    )
df.show()

运行输出

+----------+-------+--------------+
|      date|weekday|weekday_number|
+----------+-------+--------------+
|2021-02-07| Sunday|             7|
|2021-02-08| Monday|             1|
+----------+-------+--------------+

你也可以使用取模运算实现相同效果,写法更简洁:

(F.dayofweek('date') + 5) % 7 + 1

内容的提问来源于stack exchange,提问作者ZygD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:45:02