AWS Glue Studio中PySpark字符串列转日期返回Null问题排查
问题分析与解决方案
你的问题核心是日期格式字符串不匹配,导致to_timestamp无法正确解析,返回Null。原格式字符串MM/dd/yyyy HH:MM:SS存在三个关键错误:
MM是月份的格式符,分钟应该用mm;SS是毫秒格式符,秒应该用ss- 未包含12小时制的AM/PM标识,需要添加
a - 你的日期中月份、日期、小时、分钟都是单数字(如
7、1、12、0),应该用M/d/h/m(支持单/双数字),而非MM/dd/HH(要求双数字)
修正后的自定义转换代码
MyTransform (glueContext, dfc) -> DynamicFrameCollection: from pyspark.sql.functions import col, to_timestamp df = dfc.select(list(dfc.keys())[0]).toDF() # 使用匹配目标格式的字符串:M/d/yyyy h:m:s a df = df.withColumn('Date', to_timestamp(col("Date"), 'M/d/yyyy h:m:s a')) df_res = DynamicFrame.fromDF(df, glueContext, "df") return(DynamicFrameCollection({"CustomTransform0": df_res}, glueContext))
格式符说明
M:月份(1-12,支持单/双数字)d:日期(1-31,支持单/双数字)h:12小时制的小时(1-12,支持单/双数字)m:分钟(0-59,支持单/双数字)s:秒(0-59,支持单/双数字)a:AM/PM标识
内容的提问来源于stack exchange,提问作者Maxxmilo
相关产品推荐
相关产品推荐

