2016-08-18 42 views
8

背景:我有預定的管道運行從源複製數據到目標。計劃在特定時間每天運行。Azure數據工廠 - 如何觸發計劃/一次性管道?

問題:流水線的輸入數據集是外部數據集,並且在特定的時間間隔內不可用。這意味着複製活動將不得不等待管道中啓動的預定開始時間。考慮到數據量,我不想在這裏浪費時間。

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

回答

8

我遇到了這個問題,我只需要在本地作業完成時運行我的管道。爲此,我修改了本地工作,以啓動管道作爲最後一步。關於如何用C#啓動ADF管道,我寫了一篇文章hereHere是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 
     }); 
    } 
0

要觸發ADF,您需要將輸入數據集設置爲「就緒」狀態。如果它處於就緒狀態,則可以手動轉到監視選項卡手動「重新運行」,如果輸入數據集未準備好,則需要準備好該數據集以手動啓動ADF。

2

如果要觸發作業一次,那麼你可以設置起始日期日期和結束日期是相同的時間:

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; 
0

下面是微軟文檔的一些例子...(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"