首页 > 解决方案 > ADF Tumbling 窗口触发器 - 自依赖

问题描述

我创建了一个滚动窗口触发器,其重复周期为 1 小时,并将其附加到管道上。每当管道运行时,我想处理前 2 小时,之后我想处理当前小时。

例如:如果假设管道在该给定运行中处理上午 10 点到上午 11 点之间的记录,我希望也处理上午 8 点到上午 10 点的记录,之后我希望处理当前窗口上午 10 点到上午 11 点。同样,当上午 11 点到下午 12 点窗口开始时,我希望在处理上午 11 点到下午 12 点之前处理上午 9 点到 11 点。

为了实现这个功能,我创建了一个自依赖,偏移量为 -0.02:00:00,窗口大小为 0.02:00:00。

但是当管道被触发时,它会从以前的运行中寻找以前的依赖窗口(上午 8 点到上午 10 点),并且只有上午 10 点到上午 11 点的记录得到处理。

但我的要求是在该特定运行中甚至处理上午 8 点到上午 10 点的记录以及上午 10 点到上午 11 点的记录。

自依赖翻滚窗口的功能是否仅限于检查以前的运行但不处理这些记录?还是我错过了什么?如何通过翻转窗口触发实现上述场景?是否可以从@trigger().outputs.windowStartTime 中减去 2 小时?

下面是触发器的截图。

TumblingWindowWithSelfDependency

任何帮助表示赞赏。谢谢!

标签: azureazure-data-factory

解决方案


​在管道上添加触发器时,您应该将触发器参数传递给管道参数,您的管道应该有两个参数,如 startTime 和 endTime 以从触发器参数中获取值

翻窗触发系统参数:

trigger().outputs.windowStartTime--> 10AM - 2hrs == 8AM// 它将处理上午 8 点到上午 10 点的记录,并将处理上午 10 点到上午 11 点之间的记录

trigger().outputs.windowEndTime---> 11AM - 2// 这里不需要-2小时

startTime --> 触发开始时间 - 2 endTime --> 触发结束时间

无需查看偏移量或依赖项。

要达到 -2 小时使用addhours()功能:addHours()


推荐阅读