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:通过变量构建请求体
- 在ADF管道中创建字符串类型变量(例如命名为
DynamicRequestBody) - 将变量的默认值设置为上述
@concat表达式 - 在复制活动的REST源请求体中引用变量:
@variables('DynamicRequestBody')
常见错误排查
- 不要给表达式额外添加
{@}包裹,ADF中动态内容直接以@开头 - 确认日期格式与API要求完全匹配:比如API用24小时制时间就必须用
HH,不能用hh(12小时制) - 检查拼接后的JSON合法性:可先在ADF的「测试」功能中验证变量或表达式的输出,确保是符合要求的数组格式
- 如果需要使用本地时间而非UTC时间,将
utcnow()替换为convertTimeZone(utcnow(), 'UTC', '你的时区ID'),例如'China Standard Time'
内容的提问来源于stack exchange,提问作者Sipun
相关产品推荐
相关产品推荐

