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

Azure Data Factory:如何在HTTP数据集Relative URI中用触发时间作参数?

实现Relative URI中动态生成"since time"(epoch时间)的方案

这问题我之前帮团队配置过类似的,其实完全可以用数据流/数据工厂的动态表达式来自动化搞定,不用手动改时间参数。核心就是利用内置的时间函数,精准计算出触发时间前一天的epoch时间,再注入到URI里。

步骤1:锁定触发时间的基准值

因为你的管道是每日凌晨2点固定调度触发,直接用管道的内置调度时间变量就最准确:@trigger().scheduledTime,这个值就是每次触发时的凌晨2点时间戳,不会因为管道延迟执行出现偏差。

步骤2:编写动态计算epoch时间的表达式

根据REST接口需要的是秒级还是毫秒级epoch,用下面对应的表达式:

情况1:接口需要秒级epoch时间

@string(sub(ticks(addDays(trigger().scheduledTime, -1)), ticks('1970-01-01T00:00:00Z'))/10000000)

简单拆解逻辑:

  • addDays(trigger().scheduledTime, -1):把凌晨2点的调度时间往前推1天,得到前一天的凌晨2点
  • ticks(...):将时间转换为100纳秒单位的计数(系统底层时间格式)
  • 减去1970-01-01的ticks值,再除以10000000转成秒级时间戳,最后用string()转成字符串方便拼接

情况2:接口需要毫秒级epoch时间

把最后除以的数值改成10000即可:

@string(sub(ticks(addDays(trigger().scheduledTime, -1)), ticks('1970-01-01T00:00:00Z'))/10000)

步骤3:注入到Relative URI参数中

在HTTP数据集的Relative URI配置里,直接把表达式嵌入到参数位置。比如你的URI原本是/api/records?since={epoch_time},现在写成:

/api/records?since=@{string(sub(ticks(addDays(trigger().scheduledTime, -1)), ticks('1970-01-01T00:00:00Z'))/10000000)}

额外验证小技巧

你可以手动触发一次管道,查看运行日志里的URI参数,确认生成的epoch时间是否对应前一天的凌晨2点。比如今天2024-05-20凌晨2点触发,生成的时间戳应该对应2024-05-19T02:00:00Z的epoch值,完全符合你要的“获取该时间点之后所有响应”的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:58:16