スケジュールどおりにパイプラインを実行するトリガーの作成

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

Data Factory in Microsoft Fabric は、よりシンプルなアーキテクチャ、組み込みの AI、および新機能を備えた次世代のAzure Data Factoryです。 データ統合を初めて使用する場合は、Fabric Data Factory から始めます。 既存の ADF ワークロードをFabricにアップグレードして、データ サイエンス、リアルタイム分析、レポートの新機能にアクセスできます。

この記事では、スケジュール トリガーの概要と、スケジュール トリガーを作成、起動、監視する手順について説明します。 他の種類のトリガーについては、パイプラインの実行とトリガーに関するページを参照してください。

スケジュール トリガーを作成するときは、トリガーの開始日、繰り返し、終了日などのスケジュールを指定し、パイプラインと関連付けます。 パイプラインとトリガーには多対多の関係があります。 複数のトリガーが 1 つのパイプラインを開始することができます。 1 つのトリガーが複数のパイプラインを開始することもできます。

以下のセクションでは、さまざまな方法でスケジュール トリガーを作成する手順を説明します。

Azure Data FactoryおよびAzure Synapseのポータル体験

スケジュール トリガーを作成して、毎時、毎日など、パイプラインを定期的に実行するようにスケジュールできます。

パイプラインとスケジュール トリガーの作成に関する完全なチュートリアル (トリガーをパイプラインに関連付けて、パイプラインを実行および監視する) については、Data Factory UI を使用したデータ ファクトリの作成に関するクイック スタートをご覧ください。

  1. Data Factory の Edit タブまたは Azure Synapse の Integrate タブに切り替えます。

    [編集] タブへの切り替えを示すスクリーンショット。


  1. メニューの [トリガー] を選択し、[New/Edit]\(新規作成/編集\) を選択します。

    [新しいトリガー] メニューを示すスクリーンショット。

  2. [Add Triggers]\(トリガーの追加\) ページで、[Choose trigger]\(トリガーの選択\) を選択し、[新規] を選択します。

    [トリガーの追加] ペインを示すスクリーンショット。

  3. [新しいトリガー] ページで、次の操作を行います。

    1. [種類][スケジュール] が選択されていることを確認します。

    2. [開始日] にトリガーの開始日時を指定します。 既定では、現在の日時が協定世界時 (UTC) で設定されています。

    3. トリガーが作成されるタイム ゾーンを指定します。 タイム ゾーンの設定は、高度な繰り返しオプション[開始日][終了日][スケジュール実行回数] に適用されます。 タイム ゾーンの設定を変更することで、開始日が自動的に変更されることはありません。 指定したタイム ゾーンにおいて、開始日が正しいことを確認してください。 スケジュールされたトリガーの実行予定時間は開始日以降とみなされます。 (開始日が実行時間より少なくとも 1 分短いことを確認します。そうでなければ、次の繰り返しでパイプラインがトリガーされます。)

      夏時間を採用しているタイム ゾーンの場合、繰り返しを [日] 以上に設定すると、年に 2 回の変更に合わせてトリガー時間が自動調整されます。 夏時間の変更を無効にするには、UTC など、夏時間を観測しないタイムゾーンを選択します。

      夏時間の調整は、繰り返しが [日] 以上に設定されたトリガーでのみ行われます。 トリガーが [時間] または [分] の頻度に設定されている場合、トリガーは一定の間隔で発生し続けます。

    4. トリガーの繰り返しを指定します。 ドロップダウン リストから値のいずれか (分単位時間単位日単位週単位月単位) を選択します。 テキスト ボックスに乗数を入力します。 たとえば、15 分に 1 回トリガーを実行する場合は、[1 分ごと] を選択し、テキスト ボックスに「15」と入力します。

    5. [繰り返し] で、ドロップダウンから [日][週]、または [月] を選択した場合は、[高度な繰り返しのオプション] が表示されます。

      [日]、[週]、[月] の高度な繰り返しのオプションを示すスクリーンショット。

    6. 終了日時を指定するには、[Specify an End Date]\(終了日の指定\) を選択します。 [終了日] 情報を指定し、[OK] を選択します。

      コストは、各パイプラインの実行に関連しています。 テストする場合は、パイプラインが数回だけトリガーされるように設定してください。 ただし、発行時から終了時刻までにパイプラインを実行できる十分な時間があるようにします。 トリガーは、UI にトリガーを保存したときではなく、ソリューションを発行した後で有効になります。

      トリガー設定を示すスクリーンショット。

      終了日時のトリガー設定を示すスクリーンショット。

  4. [新しいトリガー] ウィンドウで、[アクティブ化] オプションの [はい] を選択し、[OK] を選択します。 このチェック ボックスを使用して、トリガーを後で非アクティブ化できます。

    [アクティブ化済み] オプションを示すスクリーンショット。

  5. [新しいトリガー] ウィンドウで警告メッセージを確認し、[OK] を選択します。

    [OK] ボタンの選択を示すスクリーンショット。

  6. [すべて発行] を選択して、変更を発行します。 変更を公開するまで、トリガーはパイプラインの実行を開始しません。

    [すべて発行] ボタンを示すスクリーンショット。

  7. 左側の [パイプラインの実行] タブに切り替えてから、[更新] を選択して一覧を更新します。 スケジュールされたトリガーによって開始されたパイプライン実行が表示されます。 [トリガー元] 列の値に注意してください。 [Trigger Now]\(今すぐトリガー\) を使用すると、一覧に手動のトリガー実行が表示されます。

    Data Factory でトリガーされた実行の監視を示すスクリーンショット。


  1. [トリガーの実行][スケジュール] ビューに切り替えます。

    Data Factory でトリガー実行のスケジュールの監視を示すスクリーンショット。


