我在Azure数据工厂中配置管道时遇到了问题。
我需要每天上传过去2年的数据,我的意思是2016年和2017年直到今天。我设置了一个管道,其WindowStart日期为2016/01/01,WindowEnd日期为2018/01/01,输出配置为Availability-> Frequency as Months:12。这将生成2个切片,一个用于2016年,一个用于2017年。
2016年的切片成功运行,但2017年的切片始终处于“待执行”状态,我的猜测是2017年尚未完成,它不会运行。
即使WindowEnd是将来还有办法强制它运行吗?
我已经尝试按月创建一些连锁活动,然后对它们进行分组,但我的测试都没有给出我需要的东西。
我觉得问题并不罕见,因为即使您想每月进行一次,也不会上传本月。问题来自于WindowStart必须与SliceStart匹配,而WindowEnd必须与SliceEnd匹配。
我错过了什么吗?有什么建议吗?
答案 0 :(得分:0)
您需要将管道和数据集可用性样式设置为" StartOfInterval",如下所示:
"availability": {
"frequency": "Month",
"interval": 12,
"style": "StartOfInterval"
}
答案 1 :(得分:0)
部署管道时,将创建所有切片。但默认情况下,只有在到达切片结束时才会安排它们。所以你的2017年片段只有在结束时才会运行。
您可以指定“style”:“StartOfInterval”来更改行为。
通过设计切片来处理离散的非重叠时间段。通常,如果您每天处理数据集,则每天都会处理前一个数据,因此每个切片都会涵盖可以累积的特定日期。
如果您希望每天执行它,则需要将源的可用性设置为Day:1
根据您的来源,您可以使用WndowStart参数来过滤源,但仅使用年份部分。
例如,如果数据源是SQL数据库并且您使用存储过程选择要提取的数据,则可以使用此数据仅将年份传递给存储过程。知道这将是当天的一年。您可以在proc中使用它来过滤与当前和去年相对应的记录。
"typeProperties": {
"storedProcedureName": "dbo.your_stored_proc",
"storedProcedureParameters": {
"year": "$$Text.Format('{0:yyyy}', SliceStart)",
}
这有意义吗?
我建议阅读这篇文章,了解有关ADF日程安排的更多信息: