ADF每年切片,无法从当前年份获取数据

时间:2017-09-06 16:03:58

标签: azure azure-data-factory

我在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匹配。

我错过了什么吗?有什么建议吗?

2 个答案:

答案 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日程安排的更多信息:

https://blogs.msdn.microsoft.com/ukdataplatform/2016/05/03/demystifying-activity-scheduling-with-azure-data-factory/