Azure PowerShell

Azure Az PowerShell モジュールを使用してAzureを操作することをお勧めします。 作業を開始するには、「Install Azure PowerShellを参照してください。 Az PowerShell モジュールに移行する方法については、「AzRM から Azを参照してください。

このセクションでは、Azure PowerShellを使用してスケジュール トリガーを作成、開始、監視する方法について説明します。 このサンプルの動作を確認するには、まず Quickstart: Azure PowerShell。 続いて、メインのメソッドに以下のコードを追加します。このコードは、15 分ごとに実行するスケジュールのトリガーを作成して起動します。 このトリガーは、クイック スタートの一環として作成する Adfv2QuickStartPipeline という名前のパイプラインに関連付けられます。

前提条件

サンプル コード

  1. 次の内容が含まれた MyTrigger.json という名前の JSON ファイルを *C:\ADFv2QuickStartPSH* フォルダーに作成します。

    重要

    JSON ファイルを保存する前に、startTime 要素の値を現在の UTC 時間に設定します。 endTime 要素の値を現在の UTC 時間の 1 時間後に設定します。

    {
        "properties": {
            "name": "MyTrigger",
            "type": "ScheduleTrigger",
            "typeProperties": {
                "recurrence": {
                    "frequency": "Minute",
                    "interval": 15,
                    "startTime": "2017-12-08T00:00:00Z",
                    "endTime": "2017-12-08T01:00:00Z",
                    "timeZone": "UTC"
                }
            },
            "pipelines": [{
                    "pipelineReference": {
                        "type": "PipelineReference",
                        "referenceName": "Adfv2QuickStartPipeline"
                    },
                    "parameters": {
                        "inputPath": "adftutorial/input",
                        "outputPath": "adftutorial/output"
                    }
                }
            ]
        }
    }
    

    JSON スニペットにおける設定は以下のとおりです。

    • トリガーの type 要素は ScheduleTrigger に設定されます。

    • frequency 要素は Minute に設定され、interval 要素は 15 に設定されます。 そのため、トリガーは開始時刻と終了時刻の間で 15 分ごとにパイプラインを実行します。

    • timeZone 要素では、トリガーが作成されるタイム ゾーンを指定します。 この設定は、startTimeendTime の両方に影響します。

    • endTime 要素は、startTime 要素の値の 1 時間後になっています。 そのため、トリガーは開始時刻の 15 分後、30 分後、45 分後にパイプラインを実行します。 必ず、開始時刻を現在の UTC 時間に更新し、終了時刻を開始時刻の 1 時間後に更新してください。

      重要

      UTC タイム ゾーンの場合、startTimeendTimeyyyy-MM-ddTHH:mm:ssZ 形式に従う必要があります。その他のタイム ゾーンでは、startTimeendTimeyyyy-MM-ddTHH:mm:ss 形式に従います。

      ISO 8601 標準により、タイムスタンプへの Z サフィックスは、日時を UTC タイム ゾーンとしてマークし、timeZone フィールドを使用不可にするために使用されます。 UTC タイム ゾーンの Z サフィックスが欠落していると、トリガーの "アクティブ化" でエラーが発生します。

    • トリガーはAdfv2QuickStartPipeline パイプラインに関連付けられています。 複数のパイプラインをトリガーに関連付けるには、pipelineReference セクションを追加します。

    • このクイックスタートのパイプラインは parametersinputPath の 2 つの outputPath 値を受け取ります。 これらのパラメーターの値をトリガーから渡します。

  2. Set-AzDataFactoryV2Trigger コマンドレットを使用してトリガーを作成します。

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Get-AzDataFactoryV2Trigger コマンドレットを使用して、トリガーの状態が Stopped であることを確認します。

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Start-AzDataFactoryV2Trigger コマンドレットを使用してトリガーを起動します。

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Get-AzDataFactoryV2Trigger コマンドレットを使用して、トリガーの状態が Started であることを確認します。

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Get-AzDataFactoryV2TriggerRun コマンドレットを使用して、Azure PowerShellでトリガーの実行を取得します。 トリガー実行に関する情報を取得するには、次のコマンドを定期的に実行します。 TriggerRunStartedAfterTriggerRunStartedBefore の値をトリガー定義の値と一致するように更新します。

    Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
    

    スケジュール トリガーのトリガー時間は UTC タイムスタンプで指定します。 TriggerRunStartedAfterTriggerRunStartedBefore でも UTC タイムスタンプが想定されます。

    Azure ポータルでトリガーの実行とパイプラインの実行を監視するには、「Monitor パイプラインの実行を参照してください。

