我在Azure数据工厂服务中创建了一些管道,将数据从SQL表移动到Azure表。但他们从不开始跑步。相反,即使在Azure Portal中单击run
按钮后,源数据集仍然是pending validation
。我已经检查了external
属性,都设置为true
。我想知道是否还有其他可能的原因。
这是我的表格来源
{
"name": "TableSrc",
"properties": {
"published": false,
"type": "AzureSqlTable",
"linkedServiceName": "LinkedService-AzureSql",
"typeProperties": {
"tableName": "myTable"
},
"availability": {
"frequency": "Month",
"interval": 1
},
"external": true,
"policy": {}
}
}
我遇到了这个试图建立一个管道每天运行,并认为我可以使用"anchorDateTime"可用性属性,我能够做到这一点,但你必须将数据集中"availability"
部分的"frequency"
属性设置为你想要指定的最低粒度级别。也就是说,如果您希望在UTC每天下午6:30运行,那么您的数据集需要看起来像这样(因为您在分钟级别指定时间):
"availability": {
"frequency": "Minute",
"interval": 1440,
"anchorDateTime": "2016-01-27T18:30:00Z"
}
和管道的"scheduler"
部分需要类似于:
"scheduler": {
"frequency": "Minute",
"interval": 1440,
"anchorDateTime": "2016-01-27T18:30:00Z"
}
这将每1440分钟(即每24小时)运行一次。我希望它能帮助其他人,因为微软文档在这个主题上自相矛盾(或者至少是误导):
对于每日计划,如果设置anchorDateTime = 10/20/2014 6 AM意味着计划将在每天早上6点发生。
这实际上不是真的,两行之后它说:
如果AnchorDateTime具有比间隔更细粒度的日期部分,那么更细粒度的部分将被忽略。例如,如果间隔为小时(frequency: hour, interval: 1),并且AnchorDateTime包含分和秒,那么AnchorDateTime的分和秒部分将被忽略。
第二部分是我认为我们正在遇到的问题,也是我为什么建议上面的策略的原因。
参考:https://msdn.microsoft.com/en-us/library/azure/dn894092.aspx
我明白了…它将等待下一个月开始。这意味着它将在下个月的第一天开始,并且没有办法手动触发它。
我也遇到了同样的问题。原来我没有根据UTC指定管道的开始时间。
如果您希望管道运行,请将活动期间更新为过去的日期。你可以使用下面的powershell命令
set- azuredatafactorypilineactiveperiod -DataFactoryName $DataFactoryName -PipelineName $PipelineName -StartDateTime $DateInPast -EndDateTime $DateOneDayLessInPast -ResourceGroupName $ResourceGroupName -Force