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

Azure Data Factory REST源数据流中日期时间值全为Null的问题求助

问题描述

我在Azure Data Factory(ADF)数据流里用预定义的REST数据集当数据源,发起GET请求后,所有日期时间值全显示成Null。但用curl、Postman这些工具调用同一个接口时,日期值是正常返回的,示例格式如下:

"stats": {
    "ticket_id": 100000549322,
    "resolved_at": null,
    "created_at": "2023-01-04T19:09:19Z",
    "updated_at": "2023-01-04T19:09:22Z"
}

之前查到过类似问题,说是ADF的转换逻辑导致的,建议在转换前拦截值做自定义处理,但我在ADF里看到请求返回的值已经是Null了,不知道该怎么提前拦截。希望能找到不用在ADF之外做中间处理的解决办法。

解决方案

1. 检查REST数据集的架构定义

打开你的REST数据集,看看架构里的日期字段(比如created_at、updated_at)类型是不是被错设成了非日期类型。如果ADF自动推断的架构把日期识别成字符串或者其他类型,后续转换很可能会把值置为Null。手动把这些字段的类型改成datetime,格式指定为yyyy-MM-dd'T'HH:mm:ss'Z',匹配接口返回的ISO8601格式。

2. 调整数据流源的类型转换设置

在数据流的源组件里,进入「类型转换」选项卡:

  • 关掉「自动类型转换」,改成手动指定字段类型;
  • 给日期字段明确设置类型为datetime,格式填yyyy-MM-dd'T'HH:mm:ss'Z';
  • 开启「保留原始值」,确保ADF不会在读取阶段就把不符合默认推断规则的日期值转成Null。

3. 用派生列转换强制解析日期值

要是上面两步还没解决,就在源组件后面立刻加一个「派生列」转换,直接从原始JSON字符串里提取日期值手动解析:

  • 对每个日期字段,用类似下面的表达式解析:
    toDateTime(stats.created_at, 'yyyy-MM-dd\'T\'HH:mm:ss\'Z\'')
    
    这样直接引用原始JSON里的字段值,绕开ADF的自动转换环节,保证能正确读取原始字符串并转成日期类型。

4. 检查REST源的分页和响应处理设置

如果接口返回的是分页数据,确认ADF的分页设置有没有正确处理所有响应内容,别因为分页解析错误导致日期字段丢失。另外在源组件的「设置」选项卡,检查「响应格式」是不是设成了JSON,「根路径」有没有正确指向包含日期字段的层级(比如示例里的stats节点)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:10:27