Azure CLI

このセクションでは、Azure CLIを使用してスケジュール トリガーを作成、開始、監視する方法について説明します。 このサンプルの動作を確認するには、まず 「クイックスタート: Azure CLI を使用して Azure Data Factory を作成する」 をお読みください。 次に、手順に従って、15 分ごとに実行されるスケジュール トリガーを作成して開始します。 このトリガーは、クイック スタートの一環として作成する Adfv2QuickStartPipeline という名前のパイプラインに関連付けられます。

前提条件

  • Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Get started with Azure Cloud Shell」を参照してください。

  • CLI 参照コマンドをローカルで実行する場合は、Azure CLIinstallします。 Windowsまたは macOS で実行している場合は、Docker コンテナーでAzure CLIを実行することを検討してください。 詳細については、「 Docker コンテナーでAzure CLIを実行する方法を参照してください。

    • ローカル インストールを使用している場合は、az login コマンドを使用してAzure CLIにサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI を使用して Azure に認証するを参照してください。

    • メッセージが表示されたら、最初に使用するときにAzure CLI拡張機能をインストールします。 拡張機能の詳細については、「Azure CLIを参照してください。

    • az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。

サンプル コード

  1. 作業ディレクトリで、トリガーのプロパティを使用して、MyTrigger.json という名前の JSON ファイルを作成します。 このサンプルでは、次のコンテンツを使用します。

    重要

    JSON ファイルを保存する前に、startTime 要素の値を現在の UTC 時間に設定します。 endTime 要素の値を現在の UTC 時間の 1 時間後に設定します。

    {
        "name": "MyTrigger",
        "type": "ScheduleTrigger",
        "typeProperties": {
            "recurrence": {
                "frequency": "Minute",
                "interval": 15,
                "startTime": "2017-12-08T00:00:00Z",
                "endTime": "2017-12-08T01:00:00Z",
                "timeZone": "UTC"
            }
        },
        "pipelines": [{
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "Adfv2QuickStartPipeline"
                },
                "parameters": {
                    "inputPath": "adftutorial/input",
                    "outputPath": "adftutorial/output"
                }
            }
        ]
    }
    

    JSON スニペットにおける設定は以下のとおりです。

    • トリガーの type 要素は ScheduleTrigger に設定されます。

    • frequency 要素は Minute に設定され、interval 要素は 15 に設定されます。 そのため、トリガーは開始時刻と終了時刻の間で 15 分ごとにパイプラインを実行します。

    • timeZone 要素では、トリガーが作成されるタイム ゾーンを指定します。 この設定は、startTimeendTime の両方に影響します。

    • endTime 要素は、startTime 要素の値の 1 時間後になっています。 そのため、トリガーは開始時刻の 15 分後、30 分後、45 分後にパイプラインを実行します。 必ず、開始時刻を現在の UTC 時間に更新し、終了時刻を開始時刻の 1 時間後に更新してください。

      重要

      UTC タイム ゾーンの場合、startTime と endTime は yyyy-MM-ddTHH:mm:ssZ 形式に従う必要があります。その他のタイム ゾーンでは、startTimeendTimeyyyy-MM-ddTHH:mm:ss 形式に従います。

      ISO 8601 標準により、タイムスタンプへの Z サフィックスは、日時を UTC タイム ゾーンとしてマークし、timeZone フィールドを使用不可にするために使用されます。 UTC タイム ゾーンの Z サフィックスが欠落していると、トリガーの "アクティブ化" でエラーが発生します。

    • トリガーはAdfv2QuickStartPipeline パイプラインに関連付けられています。 複数のパイプラインをトリガーに関連付けるには、pipelineReference セクションを追加します。

    • このクイックスタートのパイプラインは parametersinputPath の 2 つの outputPath 値を受け取ります。 これらのパラメーターの値をトリガーから渡します。

  2. az datafactory trigger create コマンドを使用してトリガーを作成します。

    az datafactory trigger create --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory"  --name "MyTrigger" --properties @MyTrigger.json  
    
  3. az datafactory trigger show コマンドを使用して、トリガーの状態が Stopped であることを確認します。

    az datafactory trigger show --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" 
    
  4. az datafactory trigger start コマンドを使用してトリガーを起動します。

    az datafactory trigger start --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" 
    
  5. az datafactory trigger show コマンドを使用して、トリガーの状態が Started であることを確認します。

    az datafactory trigger show --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" 
    
  6. az datafactory trigger-run query-by-factory コマンドを使用して、Azure CLIでトリガーの実行状況を取得します。 トリガー実行に関する情報を取得するには、次のコマンドを定期的に実行します。 last-updated-afterlast-updated-before の値をトリガー定義の値と一致するように更新します。

    az datafactory trigger-run query-by-factory --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --filters operand="TriggerName" operator="Equals" values="MyTrigger" --last-updated-after "2017-12-08T00:00:00" --last-updated-before "2017-12-08T01:00:00"
    

    スケジュール トリガーのトリガー時間は UTC タイムスタンプで指定します。 last-updated-afterlast-updated-before も UTC タイムスタンプが想定されます。

    Azure ポータルでトリガーの実行とパイプラインの実行を監視するには、「Monitor パイプラインの実行を参照してください。

