我有一些Azure数据工厂管道,除了每月的第一天,我想每天运行一次。
一个例子是如果它是2016年12月1日我想管道不运行。
通过简单地更改管道计划,这是否可行?如果没有,那么实现这个的另一个选择是什么?
答案 0 :(得分:1)
现在最好的解决方案是创建自定义管道,每次启动它时,检查日期,如果它是您刚刚完成它的月份的第1个,通过从Execute方法返回null,您必须在自定义管道中实现
评论后编辑:
public IDictionary<string, string> Execute(IEnumerable<LinkedService> linkedServices, IEnumerable<Dataset> datasets, Activity activity, IActivityLogger logger)
{
if (DateTime.UtcNow.Day == MonthDay.One)
{
return null;
}
/* YOUR PROCESSING DATA CODE */
...
return null;
}
这样,管道将在本月的第一天完成其工作,但不会对您的数据进行任何处理......
这里有一个制作自己的自定义管道的官方示例: Making your own custom pipeline
答案 1 :(得分:0)
这是可能的,但不是很干净,你需要打破PowerShell来手动覆盖你不想运行的时间片。
创建数据集并使用每日日程安排活动,或者其他任何内容。完成后,使用PowerShell cmdlet Set-AzureRmDataFactorySliceStatus 覆盖您不想运行的年份中12天的时间片状态。使用cmdlet时,如果使用 -Status 参数,其值为已跳过,则会避免执行。
例如:
Set-AzureRmDataFactorySliceStatus `
-ResourceGroupName $ResourceGroup `
-DataFactoryName $ADFName.DataFactoryName `
-DatasetName "YourDataset" `
-StartDateTime 2016-12-01 `
-EndDateTime 2016-12-02 `
-Status "Skipped" `
-UpdateType "Individual"
然后返回不同的开始和结束日期。
这并不完美,并且在部署管道后需要做的事情。但它会提供所需的行为。
此处有更多ADF PowerShell信息:https://docs.microsoft.com/en-us/powershell/module/azurerm.datafactories/set-azurermdatafactoryslicestatus?view=azurermps-4.0.0
希望这有帮助。