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

如何在Azure Data Factory数据流中生成Parquet兼容的时间戳格式?

解决Azure Data Factory数据流中Parquet时间戳保存精度与类型问题

问题核心

源时间戳格式为yyyy-MM-dd HH:mm:ss,使用toTimestamp(byName('datareceivedtimestamp'))转换后预览正常,但保存为Parquet后值异常;转成UNIX epoch的long类型又不符合Azure ML对timestamp/datatype类型的要求。

正确解决方案

1. 精准指定格式的时间戳转换

使用带格式参数的toTimestamp表达式,明确告知ADF源字符串的时间格式,避免自动解析误差:

toTimestamp(byName('datareceivedtimestamp'), 'yyyy-MM-dd HH:mm:ss')

如果源数据带时区(比如UTC),需额外指定时区参数确保转换精度:

toTimestamp(byName('datareceivedtimestamp'), 'yyyy-MM-dd HH:mm:ss', 'UTC')

转换后预览确认字段类型为timestamp,值为2023-05-08 12:33:00.000即可。

2. Parquet Sink的关键配置

在数据流的Parquet输出Sink中,需调整以下设置确保类型正确映射:

  • 若使用显式字段映射,手动将目标字段类型设置为timestamp;
  • 进入Advanced设置,找到Parquet timestamp format选项,根据需求选择Milliseconds(对应源数据到秒的精度,补全为毫秒);
  • 确保未开启可能干扰类型映射的特殊选项(如强制类型转换为数值类)。

问题原因说明

  • 无格式参数的toTimestamp依赖ADF自动解析,可能因源字符串的隐性格式差异导致解析错误,序列化到Parquet时生成异常数值;
  • 转成long类型的epoch虽然数值正确,但无法满足Azure ML对原生datetime/timestamp类型的识别要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:35:45