我需要一个Pipeline在一个月的Monthend周(周二、周三、周四和周五(触发。
Monthend定义为,"Last but one" Friday
或CCD_ 2。
例如,2021年6月,18号是Monthend(橙色,如图所示(日历图像
如果只是在Monthend,即日历月底的第二个星期五,这很容易。只需在Scheduled触发器中使用Occurrence为-2,day为Friday,并添加到要触发的管道中,
"schedule": {
"monthlyOccurrences": [
{
"day": "Friday",
"occurrence": -2
}
]
}
但我也需要在同一周的周二、周三和周四跑步,我觉得这很难,因为这些工作日可能是日历月底后的第二或第三个工作日。例如:2021年6月,如图所示,我还需要在15日(日历月底的第三个星期二(、16日(日历月末的第三次星期三(、17日(日历年末的第二个星期四(跑步。
你能告诉我这是否可以使用Azure数据工厂的触发器来实现吗?如果没有,还有其他实施方式吗?非常感谢。
单独的调度触发器无法实现该逻辑(截至2021-05-04(。最简单的解决方案是使用其他一些调度应用程序。
对于纯数据工厂解决方案,将触发器安排为所需日期可能发生的所有日期。然后修改管道以执行逻辑,以确定当前日期是否真的是所需日期之一。
实现细节和示例代码
逻辑:
- 查找一个月的最后一天(下个月的第一天减去1天(
- 减去一周,使你处于倒数第二周
- 循环[0,-1,-2,-3,-4,-5,-6]作为要添加到日期的天数。这会生成一周中每一天的日期
- 使用dayOfWeek函数将日期更改为一周中的哪一天
- 筛选以获取星期五日期
- 询问今天是否在星期五和星期五之间-3天