Создание триггера, который запускает конвейер по расписанию
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описан триггер расписания и шаги по его созданию, запуску и мониторингу. Сведения о других типах триггеров см. в статье Выполнение конвейера и триггеры в фабрике данных Azure.
При создании триггера расписания необходимо указать расписание, например дату начала, повторения или окончания триггера и связать его с конвейером. Конвейеры и триггеры имеют связь "многие ко многим". Несколько триггеров могут запускать один конвейер. Один триггер может запускать несколько конвейеров.
В следующих разделах приведены шаги по созданию триггера расписания различными методами.
Фабрика данных Azure и портал Azure Synapse
Вы можете создать триггер расписания для периодического выполнения конвейера, например почасовой или ежедневной.
Примечание.
Полное пошаговое руководство по созданию конвейера и триггеру расписания, которое связывает триггер с конвейером и выполняет и отслеживает конвейер, см . в кратком руководстве по созданию фабрики данных с помощью пользовательского интерфейса фабрики данных.
Перейдите на вкладку "Изменить " в Фабрике данных или вкладку "Интеграция " в Azure Synapse.
Выберите Trigger (Запустить) в меню, а затем выберите New/Edit (Создать/изменить).
На странице "Добавить триггеры" выберите "Выбрать триггер", а затем нажмите кнопку "Создать".
На странице создания триггера:
Убедитесь, что в качестве параметра Тип выбрано Расписание.
Укажите дату и время запуска триггера в поле Дата начала. По умолчанию будет задано текущее значение даты и времени в формате UTC.
Укажите часовой пояс, в котором создается триггер. Параметр часового пояса применяется к дате начала, дате окончания и времени выполнения расписания в расширенных параметрах повторения. Изменение параметра часового пояса не изменяет дату начала автоматически. Убедитесь, что дата начала указана правильно в указанном часовом поясе. Время запланированного выполнения триггера считается датой начала. (Убедитесь, что дата начала не менее 1 минуты меньше времени выполнения или в противном случае активирует конвейер в следующем повторении.)
Примечание.
Для часовых поясов, которые отслеживают летнее время, активируйте автоматическое изменение в два раза в год, если для повторения задано значение Days или более поздней версии. Чтобы отказаться от изменения дневного света, выберите часовой пояс, который не наблюдает дневного света, например UTC.
Корректировка летнего времени выполняется только для триггера с параметром повторения в "Дни " или выше. Если для триггера задана частота "Часы " или "Минуты" , она продолжает выполняться через регулярные интервалы.
Задайте интервал повторения для триггера. Выберите одно из значений в раскрывающемся списке (каждую минуту, почасовую, ежедневную, еженедельную или ежемесячную). Введите множитель в текстовом поле. Например, если вы хотите, чтобы триггер выполнялся один раз в течение 15 минут, выберите каждую минуту и введите 15 в текстовом поле.
В разделе "Повторение", если в раскрывающемся списке выбраны дни, недели или месяцы , можно просмотреть дополнительные параметры повторения.
Чтобы указать время окончания, выберите "Указать дату окончания". Укажите сведения о конце и нажмите кнопку "ОК".
Стоимость связана с каждым запуском конвейера. При тестировании может потребоваться убедиться, что конвейер активируется всего несколько раз. Но при этом обязательно оставьте достаточно времени, чтобы конвейер успел запуститься между временем публикации и временем окончания. Триггер вступит в силу только после публикации решения, а не сразу при сохранении триггера в пользовательском интерфейсе.
В окне "Новый триггер" выберите "Да" в параметре "Активировано" и нажмите кнопку "ОК". С помощью этого флажка позже можно деактивировать этот триггер.
В окне "Новый триггер" просмотрите предупреждение и нажмите кнопку "ОК".
Выберите Опубликовать все, чтобы опубликовать изменения. Пока вы не опубликуете изменения, триггер не будет активировать запуски конвейера.
Перейдите на вкладку "Конвейер выполняется " слева, а затем выберите "Обновить ", чтобы обновить список. Вы увидите выполнения конвейера, активированные запланированным триггером. Обратите внимание на значения в столбце Активировано. Если вы используете параметр "Активировать сейчас ", в списке будет запущен триггер вручную.
Перейдите в режим "Триггер" для просмотра>расписания.
Azure PowerShell
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Сведения о начале работы см. в статье "Установка Azure PowerShell". Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.
В этом разделе показано, как использовать Azure PowerShell для создания, запуска и мониторинга триггера расписания. Чтобы просмотреть этот пример работы, сначала ознакомьтесь с кратким руководством по созданию фабрики данных с помощью Azure PowerShell. Затем добавьте следующий код в метод Main, который создает и запускает триггер расписания, выполняемый каждые 15 минут. Триггер связан с конвейером, который Adfv2QuickStartPipeline
создается в рамках краткого руководства.
Необходимые компоненты
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
- Azure PowerShell. Выполните инструкции из руководства Install Azure PowerShell on Windows with PowerShellGet (Установка Azure PowerShell в Windows c помощью PowerShellGet).
Пример кода
Создайте JSON-файл с именем MyTrigger.json в папке *C:\ADFv2QuickStartPSH* со следующим содержимым:
Внимание
Перед сохранением 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
элемента задано значение, аinterval
для элементаMinute
задано значение15
. Таким образом, триггер запускает конвейер каждые 15 минут в период между временем начала и окончания.Элемент
timeZone
задает часовой пояс, в котором создается триггер. Этот параметр влияет как на, такstartTime
иendTime
.Элемент
endTime
составляет один час после значенияstartTime
элемента. Таким образом, триггер запускает конвейер через 15, 30 и 45 минут после времени начала. Не забудьте обновить время начала до текущего времени в формате UTC и времени окончания до одного часа после начала.Внимание
Для часового пояса
startTime
UTC иendTime
должны соответствовать форматуyyyy-MM-ddTHH:mm:ss
Z. Для других часовых поясовstartTime
иendTime
следуйте форматуyyyy-MM-ddTHH:mm:ss
.В стандарте
Z
ISO 8601 суффикс используется для метки времени помечания даты и часового пояса UTC и отрисовкиtimeZone
поля без использования.Z
Если суффикс для часового пояса UTC отсутствует, результатом является ошибка при активации триггера.Триггер связан с конвейером
Adfv2QuickStartPipeline
. Чтобы связать несколько конвейеров с триггером, добавьте дополнительныеpipelineReference
разделы.Конвейер в кратком руководстве принимает два
parameters
значения:inputPath
иoutputPath
. Значения этих параметров передаются из триггера.
Создайте триггер с помощью командлета Set-AzDataFactoryV2Trigger:
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Убедитесь, что триггер находится в состоянии Остановлено, используя командлет Get AzDataFactoryV2Trigger:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Запустите триггер с помощью командлета: Start-AzDataFactoryV2Trigger:
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Убедитесь, что триггер находится в состоянии Запущено, используя командлет:Get-AzDataFactoryV2Trigger:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Получите сведения о выполнениях триггера в Azure PowerShell с помощью командлета Get-AzDataFactoryV2TriggerRun. Для этого следующую команду нужно выполнять периодически.
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 с помощью Azure CLI. Затем выполните действия, чтобы создать и запустить триггер расписания, который выполняется каждые 15 минут. Триггер связан с конвейером, который Adfv2QuickStartPipeline
создается в рамках краткого руководства.
Необходимые компоненты
Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.
Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.
Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.
Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.
Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.
Пример кода
В рабочей папке создайте JSON-файл с именем MyTrigger.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
элемента задано значение, аinterval
для элементаMinute
задано значение15
. Таким образом, триггер запускает конвейер каждые 15 минут в период между временем начала и окончания.Элемент
timeZone
задает часовой пояс, в котором создается триггер. Этот параметр влияет как на, такstartTime
иendTime
.Элемент
endTime
составляет один час после значенияstartTime
элемента. Таким образом, триггер запускает конвейер через 15, 30 и 45 минут после времени начала. Не забудьте обновить время начала до текущего времени в формате UTC и времени окончания до одного часа после начала.Внимание
Для часового пояса
startTime
UTC и endTime необходимо следовать форматуyyyy-MM-ddTHH:mm:ss
Z. Для других часовых поясовstartTime
иendTime
следуйте форматуyyyy-MM-ddTHH:mm:ss
.В стандарте ISO 8601 суффикс Z используется для метки времени помечания даты и часового пояса UTC и отрисовки
timeZone
поля без использования. Если суффикс Z отсутствует для часового пояса UTC, результатом является ошибка при активации активации.Триггер связан с конвейером
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:
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:
az datafactory trigger show --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger"
Получение триггера выполняется в Azure CLI с помощью команды az datafactory trigger-run query-by-factory . Чтобы получить сведения о выполнениях триггера, периодически выполняйте следующую команду.
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. После последнего обновления и последнего обновления до этого также ожидает метку времени UTC.
Сведения о том, как отслеживать выполнения триггера и конвейера на портале Azure, см. в разделе Мониторинг конвейера.
Пакет SDK для .NET
В этом разделе показано, как использовать пакет SDK для .NET для создания, запуска и мониторинга триггера. Чтобы просмотреть этот пример работы, сначала ознакомьтесь с кратким руководством по созданию фабрики данных с помощью пакета SDK для .NET. Затем добавьте следующий код в метод 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, см. в разделе Мониторинг конвейера.
Пакет SDK для Python
В этом разделе показано, как использовать пакет SDK для Python для создания, запуска и мониторинга триггера. Чтобы просмотреть этот пример работы, сначала ознакомьтесь с кратким руководством по созданию фабрики данных с помощью пакета SDK для Python. Затем добавьте следующий блок кода после monitor the pipeline run
блока кода в скрипте Python. Этот код создает триггер расписания, который выполняется каждые 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" с помощью шаблона Azure Resource Manager.
Передача времени запуска триггера в конвейер
Фабрика данных Azure версии 1 поддерживает чтение или запись секционированных данных с помощью системных переменныхSliceStart
, SliceEnd
WindowStart
иWindowEnd
. В текущей версии конвейеров Фабрики данных и 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
элемента. Если конвейер не принимает никаких параметров, необходимо включить пустое определение JSON для parameters
свойства.
Общее представление схемы
В следующей таблице представлен общий обзор основных элементов схемы, связанных с повторением и планированием триггера.
Свойство JSON | Description |
---|---|
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 элементы , , endTime interval count и schedule элементы. При определении frequency объекта повторения требуется элемент. Другие элементы объекта recurrence являются необязательными. |
frequency |
Единица частоты, с которой выполняется триггер. Поддерживаемые значения включают minute, hour, day , week и month . |
interval |
Положительное целое число, указывающее интервал для frequency значения, которое определяет частоту выполнения триггера. Например, если interval и есть 3 frequency week , триггер повторяется каждые 3 недели. |
schedule |
Расписание повторения для триггера. Триггер с указанным frequency значением изменяет его повторение в зависимости от расписания повторения. Свойство schedule содержит изменения для повторения, основанные на минутах, часах, днях недели, днях месяцах и номере недели. |
Внимание
Для часового пояса startTime
UTC и endTime
должны соответствовать формату yyyy-MM-ddTHH:mm:ss
Z. Для других часовых поясов startTime
и endTime
следуйте формату yyyy-MM-ddTHH:mm:ss
.
В стандарте ISO 8601 суффикс Z используется для метки времени помечания даты и часового пояса UTC и отрисовки timeZone
поля без использования. Если суффикс Z отсутствует для часового пояса UTC, результатом является ошибка при активации активации.
Параметры схемы по умолчанию, ограничения и примеры
Свойство JSON | Тип | Обязательное поле | Default value | Допустимые значения | Пример |
---|---|---|---|---|---|
startTime |
Строка | Да | Не допускается | Дата и время по спецификации ISO-8601 | Для часового пояса UTC: "startTime" : "2013-01-09T09:30:00-08:00Z" Для других часовых поясов: "2013-01-09T09:30:00-08:00" |
timeZone |
Строка | Да | Не допускается | Значения часового пояса | "UTC" |
recurrence |
Object | Да | Не допускается | Объект recurrence | "recurrence" : { "frequency" : "monthly", "interval" : 1 } |
interval |
Число | No | 1 | 1–1000 | "interval":10 |
endTime |
Строка | Да | Не допускается | Значение даты и времени, представляющее время в будущем | Для часового пояса UTC: "endTime" : "2013-02-09T09:30:00-08:00Z" Для других часовых поясов: "endTime" : "2013-02-09T09:30:00-08:00" |
schedule |
Object | No | нет | Объект schedule | "schedule" : { "minute" : [30], "hour" : [8,17] } |
Параметр часового пояса
Ниже приведены некоторые часовые пояса, поддерживаемые для триггеров расписания.
Time zone | Смещение UTC (не дневное освещение) | Значение часового пояса | Наблюдение за дневным освещением | Формат метки времени |
---|---|---|---|---|
Всемирное координированное время | 0 | UTC |
No | 'yyyy-MM-ddTHH:mm:ssZ' |
Тихоокеанское поясное время (PT) | -8 | Pacific Standard Time |
Да | 'yyyy-MM-ddTHH:mm:ss' |
Центральное поясное время (СТ) | -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 |
No | 'yyyy-MM-ddTHH:mm:ss' |
Китайское время (зима) | +8 | China Standard Time |
No | 'yyyy-MM-ddTHH:mm:ss' |
Этот список неполный. Полный список параметров часового пояса см . на странице создания триггера на портале.
Свойство startTime
В следующей таблице показано, как startTime
свойство управляет запуском триггера.
Значение startTime | Повторение без расписания | Повторение с расписанием |
---|---|---|
Время начала в прошлом | Вычисляется время первого выполнения, относящееся к будущему времени, после указанного времени начала. Последующие выполнения вычисляются с учетом времени предыдущего выполнения. Пример представлен после этой таблицы. |
Триггер выполняется не раньше указанного времени начала. Первое выполнение производится по расписанию, которое отсчитывается от времени начала. Последующие выполнения производятся по расписанию повторов. |
Время начала в будущем или в настоящем | Выполняется первый раз в указанное время начала. Последующие выполнения вычисляются с учетом времени предыдущего выполнения. |
Триггер выполняется не раньше указанного времени начала. Первое выполнение производится по расписанию, которое отсчитывается от времени начала. Последующие выполнения производятся по расписанию повторов. |
Рассмотрим, как работает триггер, для которого время начала установлено в прошлом, указан параметр recurrence и отсутствует параметр schedule. Предположим, что текущее время — 2017-04-08 13:00
, время начала — 2017-04-07 14:00
, а повторение — каждые два дня. recurrence
(Значение определяется путем задания frequency
свойства day
в значение .interval
2
) Обратите внимание, что startTime
значение находится в прошлом и возникает до текущего времени.
В этих условиях первое выполнение происходит 2017-04-09
в 14:00
. От времени начала ядро планировщика отсчитывает время повторных выполнений. Выполнения, которые приходятся на прошлое, игнорируются. Ядро берет очередной случай выполнения, который приходится на будущее. В данном сценарии время начала имеет значение 2017-04-07
в 2:00pm
, поэтому следующее выполнение состоится через 2 дня от этого времени начала, то есть 2017-04-09
в 2:00pm
.
Первое время выполнения совпадает, даже если startTime
значение равно 2017-04-05 14:00
или 2017-04-01 14:00
. Все последующие выполнения после первого вычисляются по расписанию (свойство schedule). Таким образом, последующие выполнения проходят 2017-04-11
, в 2:00pm
, затем 2017-04-13
в 2:00pm
, затем 2017-04-15
в 2:00pm
и т. д.
Наконец, если часы или минуты не заданы в расписании триггера, в качестве значений по умолчанию используются часы или минуты первого выполнения.
Свойство schedule
Использование расписания может ограничить количество выполнения триггеров. Например, если триггеру назначена ежемесячная частота и параметр schedule, который запускает триггер только в 31-й день месяца, он будет выполняться только в те месяцы, в которых есть 31 день.
Расписание также может расширить количество выполнения триггеров. Например, триггер с ежемесячной частотой и параметром schedule, который запускает триггер в 1 и 2 день месяца, будет выполняться в первый и второй дни месяца, а не раз в месяц.
Если задано несколько schedule
элементов, порядок оценки — от самого большого до наименьшего параметра расписания. Оценка начинается с номера недели, а затем месяца, дня недели, часа и, наконец, минуты.
В следующей таблице подробно описаны schedule
элементы.
Элемент JSON | Description | Допустимые значения |
---|---|---|
minutes |
Минуты часа, в которые будет выполняться триггер. |
|
hours |
Часы дня, в которые будет выполняться триггер. |
|
weekDays |
Дни недели, по которым выполняется триггер. Значение можно указать только с еженедельной частотой. |
|
monthlyOccurrences |
Дни месяца, по которым выполняется триггер. Значение можно указать только с ежемесячной частотой. |
|
monthDays |
Дни месяца, по которым выполняется триггер. Значение можно указать только с ежемесячной частотой. |
|
Примеры расписаний повторения триггеров
В этом разделе приведены примеры расписаний повторения и сосредоточение внимания на schedule
объекте и его элементах.
В примерах предполагается, что interval
это значение 1
и что frequency
значение правильно в соответствии с определением расписания. Например, нельзя иметь frequency
значение day
, а также monthDays
изменить объект schedule
. Такие ограничения указаны в таблице в предыдущем разделе.
Пример | Description |
---|---|
{"hours":[5]} |
Выполняется каждый день в 05:00. |
{"minutes":[15], "hours":[5]} |
Выполняется каждый день в 05:15. |
{"minutes":[15], "hours":[5,17]} |
Выполняется каждый день в 05:15 и 16:15. |
{"minutes":[15,45], "hours":[5,17]} |
Выполняется каждый день в 05:15, 05:45, 16:15 и 16: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, 13:00, 14:00 и т. д. Это расписание эквивалентно триггеру со значением hour и startTime значением нуля минут или нетschedule , кроме frequency значенияday .frequency frequency Если значение равно week или month , расписание выполняется один день в неделю или один день в месяц только соответственно. |
{"minutes":[15]} |
Задание выполняется через 15 минут после наступления каждого часа. Этот триггер выполняется через 15 минут после наступления каждого часа, начиная с 00:15, 01:15, 02:15 и т. д. и заканчивая в 23:15. |
{"hours":[17], "weekDays":["saturday"]} |
Задание выполняется в 17:00 каждую субботу. |
{"hours":[17], "weekDays":["monday", "wednesday", "friday"]} |
Задание выполняется в 17:00 в каждые понедельник, среду и пятницу. |
{"minutes":[15,45], "hours":[17], "weekDays":["monday", "wednesday", "friday"]} |
Задание выполняется в 17:15 и 17: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"]} |
Задание выполняется каждые 15 минут в период с 09:00 до 16:45 в каждый рабочий день. |
{"weekDays":["tuesday", "thursday"]} |
Задание выполняется по вторникам и четвергам в указанное время начала. |
{"minutes":[0], "hours":[6], "monthDays":[28]} |
Запустите в 6:00 в 28-й день каждого месяца (при условии frequency значения month ). |
{"minutes":[0], "hours":[6], "monthDays":[-1]} |
Задание выполняется в 06:00 в последний день месяца. Чтобы триггер запускался в последний день месяца, используйте "-1" вместо значения 28, 29, 30 или 31. |
{"minutes":[0], "hours":[6], "monthDays":[1,-1]} |
Задание выполняется в 06:00 в первый и последний день каждого месяца. |
{monthDays":[1,14]} |
Задание выполняется в первый и 14-й день каждого месяца в указанное время начала. |
{"minutes":[0], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1}]} |
Задание выполняется в первую пятницу каждого месяца в 05:00. |
{"monthlyOccurrences":[{"day":"friday", "occurrence":1}]} |
Задание выполняется в первую пятницу каждого месяца в указанное время начала. |
{"monthlyOccurrences":[{"day":"friday", "occurrence":-3}]} |
Задание выполняется в третью пятницу с конца каждого месяца в указанное время начала. |
{"minutes":[15], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1},{"day":"friday", "occurrence":-1}]} |
Задание выполняется в первую и последнюю пятницу каждого месяца в 05: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}]} |
Задание выполняется в 05:15, 05:45, 17:15, 17:45 в третью среду каждого месяца. |
Связанный контент
- Дополнительные сведения об триггерах см. в разделе "Выполнение конвейера" и "Триггеры".
- Сведения о том, как ссылаться на метаданные триггера в конвейере, см. в разделе "Справочные метаданные триггера" в запусках конвейера.