.NET SDK

このセクションでは、.NET SDK を使用してトリガーを作成、開始、監視する方法について説明します。 このサンプルの動作を確認するには、まず Quickstart: .NET SDK を使用してデータ ファクトリを作成する を参照>。 続いて、メインのメソッドに以下のコードを追加します。このコードは、15 分ごとに実行するスケジュールのトリガーを作成して起動します。 このトリガーは、クイック スタートの一環として作成する Adfv2QuickStartPipeline という名前のパイプラインに関連付けられます。

15 分ごとに実行されるスケジュール トリガーを作成して起動するには、メイン メソッドに次のコードを追加します。

            // Create the trigger
            Console.WriteLine("Creating the trigger");

            // Set the start time to the current UTC time
            DateTime startTime = DateTime.UtcNow;

            // Specify values for the inputPath and outputPath parameters
            Dictionary<string, object> pipelineParameters = new Dictionary<string, object>();
            pipelineParameters.Add("inputPath", "adftutorial/input");
            pipelineParameters.Add("outputPath", "adftutorial/output");

            // Create a schedule trigger
            string triggerName = "MyTrigger";
            ScheduleTrigger myTrigger = new ScheduleTrigger()
            {
                Pipelines = new List<TriggerPipelineReference>()
                {
                    // Associate the Adfv2QuickStartPipeline pipeline with the trigger
                    new TriggerPipelineReference()
                    {
                        PipelineReference = new PipelineReference(pipelineName),
                        Parameters = pipelineParameters,
                    }
                },
                Recurrence = new ScheduleTriggerRecurrence()
                {
                    // Set the start time to the current UTC time and the end time to one hour after the start time
                    StartTime = startTime,
                    TimeZone = "UTC",
                    EndTime = startTime.AddHours(1),
                    Frequency = RecurrenceFrequency.Minute,
                    Interval = 15,
                }
            };

            // Now, create the trigger by invoking the CreateOrUpdate method
            TriggerResource triggerResource = new TriggerResource()
            {
                Properties = myTrigger
            };
            client.Triggers.CreateOrUpdate(resourceGroup, dataFactoryName, triggerName, triggerResource);

            // Start the trigger
            Console.WriteLine("Starting the trigger");
            client.Triggers.Start(resourceGroup, dataFactoryName, triggerName);

UTC 以外の別のタイムゾーンでトリガーを作成するには、次の設定が必要です。

<<ClientInstance>>.SerializationSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
<<ClientInstance>>.SerializationSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified;
<<ClientInstance>>.SerializationSettings.DateParseHandling = DateParseHandling.None;
<<ClientInstance>>.DeserializationSettings.DateParseHandling = DateParseHandling.None;
<<ClientInstance>>.DeserializationSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.IsoDateFormat;
<<ClientInstance>>.DeserializationSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified;

トリガー実行を監視するには、サンプルの最後の Console.WriteLine ステートメントの前に次のコードを追加します。

            // Check that the trigger runs every 15 minutes
            Console.WriteLine("Trigger runs. You see the output every 15 minutes");

            for (int i = 0; i < 3; i++)
            {
                System.Threading.Thread.Sleep(TimeSpan.FromMinutes(15));
                List<TriggerRun> triggerRuns = client.Triggers.ListRuns(resourceGroup, dataFactoryName, triggerName, DateTime.UtcNow.AddMinutes(-15 * (i + 1)), DateTime.UtcNow.AddMinutes(2)).ToList();
                Console.WriteLine("{0} trigger runs found", triggerRuns.Count);

                foreach (TriggerRun run in triggerRuns)
                {
                    foreach (KeyValuePair<string, string> triggeredPipeline in run.TriggeredPipelines)
                    {
                        PipelineRun triggeredPipelineRun = client.PipelineRuns.Get(resourceGroup, dataFactoryName, triggeredPipeline.Value);
                        Console.WriteLine("Pipeline run ID: {0}, Status: {1}", triggeredPipelineRun.RunId, triggeredPipelineRun.Status);
                        List<ActivityRun> runs = client.ActivityRuns.ListByPipelineRun(resourceGroup, dataFactoryName, triggeredPipelineRun.RunId, run.TriggerRunTimestamp.Value, run.TriggerRunTimestamp.Value.AddMinutes(20)).ToList();
                    }
                }
            }

