適用於:
Azure Data Factory
Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
本文提供有關排程觸發程序的資訊,以及建立、啟動和監視排程觸發程序的步驟。 如需了解其他類型的觸發程序,請參閱管線執行和觸發程序。
建立排程觸發程序時,您需為觸發程序指定排程,例如開始日期、週期、結束日期等,然後與管線建立關聯。 管道和觸發程序具有多對多關聯性。 多個觸發程序可以啟動單一管道。 單一觸發程序可以啟動多個管道。
下列各節提供以各種不同方式建立排程觸發程序的步驟。
Azure Data Factory 和 Azure Synapse 入口網站體驗
您可以建立排程觸發程序,將管線排定為定期執行,例如每小時、每天。
注意
如需有關建立管線和排程觸發程序的完整逐步解說,其中將觸發程序與管線建立關聯,並執行和監視管線,請參閱快速入門:使用 Data Factory UI 來建立資料處理站。
切換至 Data Factory 中的 [編輯] 索引標籤,或 Azure Synapse Analytics 中的 [整合] 索引標籤。
選取功能表上的 [觸發程序],然後選取 [新增/編輯]。
在 [新增觸發程序] 頁面上,選取 [選擇觸發程序],然後選取 [新增]。
在 [新的觸發程序] 頁面上:
確認已針對 [類型] 選取 [排程]。
在 [開始日期] 中,指定觸發程序的開始日期時間。 預設為目前的日期時間,以國際標準時間 (UTC) 表示。
指定建立觸發程序的時區。 時區設定套用至 [進階週期選項] 中的 [開始日期]、[結束日期] 和 [排程執行時間]。 變更時區設定不會自動變更開始日期。 請確定開始日期在指定的時區中正確。 觸發程序的排程運行時間會被視為在開始日期後。 (確定開始日期至少比運行時間少 1 分鐘,否則會在下一次週期中觸發管線。)
注意
在遵守日光節約的時區,如果週期設定為日或更長,則會考量一年兩次的變更,自動調整觸發時間。 若不採用日光節約變更,選取未遵守日光節約的時區,例如 UTC。
日光節約調整僅適用於週期設定為日或更長的觸發程序。 如果觸發程序設定為小時或分鐘頻率,則會繼續定期引發。
指定觸發程序的 [週期]。 請從下拉式清單 (每分鐘、每小時、每天、每週或每月) 中選取其中一個值。 在文字方塊中輸入乘數。 例如,如果您想要讓觸發程序每隔 15 分鐘執行一次,您可以選取 [每分鐘],然後在文字方塊中輸入 15。
在 [週期] 中,如果您從下拉式清單中選擇日、週或月,您可以找到 [進階週期選項]。
若要指定結束日期時間,請選取 [指定結束日期]。 指定結束資訊,然後選取 [確定] 。
每次執行管線都會產生關聯成本。 如果您是在進行測試,您或許會想要確保只觸發管線幾次。 不過,請確定發佈時間與結束時間之間有足夠的時間可供管線執行。 只有在發佈解決方案之後,觸發程序才會生效,而不是在 UI 中儲存觸發程序時。
在 [新增觸發程序] 視窗中,在 [進階] 選項中選取 [是],並選取 [確定]。 您可以稍後使用此核取方塊來停用觸發程序。
在 [新增觸發程序] 視窗中,檢閱警告訊息,並選取 [確定]。
按一下 [全部發佈] 以發佈變更。 直到發佈變更,觸發程序才會開始觸發管線執行。
切換至左側的 [管線執行] 索引標籤,並選取 [重新整理] 以重新整理清單。 您會看到所排定之觸發程序所觸發的管線回合。 請留意 [觸發方式] 資料行中的值。 如果您使用 [立即觸發] 選項,就會在清單中看到手動觸發程序回合。
切換至 [觸發程序執行]>[排程] 檢視。
Azure PowerShell
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱安裝 Azure PowerShell (部分機器翻譯)。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
本節說明如何使用 Azure PowerShell 來建立、啟動及監視排程觸發程序。 若要查看此範例如何運作,請先完成快速入門:使用 Azure PowerShell 來建立資料處理站。 然後,將下列程式碼新增至 main 方法中,以建立並啟動一個每隔 15 分鐘執行一次的排程觸發程序。 此觸發程序會與您在快速入門中所建立之名為 Adfv2QuickStartPipeline 的管線關聯。
必要條件
- Azure 訂用帳戶。 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
- Azure PowerShell。 請依照使用 PowerShellGet 在 Windows 上安裝 Azure PowerShell 中的指示操作。
範例指令碼
在 *C:\ADFv2QuickStartPSH* 資料夾中,使用下列內容建立名為 MyTrigger.json 的 JSON 檔案:
重要
在您儲存 JSON 檔案之前,請先將
startTime元素的值設定為目前的 UTC 時間。 將endTime元素的值設定為目前 UTC 時間的一小時之後。{ "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元素值的一小時之後。 因此,觸發程序在開始時間之後的 15 分鐘、30 分鐘及 45 分鐘執行管線。 請別忘記將開始時間更新為目前的 UTC 時間,並將結束時間更新為開始時間的一小時之後。重要
針對UTC時區,
startTime和endTime必須遵循yyyy-MM-ddTHH:mm:ssZ 格式。對於其他時區,startTime和endTime遵循yyyy-MM-ddTHH:mm:ss格式。根據 ISO 8601 標準,時間戳記的
Z尾碼將日期時間標示為 UTC 時區,使timeZone欄位變得無用。 UTC 時區遺漏Z尾碼時,將導致觸發程序啟用時發生錯誤。觸發程序與
Adfv2QuickStartPipeline管線相關聯。 若要將多個管線與觸發程序建立關聯,請新增更多個pipelineReference區段。快速入門中的管線會採用兩個
parameters值:inputPath和outputPath。 您從觸發程序傳遞這些參數的值。
使用 Set-AzDataFactoryV2Trigger Cmdlet 建立觸發程序:
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"使用 Get-AzDataFactoryV2Trigger Cmdlet,確認觸發程序的狀態為 Stopped:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"使用 Start-AzDataFactoryV2Trigger Cmdlet 啟動觸發程序:
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"使用 Get-AzDataFactoryV2Trigger Cmdlet,確認觸發程序的狀態為 Started:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"使用 Get-AzDataFactoryV2TriggerRun Cmdlet,取得 Azure PowerShell 中的觸發程序執行。 若要取得有關觸發程序回合的資訊,請定期執行以下命令。 更新
TriggerRunStartedAfter和TriggerRunStartedBefore值,以符合觸發程序定義中的值:Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"注意
排程觸發程序的觸發時間以 UTC 時間戳記指定。
TriggerRunStartedAfter和TriggerRunStartedBefore也預期 UTC時間戳記。若要在 Azure 入口網站中監視觸發程序回合和管線回合,請參閱監視管線回合。
Azure CLI
本節說明如何使用 Azure CLI 來建立、啟動及監視排程觸發程序。 若想看到此範例實際運作,請先完成快速入門:透過使用 Azure CLI 來建立 Azure Data Factory。 然後,遵循步驟來建立並啟動排程觸發程序,每 15 分鐘執行一次。 此觸發程序會與您在快速入門中所建立之名為 Adfv2QuickStartPipeline 的管線關聯。
必要條件
在 Azure Cloud Shell 中使用 Bash 環境。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell。
若要在本地執行 CLI 參考命令,請安裝 Azure CLI。 若您在 Windows 或 macOS 上執行,請考慮在 Docker 容器中執行 Azure CLI。 如需詳細資訊,請參閱〈如何在 Docker 容器中執行 Azure CLI〉。
如果您使用的是本機安裝,請使用 az login 命令,透過 Azure CLI 來登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱 使用 Azure CLI 向 Azure 進行驗證。
出現提示時,請在第一次使用時安裝 Azure CLI 延伸模組。 如需擴充功能的詳細資訊,請參閱 使用和管理 Azure CLI 的擴充功能。
執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
範例指令碼
在工作目錄中,使用觸發程式的屬性建立名為 MyTrigger.json 的 JSON 檔案。 針對此範例,請使用下列內容:
重要
在您儲存 JSON 檔案之前,請先將
startTime元素的值設定為目前的 UTC 時間。 將endTime元素的值設定為目前 UTC 時間的一小時之後。{ "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元素值的一小時之後。 因此,觸發程序在開始時間之後的 15 分鐘、30 分鐘及 45 分鐘執行管線。 請別忘記將開始時間更新為目前的 UTC 時間,並將結束時間更新為開始時間的一小時之後。重要
針對UTC時區,
startTime和 endTime 必須遵循yyyy-MM-ddTHH:mm:ssZ 格式。對於其他時區,startTime和endTime遵循yyyy-MM-ddTHH:mm:ss格式。根據 ISO 8601 標準,時間戳記的 Z 尾碼將日期時間標示為 UTC 時區,使
timeZone欄位變得無用。 如果 UTC 時區遺漏 Z 後綴,則觸發程序啟用時,結果是錯誤。觸發程序與
Adfv2QuickStartPipeline管線相關聯。 若要將多個管線與觸發程序建立關聯,請新增更多個pipelineReference區段。快速入門中的管線會採用兩個
parameters值:inputPath和outputPath。 您從觸發程序傳遞這些參數的值。
使用 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"注意
排程觸發程序的觸發時間以 UTC 時間戳記指定。 last-updated-after 和 last-updated-before 也需要 UTC 時間戳記。
若要在 Azure 入口網站中監視觸發程序回合和管線回合,請參閱監視管線回合。
.NET SDK
本節說明如何使用 .NET SDK 來建立、啟動及監視觸發程序。 若要查看此範例如何運作,請先完成快速入門:使用 .NET SDK 來建立資料處理站。 然後,將下列程式碼新增至 main 方法中,以建立並啟動一個每隔 15 分鐘執行一次的排程觸發程序。 此觸發程序會與您在快速入門中所建立之名為 Adfv2QuickStartPipeline 的管線關聯。
若要建立並啟動一個每隔 15 分鐘執行一次的排程觸發程序,請將下列程式碼新增至 main 方法中:
// 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 入口網站中監視觸發程序回合和管線回合,請參閱監視管線回合。
Python SDK
本節說明如何使用 Python SDK 來建立、啟動及監視觸發程序。 若要查看此範例運作,請先完成 快速入門:使用 Python SDK 建立資料處理站。 然後,將下列程式碼新增至 Python 指令碼中的 monitor the pipeline run 程式碼區塊之後。 此程式碼會建立一個在指定的開始和結束時間之間,每隔 15 分鐘執行一次的排程觸發程序。 請將 start_time 變數更新為目前的 UTC 時間,並將 end_time 變數更新為目前 UTC 時間的一小時之後。
# 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 入口網站中監視觸發程序回合和管線回合,請參閱監視管線回合。
Azure Resource Manager 範本
您可以使用 Azure Resource Manager 範本來建立觸發程序。 如需逐步指示,請參閱使用 Azure Resource Manager 範本建立 Azure Data Factory。
將觸發程序開始時間傳遞給管線
第 1 版 Azure Data Factory 支援使用下列系統變數 SliceStart、SliceEnd、WindowStart 和 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 |
建立觸發程序的時區。 這個設定會影響 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:ssZ 格式。對於其他時區,startTime 和 endTime 遵循 yyyy-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 物件 | "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 物件 | "schedule" : { "minute" : [30], "hour" : [8,17] } |
時區選項
以下是排程觸發程序支援的一些時區。
| 時區 | UTC 時差 (非日光節約) | timeZone 值 | 遵守日光節約 | 時間戳記格式 |
|---|---|---|---|---|
| Coordinated Universal Time | 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 值 | 週期性無排程 | 週期性有排程 |
|---|---|---|
| 開始時間已過去 | 計算開始時間之後的第一個未來執行時間,並在該時間執行。 根據從上次執行時間算出的時間來執行後續的執行作業。 請參閱本表後面的範例。 |
觸發程序會在「到了」指定的開始時間才啟動。 第一次執行是根據從開始時間算出的排程。 根據週期排程執行後續的執行作業。 |
| 開始時間在未來或現在 | 在指定的開始時間執行一次。 根據從上次執行時間算出的時間來執行後續的執行作業。 |
觸發程序會在「到了」指定的開始時間才啟動。 第一次執行是根據從開始時間算出的排程。 根據週期排程執行後續的執行作業。 |
我們來看看一個範例:當開始時間在過去、具有週期性但無排程時,會發生什麼情況。 假設目前時間是 2017-04-08 13:00,開始時間是 2017-04-07 14:00,而週期是每隔兩天。 (recurrence 值是藉由將 frequency 屬性設定為 day,並將 interval 屬性設定為 2來定義。)請注意,startTime 值是過去的時間,發生在目前時間之前。
根據這些條件,第一次執行在 2017-04-0914:00。 排程器引擎會從開始時間計算執行週期。 過去的任何執行個體都會遭到捨棄。 引擎會使用下一個在未來發生的執行個體。 在此案例中,開始時間是 2017-04-072:00pm,因此下一個執行個體在該時間之後的兩天,亦即 2017-04-092:00pm。
即使 startTime 值為 2017-04-05 14:00 或 2017-04-01 14:00,第一次執行時間仍然相同。 在第一次執行之後,就會使用排程來算出後續的執行時間。 因此,後續的執行在 2017-04-112:00pm、2017-04-132:00pm、2017-04-152:00pm,依此類推。
最後,當未在觸發程序的排程中設定小時或分鐘時,將會使用第一次執行的小時或分鐘作為預設值。
schedule 屬性
使用排程可以限制觸發程序的執行次數。 例如,如果將每月執行的觸發程序排定為只在 31 日執行,則該觸發程序將只會在有第 31 天的月份執行。
排程也可以增加觸發程序的執行次數。 例如,如果將每月執行的觸發程序排定在月份的 1 日和 2 日執行,該觸發程序就會在月份的第 1 天和第 2 天執行,而不是一個月執行一次。
指定多個 schedule 元素時,評估順序會從最大到最小排程設定。 評估會從週數開始,然後依序是月日、星期幾、小時,最後是分鐘。
下表詳細說明 schedule 元素。
| JSON 元素 | 描述 | 有效值 |
|---|---|---|
minutes |
一小時內觸發程序執行的分鐘數。 |
|
hours |
一天內觸發程序執行的小時數。 |
|
weekDays |
觸發程序在一週中的執行日。 此值只能與 weekly 頻率搭配指定。 |
|
monthlyOccurrences |
觸發程序在一個月中的執行日。 此值只能與 monthly 頻率搭配指定。 |
|
monthDays |
觸發程序在一個月中的執行日。 此值只能與 monthly 頻率搭配指定。 |
|
觸發程序週期排程的範例
本節提供週期排程的範例,並將焦點放在 schedule 物件及其元素。
這些範例會假設 interval 值為 1,且 frequency 值根據排程定義是正確的。 例如,您不能有 frequency 的 day 值,而且在 monthDays 物件中也有 schedule 修改。 在上一節的表格中已提到這類限制。
| 範例 | 描述 |
|---|---|
{"hours":[5]} |
在每天的上午 5:00 執行。 |
{"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]} |
每小時執行一次。 此觸發程序每小時執行一次。 已指定值時,分鐘會受 startTime 值控制。 如果未指定值,分鐘就會受建立時間控制。 例如,如果開始時間或建立時間 (無論套用哪一個) 為下午 12:25,觸發程序就會在 00:25、01:25、02:25、… 及 23:25 執行。此排程相當於 frequency 的 hour 值觸發程序、interval 的 1值,且沒有 schedule。 此排程可以與不同的 frequency 和 interval 值搭配使用,以建立其他觸發程序。 例如,當 frequency 值為 month 時,排程一個月只會執行一次,而不是像 frequency 值為 day 時會每天執行。 |
{"minutes":[0]} |
在每小時整點執行。 此觸發程序會在每小時整點執行,從上午 12:00 開始,接著在上午 1:00、上午 2:00,依此類推。 此排程相當於 frequency 的 hour 值的觸發程序,以及零分鐘 startTime 值,或沒有 schedule,但 frequency 的 day值。 如果 frequency 值為 week 或 month,排程將只會分別在每週的一天或每個月的一天執行。 |
{"minutes":[15]} |
在每小時的 15 分執行。 此觸發程序會在每小時的 15 分執行,從上午 00:15 開始,接著在上午 1:15、上午 2:15,依此類推,並在下午 11:15 結束。 |
{"hours":[17], "weekDays":["saturday"]} |
在每週星期六的下午 5:00 執行。 |
{"hours":[17], "weekDays":["monday", "wednesday", "friday"]} |
在每週星期一、星期三及星期五的下午 5:00 執行。 |
{"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:00 與下午 4:45 之間每隔 15 分鐘執行一次。 |
{"weekDays":["tuesday", "thursday"]} |
在星期二和星期四的指定開始時間執行。 |
{"minutes":[0], "hours":[6], "monthDays":[28]} |
在每個月的第 28 天上午 6:00 點執行 (假設 frequency 的 month 值)。 |
{"minutes":[0], "hours":[6], "monthDays":[-1]} |
在月份最後一天的上午 6:00 執行。 若要在月份的最後一天執行觸發程序,請使用 -1,而不要使用 28、29、30 或 31。 |
{"minutes":[0], "hours":[6], "monthDays":[1,-1]} |
在每個月第一天和最後一天的上午 6:00 執行。 |
{monthDays":[1,14]} |
在每個月第一天和第十四天的指定開始時間執行。 |
{"minutes":[0], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1}]} |
在每個月第一個星期五的上午 5:00 執行。 |
{"monthlyOccurrences":[{"day":"friday", "occurrence":1}]} |
在每個月第一個星期五的指定開始時間執行。 |
{"monthlyOccurrences":[{"day":"friday", "occurrence":-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}]} |
在每個月第五個星期五的指定開始時間執行。 如果月份中沒有第五個星期五,管線就不會執行,由於它已排定為只在第五個星期五執行。 若要在月份中最後一個出現的星期五執行觸發程序,請考慮使用 -1 而不是 5 來作為 occurrence 的值。 |
{"minutes":[0,15,30,45], "monthlyOccurrences":[{"day":"friday", "occurrence":-1}]} |
在月份中最後一個星期五每隔 15 分鐘執行一次。 |
{"minutes":[15,45], "hours":[5,17], "monthlyOccurrences":[{"day":"wednesday", "occurrence":3}]} |
在每個月第三個星期三的上午 5:15、上午 5:45、下午 5:15 及下午 5:45 執行。 |
相關內容
- 如需觸發程序的詳細資訊,請參閱管線執行和觸發程序。
- 若要了解如何在管線中參考觸發程序中繼資料,請參閱在管線執行中參考觸發程序中繼資料。