如何避免XLSX经SFTP同步到Synapse Parquet时日期格式异常
解决日期解析错误的方案
问题根源
你当前代码错误使用了yyyy-MM-dd格式去解析原本为MM/DD/YYYY的日期字符串,直接导致日、月位置颠倒,最终生成错误的日期值。
方案一:在Azure Databricks中修正日期解析
直接修改Databricks代码,用正确的格式字符串MM/dd/yyyy解析原日期值:
from pyspark.sql import functions as f # 替换为正确的MM/DD/YYYY格式定义 datefrmt = "MM/dd/yyyy" # 重新解析日期列 vendor_assoc = vendor_assoc.withColumn('Vendor_Birthday', f.to_date('Vendor_Birthday', format=datefrmt))
如果Parquet中的Vendor_Birthday已经是错误的日期类型(而非字符串),需要先将错误日期转成对应格式的字符串,再重新解析:
from pyspark.sql import functions as f # 先把错误日期转成MM/dd/yyyy格式的字符串,再重新解析为正确日期 vendor_assoc = vendor_assoc.withColumn('Vendor_Birthday', f.to_date(f.date_format('Vendor_Birthday', 'MM/dd/yyyy'), 'MM/dd/yyyy') )
方案二:在Synapse导入阶段提前处理
如果数据先导入Synapse再生成Parquet,可以在Synapse的COPY活动中指定dateFormat为MM/dd/yyyy,确保导入时就正确识别日期格式,避免后续Databricks处理出错。
关于SFTP的说明
SFTP仅作为文件传输工具,不会修改文件内容或解析数据格式,无法直接修正日期问题。所有格式修正操作都需要在数据导入(Synapse)或数据处理(Databricks)阶段完成。
内容的提问来源于stack exchange,提问作者kimchigirl
相关产品推荐
相关产品推荐