Azure ポータルでトリガーの実行とパイプラインの実行を監視するには、「Monitor パイプラインの実行を参照してください。

Python SDK

このセクションでは、Python SDK を使用してトリガーを作成、開始、監視する方法について説明します。 このサンプルの動作を確認するには、まず Quickstart: Python SDKを使用してデータ ファクトリを作成する方法に関するページを参照してください。 次に、Python スクリプトの monitor the pipeline run コード ブロックの後に次のコード ブロックを追加します。 このコードは、指定された開始時刻と終了時刻の間で 15 分ごとに実行するスケジュールのトリガーを作成します。 start_time 変数を現在の UTC 時間に更新し、end_time 変数を現在の UTC 時間の 1 時間後に更新します。

    # Create a trigger
    tr_name = 'mytrigger'
    scheduler_recurrence = ScheduleTriggerRecurrence(frequency='Minute', interval='15',start_time='2017-12-12T04:00:00Z', end_time='2017-12-12T05:00:00Z', time_zone='UTC')
    pipeline_parameters = {'inputPath':'adftutorial/input', 'outputPath':'adftutorial/output'}
    pipelines_to_run = []
    pipeline_reference = PipelineReference('copyPipeline')
    pipelines_to_run.append(TriggerPipelineReference(pipeline_reference, pipeline_parameters))
    tr_properties = TriggerResource(properties=ScheduleTrigger(description='My scheduler trigger', pipelines = pipelines_to_run, recurrence=scheduler_recurrence))
    adf_client.triggers.create_or_update(rg_name, df_name, tr_name, tr_properties)

    # Start the trigger
    adf_client.triggers.start(rg_name, df_name, tr_name)

Azure ポータルでトリガーの実行とパイプラインの実行を監視するには、「Monitor パイプラインの実行を参照してください。

Azure Resource Manager テンプレート

Azure Resource Manager テンプレートを使用してトリガーを作成できます。 詳細な手順については、「Azure Resource Manager テンプレートを使用してAzure データ ファクトリを作成するを参照してください。

トリガーの開始時刻をパイプラインに渡す

Azure Data Factory バージョン 1 では、システム変数 SliceStartSliceEndWindowStart、および WindowEnd を使用したパーティション分割データの読み取りまたは書き込みがサポートされています。 現在のバージョンの Data Factory と Azure Synapse パイプラインでは、パイプライン パラメーターを使用してこの動作を実現できます。 トリガーの開始時刻とスケジュールされた時刻を、パイプライン パラメーターの値として設定します。 次の例では、トリガーのスケジュールされた時刻が、scheduledRunTime パイプライン パラメーターに値として渡されます。

"parameters": {
    "scheduledRunTime": "@trigger().scheduledTime"
}

JSON スキーマ

次の JSON 定義は、スケジュールと繰り返しを指定してスケジュール トリガーを作成する方法を示しています。

{
  "properties": {
    "type": "ScheduleTrigger",
    "typeProperties": {
      "recurrence": {
        "frequency": <<Minute, Hour, Day, Week, Month>>,
        "interval": <<int>>,             // Optional, specifies how often to fire (default to 1)
        "startTime": <<datetime>>,
        "endTime": <<datetime - optional>>,
        "timeZone": "UTC"
        "schedule": {                    // Optional (advanced scheduling specifics)
          "hours": [<<0-23>>],
          "weekDays": [<<Monday-Sunday>>],
          "minutes": [<<0-59>>],
          "monthDays": [<<1-31>>],
          "monthlyOccurrences": [
               {
                    "day": <<Monday-Sunday>>,
                    "occurrence": <<1-5>>
               }
           ]
        }
      }
    },
   "pipelines": [
            {
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "<Name of your pipeline>"
                },
                "parameters": {
                    "<parameter 1 Name>": {
                        "type": "Expression",
                        "value": "<parameter 1 Value>"
                    },
                    "<parameter 2 Name>" : "<parameter 2 Value>"
                }
           }
      ]
  }
}

重要

parameters プロパティは、pipelines 要素の必須プロパティです。 パイプラインにパラメーターがない場合は、parameters プロパティ用に空の JSON 定義を含める必要があります。

スキーマの概要

次の表に、トリガーの繰り返しとスケジュール設定に関連する主要なスキーマ要素の概要を示します。

