簡體   English   中英

Azure數據工廠 - 如何觸發Scheduled / OneTime管道?

[英]Azure Data Factory - How can I trigger Scheduled/OneTime Pipelines?

背景:我已安排運行的管道,用於將數據從源復制到目標。 這計划在特定時間每天運行。

問題:管道的輸入數據集是外部的,在特定的時間間隔不可用。 這意味着復制活動必須等到管道中提到的計划開始時間才能啟動。 考慮到數據量,我不想在這里浪費時間。

要求:在任何給定時間,我都可以訪問輸入數據集可用的時間。 有了這個,我想知道如何從C#觸發ADF管道,雖然它計划僅在特定時間啟動。

我遇到了同樣的問題,我需要在本地工作完成后運行我的管道。 為此,我修改了本地作業,以啟動管道作為最后一步。 我在這里寫了一篇關於如何用C#啟動ADF管道的文章。 以下是ADF開發人員參考的鏈接,該參考也可能有所幫助。 我也有一個例子在這里如何從Azure的功能觸發自動進稿器的管道,如果你有興趣。 這是使用第一個示例中的相同代碼,但我得到了在雲中運行整個過程以及使用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,您需要將輸入數據集置於“就緒”狀態。 如果它處於就緒狀態,您可以手動轉到“監控”選項卡以手動“重新運行”,如果輸入數據集尚未就緒,則需要使該數據集准備好手動啟動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//docs.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM