Azure数据工厂-如何触发计划/一次性管道



Background:我已经安排了管道运行,用于将数据从源复制到目标。它被安排在每天的特定时间运行。

问题:管道的输入数据集是外部的,在特定的时间间隔内不可用。这意味着复制活动必须等到管道中提到的计划启动时间才开始。考虑到数据量,我不想在这里浪费时间。

要求:在任何给定的时间,我可以访问我的输入数据集可用的时间。有了这个,我想知道如何从c#触发ADF管道,尽管它计划只在特定时间启动。

我遇到了同样的问题,我只需要在本地作业完成时才运行管道。为此,我修改了本地作业,将管道作为最后一步启动。我在这里写了一篇关于如何用c#启动ADF管道的文章。这里是ADF开发人员参考的链接,可能也会有所帮助。如果你感兴趣的话,我还有一个关于如何从Azure Functions中触发ADF管道的例子。这是使用与第一个示例相同的代码,但我得到了在云中运行整个过程的好处,并且能够使用azure函数调度器。

下面是修改管道的相关方法。您需要根据您希望切片运行的时间来更改开始和结束日期。

public void StartPipeline(string resourceGroup, string dataFactory, string pipelineName, DateTime slice)
    {
        var pipeline = inner_client.Pipelines.Get(resourceGroup, dataFactory, pipelineName);
        pipeline.Pipeline.Properties.Start = DateTime.Parse($"{slice.Date:yyyy-MM-dd}T00:00:00Z");
        pipeline.Pipeline.Properties.End = DateTime.Parse($"{slice.Date:yyyy-MM-dd}T23:59:59Z");
        pipeline.Pipeline.Properties.IsPaused = false;
        inner_client.Pipelines.CreateOrUpdate(resourceGroup, dataFactory, new PipelineCreateOrUpdateParameters()
        {
            Pipeline = pipeline.Pipeline
        });
    }

要触发ADF,您需要将输入数据集置于'Ready'状态。如果它处于就绪状态,你可以手动转到监控选项卡手动'重新运行',如果输入数据集还没有准备好,那么你需要使该数据集准备好手动启动ADF。

如果您只想触发一次作业,那么您可以将StartDate和EndDate设置为相同的时间:

pipeline.Pipeline.Properties.Start = DateTime.Parse($"{someDate:yyyy-MM-dd}T00:00:00Z");
pipeline.Pipeline.Properties.End = DateTime.Parse($"{someDate:yyyy-MM-dd}T00:00:00Z");
pipeline.Pipeline.Properties.IsPaused = false;

下面是一些来自Microsoft Doc的例子…(链接参考)

(仅适用于V2)

{
    "properties": {
        "name": "MyTrigger",
        "type": "ScheduleTrigger",
        "typeProperties": {
            "recurrence": {
                "frequency": "Hour",
                "interval": 1,
                "startTime": "2017-11-01T09:00:00-08:00",
                "endTime": "2017-11-02T22:00:00-08:00"
            }
        },
        "pipelines": [{
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "SQLServerToBlobPipeline"
                },
                "parameters": {}
            },
            {
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "SQLServerToAzureSQLPipeline"
                },
                "parameters": {}
            }
        ]
    }
}

将代码与.JSON文件保存在您的目录中,并使用以下命令部署…

Set-AzureRmDataFactoryV2Trigger -ResourceGroupName  resourceGroupName -DataFactoryName dataFactoryName -Name "ScheduleTriggerName" -DefinitionFile ".ScheduleTriggerName.json"

看看这个:https://learn.microsoft.com/en-us/azure/data-factory/concepts-pipeline-execution-triggers。

从今天起,我相信你可以使用这个:

POST
https://management.azure.com/subscriptions/mySubId/resourceGroups/myResourceGroup/providers/Microsoft.DataFactory/factories/myDataFactory/pipelines/copyPipeline/createRun?api-version=2017-03-01-preview

相关内容

  • 没有找到相关文章

最新更新