JSON プロパティ 説明
startTime 日付/時刻の値。 単純なスケジュールの場合、startTime プロパティの値が最初の発生日時に適用されます。 複雑なスケジュールの場合、指定した startTime 値より早くトリガーが起動することはありません。
UTC タイム ゾーンの場合、形式は 'yyyy-MM-ddTHH:mm:ssZ' です。 その他のタイム ゾーンでは、形式は yyyy-MM-ddTHH:mm:ss です。
endTime トリガーの終了日と時間。 指定した終了日時を過ぎると、トリガーは実行されません。 このプロパティの値が過去に設定されることはできません。 このプロパティは省略可能です。
UTC タイム ゾーンの場合、形式は 'yyyy-MM-ddTHH:mm:ssZ' です。 その他のタイム ゾーンでは、形式は yyyy-MM-ddTHH:mm:ss です。
timeZone トリガーが作成されるタイム ゾーン。 この設定は、startTimeendTimeschedule に影響します。 「サポートされているタイム ゾーンの一覧」を参照してください。
recurrence トリガーの繰り返し規則を指定する recurrence オブジェクト。 繰り返しオブジェクトは、frequencyintervalendTimecountschedule 要素をサポートしています。 recurrence オブジェクトを定義する場合、frequency 要素は必須です。 recurrence オブジェクトの他の要素は省略可能です。
frequency トリガーが繰り返される頻度の単位。 サポートされている値は、minute,hour,dayweekmonth です。
interval トリガーの実行頻度を決定する、frequency 値の間隔を示す正の整数。 たとえば、interval3frequencyweek である場合、トリガーは 3 週間ごとに繰り返されます。
schedule トリガーの実行スケジュール。 frequency 値が指定されたトリガーは、繰り返しのスケジュールに基づいて繰り返しが変更されます。 schedule プロパティには、分、時間、曜日、日にち、週番号に基づいた繰り返しの変更を指定します。

重要

UTC タイム ゾーンの場合、startTimeendTimeyyyy-MM-ddTHH:mm:ssZ 形式に従う必要があります。その他のタイム ゾーンでは、startTimeendTimeyyyy-MM-ddTHH:mm:ss 形式に従います。

ISO 8601 標準により、タイムスタンプへの Z サフィックスは、日時を UTC タイム ゾーンとしてマークし、timeZone フィールドを使用不可にするために使用されます。 UTC タイム ゾーンの Z サフィックスが欠落していると、トリガーの "アクティブ化" でエラーが発生します。

スキーマの既定値、制限、例

JSON プロパティ タイプ 必須 既定値 有効な値
startTime はい なし ISO-8601 の日付/時刻 UTC タイム ゾーンの場合: "startTime" : "2013-01-09T09:30:00-08:00Z"
その他のタイム ゾーンの場合: "2013-01-09T09:30:00-08:00"
timeZone はい なし タイム ゾーン値 "UTC"
recurrence オブジェクト はい なし 繰り返しオブジェクト "recurrence" : { "frequency" : "monthly", "interval" : 1 }
interval 数値 いいえ 1 1 ~ 1,000 "interval":10
endTime はい なし 将来の時刻を表す日付/時刻の値 UTC タイム ゾーンの場合: "endTime" : "2013-02-09T09:30:00-08:00Z"
その他のタイム ゾーンの場合: "endTime" : "2013-02-09T09:30:00-08:00"
schedule オブジェクト いいえ なし スケジュールオブジェクト "schedule" : { "minute" : [30], "hour" : [8,17] }

タイム ゾーン オプション

スケジュール トリガーでサポートされているタイム ゾーンの一部を次に示します。

タイム ゾーン UTC オフセット (夏時間なし) タイムゾーンの値 サマータイムを採用する タイムスタンプ形式
協定世界時 0 UTC いいえ 'yyyy-MM-ddTHH:mm:ssZ'
太平洋標準時 (PT) -8 Pacific Standard Time はい 'yyyy-MM-ddTHH:mm:ss'
中部標準時 (CT) -6 Central Standard Time はい 'yyyy-MM-ddTHH:mm:ss'
東部標準時 (ET) -5 Eastern Standard Time はい 'yyyy-MM-ddTHH:mm:ss'
グリニッジ標準時 (GMT) 0 GMT Standard Time はい 'yyyy-MM-ddTHH:mm:ss'
中央ヨーロッパ標準時 +1 W. Europe Standard Time はい 'yyyy-MM-ddTHH:mm:ss'
インド標準時 (IST) +5:30 India Standard Time いいえ 'yyyy-MM-ddTHH:mm:ss'
中国標準時 +8 China Standard Time いいえ 'yyyy-MM-ddTHH:mm:ss'

この一覧は完全なものではありません。 タイム ゾーン オプションの完全な一覧については、ポータルのトリガー作成ページを閲覧してください。

startTime プロパティ

次の表に、startTime プロパティでトリガー実行を制御する方法を示します。

startTime の値 スケジュールなしの繰り返し スケジュールありの繰り返し
開始時刻が過去に設定されている 開始時刻より後の将来の最初の実行時刻を計算し、その時刻に実行されます。

以降は、前回の実行時刻からの計算に基づいて実行されます。

