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

PySpark查询Parquet文件时DATEPART函数失效问题求助

在PySpark SQL中实现POS_TRANSACTION_HOUR字段生成

PySpark SQL没有DATEPART函数,你可以用以下几种方式实现和原SQL Server语句相同的效果:

方法1:使用DATE_FORMAT(最简洁)

直接通过格式化函数生成目标格式:

SELECT
    DATE_FORMAT(END_DATETIME, 'HH00') AS POS_TRANSACTION_HOUR
FROM
    TRANS_Table

DATE_FORMAT的'HH'参数会返回两位24小时制的小时数(00-23),拼接00后直接得到0000、2300这类结果。

方法2:模拟原SQL逻辑

替换DATEPART(HOUR, ...)为PySpark的HOUR()函数,保留原有的字符串拼接逻辑:

SELECT
    RIGHT(CONCAT('0', CAST(HOUR(END_DATETIME) AS STRING)), 2) || '00' AS POS_TRANSACTION_HOUR
FROM
    TRANS_Table

或者用LPAD简化补零操作:

SELECT
    LPAD(CAST(HOUR(END_DATETIME) AS STRING), 2, '0') || '00' AS POS_TRANSACTION_HOUR
FROM
    TRANS_Table

这两种方式都是先提取小时数,转成字符串后补前导零到两位,再拼接00,和原SQL Server逻辑完全一致。

内容的提问来源于stack exchange,提问作者Javier Guzmán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:47:38