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

Azure Data Factory复制活动动态API请求体配置求助

解决Azure Data Factory复制活动POST请求动态日期参数问题

问题根源

你遇到的问题是动态表达式在请求体中的写法不符合ADF规则,或是存在日期计算、格式拼接错误。硬编码可正常运行说明API本身无问题,核心是修正动态内容的构建方式。

正确的动态表达式与请求体构建

ADF中在JSON请求体里使用动态内容时,需用@开头的表达式,且要保证拼接后的JSON格式合法。以下是两种可行配置方式:

方式1:直接在REST源请求体中拼接

在复制活动的REST源 -> 请求体中,直接输入以下动态表达式:

@concat('[',
    '{',
        '"start_date": "', formatdatetime(addDays(utcnow(), -1), 'yyyy-MM-dd'), '",',
        '"start_time": "', formatdatetime(addHours(utcnow(), -24), 'HH:mm:ss'), '",',
        '"end_date": "', formatdatetime(utcnow(), 'yyyy-MM-dd'), '",',
        '"end_time": "', formatdatetime(utcnow(), 'HH:mm:ss'), '"',
    '}',
']')
  • addDays(utcnow(), -1):计算当前UTC日期减1天
  • addHours(utcnow(), -24):计算当前UTC时间减24小时(等效于前一天的当前时间)
  • formatdatetime:将时间格式化为API要求的yyyy-MM-dd(日期)和HH:mm:ss(24小时制时间)格式

方式2:通过变量构建请求体

  1. 在ADF管道中创建字符串类型变量(例如命名为DynamicRequestBody)
  2. 将变量的默认值设置为上述@concat表达式
  3. 在复制活动的REST源请求体中引用变量:@variables('DynamicRequestBody')

常见错误排查

  • 不要给表达式额外添加{@}包裹,ADF中动态内容直接以@开头
  • 确认日期格式与API要求完全匹配:比如API用24小时制时间就必须用HH,不能用hh(12小时制)
  • 检查拼接后的JSON合法性:可先在ADF的「测试」功能中验证变量或表达式的输出,确保是符合要求的数组格式
  • 如果需要使用本地时间而非UTC时间,将utcnow()替换为convertTimeZone(utcnow(), 'UTC', '你的时区ID'),例如'China Standard Time'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:30:43