この表の後の例を参照してください。
トリガーは、指定した開始時刻になると "すぐに" 起動します。 最初の発生は、開始時刻から計算されたスケジュールに基づきます。

その後の実行は、繰り返しのスケジュールに基づいて行われます。
開始時刻が将来または現在に設定されている 指定した開始時刻に 1 回実行されます。

以降は、前回の実行時刻からの計算に基づいて実行されます。
トリガーは、指定した開始時刻になると "すぐに" 起動します。 最初の発生は、開始時刻から計算されたスケジュールに基づきます。

その後の実行は、繰り返しのスケジュールに基づいて行われます。

ここでは、開始時刻が過去であり、スケジュールなしの繰り返しが設定されている場合の動作の例を説明します。 現在の時刻が 2017-04-08 13:00、開始時刻が 2017-04-07 14:00、繰り返しが 2 日ごとであると仮定します (recurrence 値は、frequency プロパティを day に設定し、interval プロパティを 2 に設定することで定義されます。)startTime 値が過去であり、現在の時刻よりも前であることに注意してください。

この条件では、最初の実行は 2017-04-0914:00 に行われます。 スケジューリングエンジンは、開始時刻から実行回数を計算します。 過去のインスタンスはすべて破棄されます。 エンジンは、将来発生する次回のインスタンスを使用します。 このシナリオでは、開始時刻が 2017-04-072:00pm であるため、次回のインスタンスはその 2 日後、つまり 2017-04-092:00pm になります。

startTime 値が 2017-04-05 14:00 または 2017-04-01 14:00 であっても、最初の実行時刻は同じです。 最初の実行後、以降の実行はスケジュールを使用して計算されます。 したがって、以降の実行は、2017-04-112:00pm2017-04-132:00pm2017-04-152:00pm の順に続きます。

最後に、トリガーのスケジュールに時間または分が設定されていない場合は、最初の実行の時間または分が既定値として使用されます。

schedule プロパティ

schedule を使用することで、トリガーの実行回数を制限できます。 たとえば、月単位の頻度を指定したトリガーを 31 日にのみ実行するようにスケジュールすると、トリガーは 31 日がある月にのみ実行されます。

schedule によりトリガーの実行回数を増やすこともできます。 たとえば、月単位の頻度を指定したトリガーを月の 1 日と 2 日に実行するようにスケジュールすると、トリガーは月に 1 回ではなく、月の 1 日と 2 日に実行されます。

schedule の複数の要素を指定した場合、最も大きいスケジュール設定から最も小さいスケジュール設定の順序で評価されます。 まず週番号が評価され、日にち、曜日、時間、分の順に評価されます。

次の表に、schedule の要素の詳細を示します。

JSON 要素 説明 有効な値
minutes トリガーを実行する時刻 (分)。
  • 整数
  • 整数の配列
hours トリガーが実行される1日の時間帯。
  • 整数
  • 整数の配列
weekDays トリガーが実行される曜日。 この値を指定できるのは、頻度が週単位の場合のみです。
  • 月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日。
  • 曜日の値の配列 (配列の最大サイズは 7)。
  • 曜日の値の大文字小文字は区別されません。
monthlyOccurrences トリガーが実行される月の特定曜日。 この値を指定できるのは、頻度が月単位の場合のみです。
  • monthlyOccurrences オブジェクトの配列: { "day": day, "occurrence": occurrence }
  • day 属性は、トリガーが実行される曜日を表します。 たとえばmonthlyOccurrences プロパティの day 値が {Sunday} の場合は、月の毎週日曜日を意味します。 day 属性は必須です。
  • occurrence 属性は、月内の指定した day の出現を表します。 たとえばmonthlyOccurrences プロパティの day 値と occurrence 値が {Sunday, -1} の場合は、月の最後の日曜日を意味します。 occurrence 属性は省略できます。
monthDays トリガーが実行される日にち。 この値を指定できるのは、頻度が月単位の場合のみです。
  • -1 以下かつ -31 以上の任意の値
  • 1 以上かつ 31 以下の任意の値
  • 値の配列

トリガーの繰り返しのスケジュールの例

このセクションでは、schedule オブジェクトとその要素に注目して、繰り返しのスケジュールの例を示します。

各例は、interval 値が 1 であり、schedule の定義に従って frequency に適切な値が指定されていることを前提としています。 たとえば、frequency 値が day で、monthDays オブジェクトに schedule の変更を含めることはできません。 このような制限事項は、前のセクションの表に記載されています。

