2016-08-18 7 views
8

背景:ソースから宛先へデータをコピーする予定のパイプラインがあります。これは特定の時刻に毎日実行されるようにスケジュールされています。Azure Data Factory - スケジュール済み/ワンタイムパイプラインをどのようにトリガーできますか?

問題:パイプラインへの入力データセットは外部であり、特定の時間間隔では使用できません。つまり、コピーアクティビティは、パイプラインに記載されているスケジュールされた開始時刻までキックオフする必要があります。データの量を考えると、私はここで時間を無駄にしたくありません。

要件:いつでも、自分の入力データセットが利用可能な時間にアクセスできます。これを手にして、特定の時間にのみ開始する予定のC#からADFパイプラインをトリガする方法を知りたいと思います。

答えて

8

同じ問題が発生したため、ローカルジョブが完了したときにのみパイプラインを実行する必要がありました。そのためには、最後のステップとしてパイプラインを開始するようにローカルジョブを修正しました。 C#でADFパイプラインを開始する方法については、hereと書いてあります。 Hereは、参考になるADF開発者リファレンスへのリンクです。また、Azure関数からADFパイプラインをトリガする方法については、hereの例があります。これは、最初の例と同じコードを使用していますが、私はクラウド内でプロセス全体を実行し、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

は、Microsoftドクからのいくつかの例です...(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"