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

PySpark SQL中dayofweek函数失效:如何获取周起止日期?

问题:PySpark SQL中dayofweek函数未被识别,无法获取周起止日期

我需要通过SQL查询获取一周的起止日期,尽管dayofweek属于pyspark.sql.functions中的函数,但在SQL语句里该函数未被识别,尝试拼接函数也无法解决问题。核心需求是基于周的起止范围处理时间戳,得到符合预期的聚合结果。使用的PySpark版本为3.1.1+amzn.0。

原代码

somedataset.registerTempTable("mytable")
spark.sql("SELECT DISTINCT max(col1) AS col1_edited, \
                           col2, col3, max(col4) AS col4_edited,\
                           min(MyTimestamp1) as MyTimestamp1_edited,\
                           date_sub(CAST(timestamp2 AS date), dayofweek-1) as week_start,\
                           date_sub(CAST(timestamp3 AS date), 7-dayofweek) as week_end,\
                           FROM mytabble \
                           GROUP BY col1_edited, col2, col3, col4, MyTimestamp1,\
                                    timestamp2,\
                                    timestamp3").registerTempTable("mineable")

预期输出

预期输出为按周起止范围聚合后的结果,包含周起始日期、周结束日期列,以及各字段的聚合值(如最大值、最小值等)。

解决方法

仅需修改SQL中计算周起止日期的两行代码(其余代码保持不变):

date_sub(CAST(timestamp2 AS date), dayofweek(timestamp2)-1) as week_start,
date_sub(CAST(timestamp3 AS date), 7-dayofweek(timestamp3)) as week_end,

原问题出在调用dayofweek时未传入具体的时间戳参数,SQL中的dayofweek函数必须指定要计算的日期/时间戳字段,传入参数后即可正常识别并计算出对应的星期数,进而得到正确的周起止日期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:43:13