【发布时间】:2017-05-19 13:35:41
【问题描述】:
我有一些 Azure 数据工厂管道,除了每月的第一天之外,我希望每天运行一次。
例如,如果是 2016 年 12 月 1 日,我希望管道不运行。
这是否可以通过简单地更改管道计划来实现?如果不是,实现这一目标的其他选择是什么?
【问题讨论】:
我有一些 Azure 数据工厂管道,除了每月的第一天之外,我希望每天运行一次。
例如,如果是 2016 年 12 月 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
【讨论】:
这是可能的,但不干净,您需要拆分 PowerShell 以手动覆盖您不想运行的时间片。
创建您的数据集并为活动提供一年的每日时间表,或其他任何时间。完成后,使用 PowerShell cmdlet Set-AzureRmDataFactorySliceStatus 覆盖一年中您不想运行的 12 天的时间片状态。如果您使用带有 Skipped 值的 -Status 参数,则使用 cmdlet 可以避免执行。
例如:
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
希望这会有所帮助。
【讨论】: