背景:我有預定的管道運行從源複製數據到目標。計劃在特定時間每天運行。Azure數據工廠 - 如何觸發計劃/一次性管道?
問題:流水線的輸入數據集是外部數據集,並且在特定的時間間隔內不可用。這意味着複製活動將不得不等待管道中啓動的預定開始時間。考慮到數據量,我不想在這裏浪費時間。
要求:在任何給定的時間,我都可以訪問我輸入數據集可用的時間。有了這個,我想知道如何從C#中觸發ADF管道,儘管它只在特定時間啓動。
背景:我有預定的管道運行從源複製數據到目標。計劃在特定時間每天運行。Azure數據工廠 - 如何觸發計劃/一次性管道?
問題:流水線的輸入數據集是外部數據集,並且在特定的時間間隔內不可用。這意味着複製活動將不得不等待管道中啓動的預定開始時間。考慮到數據量,我不想在這裏浪費時間。
要求:在任何給定的時間,我都可以訪問我輸入數據集可用的時間。有了這個,我想知道如何從C#中觸發ADF管道,儘管它只在特定時間啓動。
我遇到了這個問題,我只需要在本地作業完成時運行我的管道。爲此,我修改了本地工作,以啓動管道作爲最後一步。關於如何用C#啓動ADF管道,我寫了一篇文章here。 Here是ADF開發人員參考的鏈接,這也可能有所幫助。如果您有興趣,我也有一個示例here關於如何從Azure函數觸發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,您需要將輸入數據集設置爲「就緒」狀態。如果它處於就緒狀態,則可以手動轉到監視選項卡手動「重新運行」,如果輸入數據集未準備好,則需要準備好該數據集以手動啓動ADF。
如果要觸發作業一次,那麼你可以設置起始日期日期和結束日期是相同的時間:
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;
下面是微軟文檔的一些例子...(link for reference)
(僅適用於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"