説明
{"hours":[5]} 毎日午前 5 時に実行されます。
{"minutes":[15], "hours":[5]} 毎日午前 5 時 15 分に実行されます。
{"minutes":[15], "hours":[5,17]} 毎日午前 5 時 15 分と午後 5 時 15 分に実行されます。
{"minutes":[15,45], "hours":[5,17]} 毎日午前 5 時 15 分、午前 5 時 45 分、午後 5 時 15 分、午後 5 時 45 分に実行されます。
{"minutes":[0,15,30,45]} 15 分ごとに実行されます。
{hours":[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]} 1 時間ごとに実行されます。 このトリガーは 1 時間おきに実行されます。 値が startTime に指定されている場合、分はその値によって制御されます。 値が指定されていない場合は、分単位の時間が作成時刻によって制御されます。 たとえば、開始時刻または作成時刻が (どちらが適用される場合でも) 午後 12 時 25 分の場合、トリガーは 0 時 25 分、1 時 25 分、2 時 25 分...23 時 25 分に実行されます。

このスケジュールは、frequency 値が hour で、interval 値が 1 で、schedule ではないトリガーを含めることと同等です。 frequencyinterval に別の値を指定してこのスケジュールを使用すると、他のトリガーを作成できます。 たとえば、frequency 値が month の場合は、スケジュールは月に 1 回だけ実行され、frequency 値が day の場合は、毎日実行されます。
{"minutes":[0]} 毎正時に実行されます。 このトリガーは、毎正時 (午前 0 時、午前 1 時、午前 2 時 (以降も同様)) に実行されます。

このスケジュールは、frequency 値が hourstartTime 値が 0 分であるトリガー、または schedule がなく frequency 値が day であるトリガーと同等です。 frequency 値が week または month の場合、スケジュールはそれぞれ週に 1 日または月に 1 日だけ実行されます。
{"minutes":[15]} 毎正時から 15 分後に実行されます。 このトリガーは、午前0時15分から始まり、午前1時15分、午前2時15分と続き、午後11時15分に終了するように、毎時15分過ぎに実行されます。
{"hours":[17], "weekDays":["saturday"]} 毎週土曜日の午後 5 時に実行されます。
{"hours":[17], "weekDays":["monday", "wednesday", "friday"]} 毎週月曜日、水曜日、金曜日の午後 5 時に実行されます。
{"minutes":[15,45], "hours":[17], "weekDays":["monday", "wednesday", "friday"]} 毎週月曜日、水曜日、金曜日の午後 5 時 15 分と午後 5 時 45 分に実行されます。
{"minutes":[0,15,30,45], "weekDays":["monday", "tuesday", "wednesday", "thursday", "friday"]} 平日に 15 分ごとに実行されます。
{"minutes":[0,15,30,45], "hours": [9, 10, 11, 12, 13, 14, 15, 16] "weekDays":["monday", "tuesday", "wednesday", "thursday", "friday"]} 平日の午前 9 時から午後 4 時 45 分まで 15 分ごとに実行されます。
{"weekDays":["tuesday", "thursday"]} 火曜日と木曜日の指定された開始時刻に実行されます。
{"minutes":[0], "hours":[6], "monthDays":[28]} 毎月 28 日の午前 6 時に実行されます (frequency 値が month であることを想定)。
{"minutes":[0], "hours":[6], "monthDays":[-1]} 月の最終日の午前 6 時に実行されます。 月の最終日にトリガーを実行するには、28、29、30、31 という日にちではなく -1 を使用します。
{"minutes":[0], "hours":[6], "monthDays":[1,-1]} 毎月最初と最後の日の午前 6 時に実行されます。
{monthDays":[1,14]} 毎月 1 日と 14 日の指定された開始時刻に実行されます。
{"minutes":[0], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1}]} 毎月最初の金曜日の午前 5 時に実行されます。
{"monthlyOccurrences":[{"day":"friday", "occurrence":1}]} 毎月最初の金曜日の指定された開始時刻に実行されます。
{"monthlyOccurrences":[{"day":"friday", "occurrence":-3}]} 毎月、月の最後から 3 番目の金曜日の指定された開始時刻に実行されます。
{"minutes":[15], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1},{"day":"friday", "occurrence":-1}]} 毎月最初と最後の金曜日の午前 5 時 15 分に実行されます。
{"monthlyOccurrences":[{"day":"friday", "occurrence":1},{"day":"friday", "occurrence":-1}]} 毎月最初と最後の金曜日の指定された開始時刻に実行されます。
{"monthlyOccurrences":[{"day":"friday", "occurrence":5}]} 毎月第 5 金曜日の指定された開始時刻に実行されます。 第 5 金曜日にのみ実行するようにスケジュールされているため、月に第 5 金曜日がない場合、パイプラインは実行されません。 月の最後の金曜日にトリガーを実行する場合は、occurrence 値に 5 ではなく -1 を使用することを検討してください。
{"minutes":[0,15,30,45], "monthlyOccurrences":[{"day":"friday", "occurrence":-1}]} 月の最後の金曜日に 15 分ごとに実行されます。
{"minutes":[15,45], "hours":[5,17], "monthlyOccurrences":[{"day":"wednesday", "occurrence":3}]} 毎月第 3 水曜日の午前 5 時 15 分、午前 5 時 45 分、午後 5 時 15 分、午後 5 時 45 分に実行されます。