スケジュールどおりにパイプラインを実行するトリガーの作成
適用対象: Azure Data Factory Azure Synapse Analytics
ヒント
企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。
この記事では、スケジュール トリガーの概要と、スケジュール トリガーを作成、起動、監視する手順について説明します。 他の種類のトリガーについては、パイプラインの実行とトリガーに関するページを参照してください。
スケジュール トリガーを作成するときは、トリガーの開始日、繰り返し、終了日などのスケジュールを指定し、パイプラインと関連付けます。 パイプラインとトリガーには多対多の関係があります。 複数のトリガーが 1 つのパイプラインを開始することができます。 1 つのトリガーが複数のパイプラインを開始することもできます。
以下のセクションでは、さまざまな方法でスケジュール トリガーを作成する手順を説明します。
Azure Data Factory と Azure Synapse のポータル エクスペリエンス
スケジュール トリガーを作成して、毎時、毎日など、パイプラインを定期的に実行するようにスケジュールできます。
Note
パイプラインとスケジュール トリガーの作成に関する完全なチュートリアル (トリガーをパイプラインに関連付けて、パイプラインを実行および監視する) については、Data Factory UI を使用したデータ ファクトリの作成に関するクイック スタートをご覧ください。
Azure Data Factory の [編集] タブまたは Azure Synapse の [統合] タブに切り替えます。
メニューの [トリガー] を選択し、[New/Edit]\(新規作成/編集\) を選択します。
[Add Triggers]\(トリガーの追加\) ページで、[Choose trigger]\(トリガーの選択\) を選択し、[新規] を選択します。
[新しいトリガー] ページで、次の操作を行います。
[種類] で [スケジュール] が選択されていることを確認します。
[開始日] にトリガーの開始日時を指定します。 既定では、現在の日時が協定世界時 (UTC) で設定されています。
トリガーが作成されるタイム ゾーンを指定します。 タイム ゾーンの設定は、高度な繰り返しオプションの [開始日]、[終了日]、[スケジュール実行回数] に適用されます。 タイム ゾーンの設定を変更することで、開始日が自動的に変更されることはありません。 指定したタイム ゾーンにおいて、開始日が正しいことを確認してください。 スケジュールされたトリガーの実行予定時間は開始日以降とみなされます。 (開始日が実行時間より少なくとも 1 分短いことを確認します。そうでなければ、次の繰り返しでパイプラインがトリガーされます。)
Note
夏時間を採用しているタイム ゾーンの場合、繰り返しを [日] 以上に設定すると、年に 2 回の変更に合わせてトリガー時間が自動調整されます。 夏時間の変更を無効にするには、UTC など、夏時間を観測しないタイムゾーンを選択します。
夏時間の調整は、繰り返しが [日] 以上に設定されたトリガーでのみ行われます。 トリガーが [時間] または [分] の頻度に設定されている場合、トリガーは一定の間隔で発生し続けます。
トリガーの繰り返しを指定します。 ドロップダウン リストから値のいずれか (分単位、時間単位、日単位、週単位、月単位) を選択します。 テキスト ボックスに乗数を入力します。 たとえば、15 分に 1 回トリガーを実行する場合は、[1 分ごと] を選択し、テキスト ボックスに「15」と入力します。
[繰り返し] で、ドロップダウンから [日]、[週]、または [月] を選択した場合は、[高度な繰り返しのオプション] が表示されます。
終了日時を指定するには、[Specify an End Date]\(終了日の指定\) を選択します。 [終了日] 情報を指定し、[OK] を選択します。
コストは、各パイプラインの実行に関連しています。 テストする場合は、パイプラインが数回だけトリガーされるように設定してください。 ただし、発行時から終了時刻までにパイプラインを実行できる十分な時間があるようにします。 トリガーは、UI にトリガーを保存したときではなく、ソリューションを発行した後で有効になります。
[新しいトリガー] ウィンドウで、[アクティブ化] オプションの [はい] を選択し、[OK] を選択します。 このチェック ボックスを使用して、トリガーを後で非アクティブ化できます。
[新しいトリガー] ウィンドウで警告メッセージを確認し、[OK] を選択します。
[すべて発行] を選択して、変更を発行します。 変更を発行するまで、そのトリガーによって、パイプライン実行のトリガーは開始されません。
左側の [パイプラインの実行] タブに切り替えてから、[更新] を選択して一覧を更新します。 スケジュールされたトリガーによってトリガーされたパイプライン実行が表示されます。 [トリガー元] 列の値に注意してください。 [Trigger Now]\(今すぐトリガー\) を使用すると、一覧に手動のトリガー実行が表示されます。
[Trigger Runs]\(トリガーの実行\)>[スケジュール] ビューに切り替えます。
Azure PowerShell
注意
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
このセクションでは、Azure PowerShell を使用してスケジュール トリガーを作成、起動、監視する方法について説明します。 このサンプルの動作を確認する場合は、Azure PowerShell を使用したデータ ファクトリの作成に関するクイック スタートを最初にご覧ください。 続いて、メインのメソッドに以下のコードを追加します。このコードは、15 分ごとに実行するスケジュールのトリガーを作成して起動します。 このトリガーは、クイック スタートの一環として作成する Adfv2QuickStartPipeline
という名前のパイプラインに関連付けられます。
前提条件
- Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
- Azure PowerShell。 「PowerShellGet を使用した Windows への Azure PowerShell のインストール」に記載されている手順に従います。
サンプル コード
次の内容が含まれた 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
要素では、トリガーが作成されるタイム ゾーンを指定します。 この設定は、startTime
とendTime
の両方に影響します。endTime
要素は、startTime
要素の値の 1 時間後になっています。 そのため、トリガーは開始時刻の 15 分後、30 分後、45 分後にパイプラインを実行します。 必ず、開始時刻を現在の UTC 時間に更新し、終了時刻を開始時刻の 1 時間後に更新してください。重要
UTC タイム ゾーンの場合、
startTime
とendTime
はyyyy-MM-ddTHH:mm:ss
Z 形式に従う必要があります。その他のタイム ゾーンでは、startTime
とendTime
はyyyy-MM-ddTHH:mm:ss
形式に従います。ISO 8601 標準により、タイムスタンプへの
Z
サフィックスは、日時を UTC タイム ゾーンとしてマークし、timeZone
フィールドを使用不可にするために使用されます。 UTC タイム ゾーンのZ
サフィックスが欠落していると、トリガーの "アクティブ化" でエラーが発生します。Adfv2QuickStartPipeline
パイプラインに関連付けられているトリガー。 複数のパイプラインをトリガーに関連付けるには、pipelineReference
セクションを追加します。このクイックスタートのパイプラインは
inputPath
とoutputPath
の 2 つのparameters
値を受け取ります。 これらのパラメーターの値をトリガーから渡します。
Set-AzDataFactoryV2Trigger コマンドレットを使用してトリガーを作成します。
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Get-AzDataFactoryV2Trigger コマンドレットを使用して、トリガーの状態が Stopped であることを確認します。
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Start-AzDataFactoryV2Trigger コマンドレットを使用してトリガーを起動します。
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Get-AzDataFactoryV2Trigger コマンドレットを使用して、トリガーの状態が Started であることを確認します。
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Get-AzDataFactoryV2TriggerRun コマンドレットを使用して、Azure PowerShell でトリガー実行を取得します。 トリガー実行に関する情報を取得するには、次のコマンドを定期的に実行します。
TriggerRunStartedAfter
とTriggerRunStartedBefore
の値をトリガー定義の値と一致するように更新します。Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
Note
スケジュール トリガーのトリガー時間は UTC タイムスタンプで指定します。
TriggerRunStartedAfter
とTriggerRunStartedBefore
でも UTC タイムスタンプが想定されます。Azure Portal でトリガー実行とパイプライン実行を監視するには、パイプライン実行の監視に関するセクションをご覧ください。
Azure CLI
このセクションでは、Azure CLI を使用してスケジュール トリガーを作成、起動、および監視する方法について説明します。 このサンプルの動作を確認する場合は、Azure CLI を使用した Azure Data Factory の作成に関するクイック スタートを最初にご覧ください。 次に、手順に従って、15 分ごとに実行されるスケジュール トリガーを作成して開始します。 このトリガーは、クイック スタートの一環として作成する Adfv2QuickStartPipeline
という名前のパイプラインに関連付けられます。
前提条件
Azure Cloud Shell で Bash 環境を使用します。 詳細については、「Azure Cloud Shell の Bash のクイックスタート」を参照してください。
CLI リファレンス コマンドをローカルで実行する場合、Azure CLI をインストールします。 Windows または macOS で実行している場合は、Docker コンテナーで Azure CLI を実行することを検討してください。 詳細については、「Docker コンテナーで Azure CLI を実行する方法」を参照してください。
ローカル インストールを使用する場合は、az login コマンドを使用して Azure CLI にサインインします。 認証プロセスを完了するには、ターミナルに表示される手順に従います。 その他のサインイン オプションについては、Azure CLI でのサインインに関するページを参照してください。
初回使用時にインストールを求められたら、Azure CLI 拡張機能をインストールします。 拡張機能の詳細については、Azure CLI で拡張機能を使用する方法に関するページを参照してください。
az version を実行し、インストールされているバージョンおよび依存ライブラリを検索します。 最新バージョンにアップグレードするには、az upgrade を実行します。
サンプル コード
作業ディレクトリで、トリガーのプロパティを使用して、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
要素では、トリガーが作成されるタイム ゾーンを指定します。 この設定は、startTime
とendTime
の両方に影響します。endTime
要素は、startTime
要素の値の 1 時間後になっています。 そのため、トリガーは開始時刻の 15 分後、30 分後、45 分後にパイプラインを実行します。 必ず、開始時刻を現在の UTC 時間に更新し、終了時刻を開始時刻の 1 時間後に更新してください。重要
UTC タイム ゾーンの場合、
startTime
と endTime はyyyy-MM-ddTHH:mm:ss
Z 形式に従う必要があります。その他のタイム ゾーンでは、startTime
とendTime
はyyyy-MM-ddTHH:mm:ss
形式に従います。ISO 8601 標準により、タイムスタンプへの Z サフィックスは、日時を UTC タイム ゾーンとしてマークし、
timeZone
フィールドを使用不可にするために使用されます。 UTC タイム ゾーンの Z サフィックスが欠落していると、トリガーの "アクティブ化" でエラーが発生します。Adfv2QuickStartPipeline
パイプラインに関連付けられているトリガー。 複数のパイプラインをトリガーに関連付けるには、pipelineReference
セクションを追加します。このクイックスタートのパイプラインは
inputPath
とoutputPath
の 2 つのparameters
値を受け取ります。 これらのパラメーターの値をトリガーから渡します。
az datafactory trigger create コマンドを使用してトリガーを作成します。
az datafactory trigger create --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" --properties @MyTrigger.json
az datafactory trigger show コマンドを使用して、トリガーの状態が Stopped であることを確認します。
az datafactory trigger show --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger"
az datafactory trigger start コマンドを使用してトリガーを起動します。
az datafactory trigger start --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger"
az datafactory trigger show コマンドを使用して、トリガーの状態が Started であることを確認します。
az datafactory trigger show --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger"
az datafactory trigger-run query-by-factory コマンドを使用して、Azure CLI でトリガー実行を取得します。 トリガー実行に関する情報を取得するには、次のコマンドを定期的に実行します。
last-updated-after
とlast-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"
Note
スケジュール トリガーのトリガー時間は UTC タイムスタンプで指定します。 last-updated-after と last-updated-before も UTC タイムスタンプが想定されます。
Azure Portal でトリガー実行とパイプライン実行を監視するには、パイプライン実行の監視に関するセクションをご覧ください。
.NET SDK
このセクションでは、.NET SDK を使用してトリガーを作成、起動、監視する方法について説明します。 このサンプルの動作を確認する場合は、.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 Portal でトリガー実行とパイプライン実行を監視するには、パイプライン実行の監視に関するセクションをご覧ください。
Python SDK
このセクションでは、Python SDK を使用してトリガーを作成、起動、監視する方法について説明します。 このサンプルが機能するのを確認するには、まず「クイック スタート: 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 Portal でトリガー実行とパイプライン実行を監視するには、パイプライン実行の監視に関するセクションをご覧ください。
Azure Resource Manager テンプレート
Azure Resource Manager テンプレートを使用してトリガーを作成できます。 詳しい手順については、Azure Resource Manager テンプレートを使用した Azure データ ファクトリの作成に関する記事をご覧ください。
トリガーの開始時刻をパイプラインに渡す
Azure Data Factory バージョン 1 では、SliceStart
、SliceEnd
、WindowStart
、WindowEnd
システム変数を使用することによって、パーティション分割されたデータの読み取りと書き込みをサポートします。 現在のバージョンの Data Factory パイプラインおよび Azure Synapse Analytics パイプラインでは、パイプライン パラメーターを使用してこの動作を実現できます。 トリガーの開始時刻とスケジュールされた時刻を、パイプライン パラメーターの値として設定します。 次の例では、トリガーのスケジュールされた時刻が、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 |
トリガーが作成されるタイム ゾーン。 この設定は、startTime 、endTime 、schedule に影響します。 「サポートされているタイム ゾーンの一覧」を参照してください。 |
recurrence |
トリガーの繰り返し規則を指定する recurrence オブジェクト。 繰り返しオブジェクトは、frequency 、interval 、endTime 、count 、schedule 要素をサポートしています。 recurrence オブジェクトを定義する場合、frequency 要素は必須です。 recurrence オブジェクトの他の要素は省略可能です。 |
frequency |
トリガーが繰り返される頻度の単位。 サポートされている値は、minute, 、hour, 、day 、week 、month です。 |
interval |
トリガーの実行頻度を決定する、frequency 値の間隔を示す正の整数。 たとえば、interval が 3 で frequency が week である場合、トリガーは 3 週間ごとに繰り返されます。 |
schedule |
トリガーの繰り返しのスケジュール。 frequency 値が指定されたトリガーは、繰り返しのスケジュールに基づいて繰り返しが変更されます。 schedule プロパティには、分、時間、曜日、日にち、週番号に基づいた繰り返しの変更を指定します。 |
重要
UTC タイム ゾーンの場合、startTime
と endTime
は yyyy-MM-ddTHH:mm:ss
Z 形式に従う必要があります。その他のタイム ゾーンでは、startTime
と endTime
は yyyy-MM-ddTHH:mm:ss
形式に従います。
ISO 8601 標準により、タイムスタンプへの Z サフィックスは、日時を UTC タイム ゾーンとしてマークし、timeZone
フィールドを使用不可にするために使用されます。 UTC タイム ゾーンの Z サフィックスが欠落していると、トリガーの "アクティブ化" でエラーが発生します。
スキーマの既定値、制限、例
JSON プロパティ | Type | 必須 | 既定値 | 有効な値 | 例 |
---|---|---|---|---|---|
startTime |
String | はい | なし | ISO-8601 の日付/時刻 | UTC タイム ゾーンの場合: "startTime" : "2013-01-09T09:30:00-08:00Z" その他のタイム ゾーンの場合: "2013-01-09T09:30:00-08:00" |
timeZone |
String | はい | なし | タイム ゾーン値 | "UTC" |
recurrence |
オブジェクト | はい | なし | recurrence オブジェクト | "recurrence" : { "frequency" : "monthly", "interval" : 1 } |
interval |
数値 | いいえ | 1 | 1 ~ 1,000 | "interval":10 |
endTime |
String | はい | なし | 将来の時刻を表す日付/時刻の値 | UTC タイム ゾーンの場合: "endTime" : "2013-02-09T09:30:00-08:00Z" その他のタイム ゾーンの場合: "endTime" : "2013-02-09T09:30:00-08:00" |
schedule |
オブジェクト | いいえ | なし | schedule オブジェクト | "schedule" : { "minute" : [30], "hour" : [8,17] } |
タイム ゾーン オプション
スケジュール トリガーでサポートされているタイム ゾーンの一部を次に示します。
タイム ゾーン | UTC オフセット (夏時間なし) | timeZone 値 | 夏時間を観測する | タイムスタンプ形式 |
---|---|---|---|---|
協定世界時 | 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-09
の 14:00
になります。 Scheduler エンジンは、開始時刻から実行を計算します。 過去のインスタンスはすべて破棄されます。 エンジンは、将来発生する次回のインスタンスを使用します。 このシナリオでは、開始時刻が 2017-04-07
の 2:00pm
であるため、次回のインスタンスはその 2 日後、つまり 2017-04-09
の 2:00pm
になります。
startTime
値が 2017-04-05 14:00
または 2017-04-01 14:00
であっても、最初の実行時刻は同じです。 最初の実行後、以降の実行はスケジュールを使用して計算されます。 したがって、以降の実行は、2017-04-11
の 2:00pm
、2017-04-13
の 2:00pm
、2017-04-15
の 2:00pm
の順に続きます。
最後に、トリガーのスケジュールに時間または分が設定されていない場合は、最初の実行の時間または分が既定値として使用されます。
schedule プロパティ
schedule を使用することで、トリガーの実行回数を制限できます。 たとえば、月単位の頻度を指定したトリガーを 31 日にのみ実行するようにスケジュールすると、トリガーは 31 日がある月にのみ実行されます。
schedule によりトリガーの実行回数を増やすこともできます。 たとえば、月単位の頻度を指定したトリガーを月の 1 日と 2 日に実行するようにスケジュールすると、トリガーは月に 1 回ではなく、月の 1 日と 2 日に実行されます。
schedule
の複数の要素を指定した場合、最も大きいスケジュール設定から最も小さいスケジュール設定の順序で評価されます。 まず週番号が評価され、日にち、曜日、時間、分の順に評価されます。
次の表に、schedule
の要素の詳細を示します。
JSON 要素 | 説明 | 有効な値 |
---|---|---|
minutes |
トリガーを実行する時刻 (分)。 |
|
hours |
トリガーを実行する時刻 (時)。 |
|
weekDays |
トリガーが実行される曜日。 この値を指定できるのは、頻度が週単位の場合のみです。 |
|
monthlyOccurrences |
トリガーが実行される月の特定曜日。 この値を指定できるのは、頻度が月単位の場合のみです。 |
|
monthDays |
トリガーが実行される日にち。 この値を指定できるのは、頻度が月単位の場合のみです。 |
|
トリガーの繰り返しのスケジュールの例
このセクションでは、schedule
オブジェクトとその要素に注目して、繰り返しのスケジュールの例を示します。
各例は、interval
値が 1
であり、schedule の定義に従って frequency
に適切な値が指定されていることを前提としています。 たとえば、frequency
値が day
で、schedule
オブジェクトに monthDays
の変更を含めることはできません。 このような制限事項は、前のセクションの表に記載されています。
例 | 説明 |
---|---|
{"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 ではないトリガーを含めることと同等です。 frequency と interval に別の値を指定してこのスケジュールを使用すると、他のトリガーを作成できます。 たとえば、frequency 値が month の場合は、スケジュールは月に 1 回だけ実行され、frequency 値が day の場合は、毎日実行されます。 |
{"minutes":[0]} |
毎正時に実行されます。 このトリガーは、毎正時 (午前 0 時、午前 1 時、午前 2 時 (以降も同様)) に実行されます。 このスケジュールは、 frequency 値が hour で startTime 値が 0 分であるトリガー、または schedule がなく frequency 値が day であるトリガーと同等です。 frequency 値が week または month の場合、スケジュールはそれぞれ週に 1 日または月に 1 日だけ実行されます。 |
{"minutes":[15]} |
毎正時から 15 分後に実行されます。 このトリガーは、毎正時から 15 分後 (午前 0 時 15 分、午前 1 時 15 分、午前 2 時 15 分 (以降も同様)、最後が午後 11 時 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 分に実行されます。 |
関連するコンテンツ
- トリガーの詳細については、パイプラインの実行とトリガーに関する記事を参照してください。
- パイプラインでトリガー メタデータを参照する方法については、パイプライン実行でのトリガー メタデータの参照に関する記事を参照してください。