执行了最后一次管道的数据工厂V1系统变量



我有一个管道,每天将SQLDB表中的新更新数据提取到数据湖商店中的.TSV文件中。

该数据将在稍后将用于附加/更新到现有表。

仅选择SQLDB的新更新行,我使用sqlreaderquery从一个带有Where子句的表中选择(where day nery nate day,c.updatedon,getdate(getDate())= 1")我只选择在执行管道前一天更新已更新的行(c.updatedon)。

问题是:想象一下,管道被暂停1周进行维护。然后,当我恢复管道时,它只会在上一周的最后一天中检索添加的行...

有什么办法可以使用一个系统变量,该变量指示上一次管道运行?

因此,我可以在系统变量的Whater子句中替换GetDate(),例如:

何处(日,c.updatedon,dateofpipelinelastexecution)< 0

谢谢

每次活动都相对于特定时间窗口运行时,您应该使用slicestart并在sql查询中使用切片变量来提取该窗口的数据。请参阅https://learn.microsoft.com/en-us/azure/data-factory/v1/data-factory-scheduling-and-endecution

https://learn.microsoft.com/en-us/azure/data-factory/v1/data-factory-functions-variables-variables#data-factory-system-system-variables

正如David所说,您应该使用slicestart和切片变量,以便每个切片都可以为您提供每天所需的信息,无论其执行什么一天。对于您给出的示例,如果您停止管道1周,然后恢复该管道,管道将复制7片与每天相对应的片。

您的Where子句应该看起来像这样:

$$Text.Format( 'SELECT ... WHERE DATEDIFF(day,c.UpdatedOn, \'{0:yyyyMMdd-HH}\'')=1, SliceEnd)

最新更新