【问题标题】:azure data factory pipeline customise scheduleazure 数据工厂管道自定义计划
【发布时间】:2017-05-19 13:35:41
【问题描述】:

我有一些 Azure 数据工厂管道,除了每月的第一天之外,我希望每天运行一次。

例如,如果是 2016 年 12 月 1 日,我希望管道不运行。

这是否可以通过简单地更改管道计划来实现?如果不是,实现这一目标的其他选择是什么?

【问题讨论】:

    标签: azure azure-data-factory


    【解决方案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

    【讨论】:

    • 虽然这可能是解决问题的宝贵提示,但一个好的答案也可以证明解决方案。请edit 提供示例代码来说明您的意思。或者,请考虑将其写为评论。
    【解决方案2】:

    这是可能的,但不干净,您需要拆分 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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-02
      • 2019-10-24
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多