Создание триггера, который запускает конвейер по расписанию

Область применения:Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье описан триггер расписания и шаги по его созданию, запуску и мониторингу. Сведения о других типах триггеров см. в статье Выполнение конвейера и триггеры в фабрике данных Azure.

При создании триггера расписания нужно указать для него расписание (дату начала, интервал повторения, дату окончания и т. д.) и связать его с конвейером. Конвейеры и триггеры имеют связь "многие ко многим". Несколько триггеров могут запускать один конвейер. Один триггер может запускать несколько конвейеров.

В следующих разделах приведены шаги по созданию триггера расписания различными методами.

Интерфейс портала Synapse и Фабрики данных Azure

Вы можете создать триггер расписания для периодического запуска конвейера (ежечасно, ежедневно и т. д.).

Примечание.

Полное пошаговое руководство по созданию конвейера и триггера по расписанию, которое связывает такие конвейер и расписание, а также выполняет и отслеживает конвейер см. в статье Краткое руководство. Создание фабрики данных с помощью пользовательского интерфейса службы "Фабрика данных Azure".

  1. Перейдите на вкладку Правка в Фабрике данных Azure или на вкладку "Интеграция" в Azure Synapse.


  1. Выберите Триггер в меню, а затем выберите Создать/изменить.

    New trigger menu

  2. На странице Добавление триггеров щелкните Выбор триггера..., а затем — +Создать.

    Add triggers - new trigger

  3. На странице Создать триггер выполните следующие действия:

    1. Убедитесь, что в качестве параметра Тип выбрано Расписание.

    2. Укажите дату и время запуска триггера в поле Дата начала. По умолчанию будет задано текущее значение даты и времени в формате UTC.

    3. Укажите часовой пояс, в котором будет создан триггер. Параметр часового пояса будет применяться к пунктам Дата начала, Дата окончания и Время выполнения расписания в дополнительных параметрах повторения. Изменение параметра "Часовой пояс" не приведет к автоматическому изменению даты начала. Убедитесь, что в заданном часовом поясе указана правильная дата начала. Обратите внимание, что значение времени выполнения расписания триггера будет учитываться после даты начала (убедитесь, что дата начала по крайней мере на 1 минуту меньше, чем время выполнения, иначе это приведет к активации конвейера в следующем повторении).

      Примечание.

      Для часовых поясов, которые переходят на летнее время, время активации будет автоматически изменено два раза в год, если для повторения задано значение Дни или более продолжительный период. Чтобы отказаться от перехода на летнее время, выберите часовой пояс, который не отслеживает переход на летнее время (например, UTC).

      Важно!

      Корректировка летнего времени выполняется только для триггера с повторением, для которого задано значение Дни или более продолжительный период. Если для триггера задана частота Часы или Минуты, он продолжит активироваться с регулярными интервалами.

    4. Задайте интервал повторения для триггера. Выберите одно из значений из раскрывающегося списка (каждую минуту, ежечасно, ежедневно, еженедельно и ежемесячно). Введите множитель в текстовом поле. Например, если требуется, чтобы триггер запускался каждые 15 минут, выберите Каждую минуту и введите 15 в текстовом поле.

    5. Если в поле Повторение в раскрывающемся списке выбрать дни, недели или месяцы, можно отрыть дополнительные параметры повторения. Advanced recurrence options of Day(s), Week(s) or Month(s)

    6. Чтобы указать время даты окончания, выберите Укажите дату окончания, задайте значение для параметра Заканчивается, а затем выберите ОК. Каждое выполнение конвейера оплачивается. Если выполняется тестирование, настройте конвейер таким образом, чтобы он активировался всего несколько раз. Но при этом обязательно оставьте достаточно времени, чтобы конвейер успел запуститься между временем публикации и временем окончания. Триггер вступит в силу только после публикации решения, а не сразу при сохранении триггера в пользовательском интерфейсе.

      Trigger settings

      Trigger settings for End Date

  4. В окне Создать триггер выберите Да для параметра Активировано и нажмите кнопку ОК. С помощью этого флажка позже можно деактивировать этот триггер.

    Trigger settings - Next button

  5. В окне Создать триггер просмотрите сообщение о предупреждении и нажмите кнопку ОК.

    Trigger settings - Finish button

  6. Выберите Опубликовать все, чтобы опубликовать изменения. Пока вы не опубликуете изменения, триггер не будет активировать запуски конвейера.

    Publish button

  7. Перейдите на вкладку Запуски конвейера слева, а затем выберите Обновить, чтобы обновить список. Вы увидите запуски конвейера, активированные запланированным триггером. Обратите внимание на значения в столбце Активировано. При использовании варианта Trigger Now (Активировать сейчас) в списке появится выполнение, активированное триггером вручную.


  1. Перейдите к представлению Запуски триггеров \ Расписание.


Azure PowerShell

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

В этом разделе показано, как использовать Azure PowerShell для создания, запуска и мониторинга триггера расписания. Чтобы этот образец работал, сначала выполните действия в статье Создание фабрики данных Azure с помощью PowerShell. Затем добавьте следующий код в метод Main, который создает и запускает триггер расписания, выполняемый каждые 15 минут. Триггер связан с конвейером с именем Adfv2QuickStartPipeline, созданным в рамках работы с кратким руководством.

Необходимые компоненты

Пример кода

  1. Создайте файл 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 триггера задано значение "Minute", а для элемента interval — значение 15. Таким образом, триггер запускает конвейер каждые 15 минут в период между временем начала и окончания.

    • Элемент timeZone указывает на часовой пояс, в котором создается триггер. Этот параметр влияет на значение startTime и endTime.

    • Значение элемента endTime равно одному часу после элемента startTime. Таким образом, триггер запускает конвейер через 15, 30 и 45 минут после времени начала. Не забудьте установить время начала на текущее время в формате UTC, а время окончания на один час после времени начала.

      Важно!

      Для часовых поясов в формате UTC, значения startTime и endTime должно соответствовать формату yyyy-MM-ddTHH:mm:ssZ, а для других часовых поясов — yyyy-MM-ddTHH:mm:ss.

      В стандарте ISO 8601 суффикс Z в метке времени обозначает дату и время в часовом поясе в формате UTC и делает отображение поля часового пояса бесполезным. Хотя отсутствие суффикса Z для часового пояса в формате UTC приведет к ошибке при активации триггера.

    • Триггер связан с конвейером Adfv2QuickStartPipeline. Чтобы связать несколько конвейеров с триггером, добавьте дополнительные разделы pipelineReference.

    • Конвейер в кратком руководстве принимает два значения параметров: inputPath и outputPath. И вы можете передавать значения этих параметров из триггера.

  2. Создайте триггер с помощью командлета Set-AzDataFactoryV2Trigger:

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Убедитесь, что триггер находится в состоянии Остановлено, используя командлет Get AzDataFactoryV2Trigger:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  4. Запустите триггер с помощью командлета: Start-AzDataFactoryV2Trigger:

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Убедитесь, что триггер находится в состоянии Запущено, используя командлет:Get-AzDataFactoryV2Trigger:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Получите сведения о выполнениях триггера в 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.

Пример кода

  1. В рабочей папке создайте 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 триггера задано значение "Minute", а для элемента interval — значение 15. Таким образом, триггер запускает конвейер каждые 15 минут в период между временем начала и окончания.

    • Элемент timeZone указывает на часовой пояс, в котором создается триггер. Этот параметр влияет на значение startTime и endTime.

    • Значение элемента endTime равно одному часу после элемента startTime. Таким образом, триггер запускает конвейер через 15, 30 и 45 минут после времени начала. Не забудьте установить время начала на текущее время в формате UTC, а время окончания на один час после времени начала.

      Важно!

      Для часовых поясов в формате UTC, значения startTime и endTime должно соответствовать формату yyyy-MM-ddTHH:mm:ssZ, а для других часовых поясов — yyyy-MM-ddTHH:mm:ss.

      В стандарте ISO 8601 суффикс Z в метке времени обозначает дату и время в часовом поясе в формате UTC и делает отображение поля часового пояса бесполезным. Хотя отсутствие суффикса Z для часового пояса в формате UTC приведет к ошибке при активации триггера.

    • Триггер связан с конвейером Adfv2QuickStartPipeline. Чтобы связать несколько конвейеров с триггером, добавьте дополнительные разделы pipelineReference.

    • Конвейер в кратком руководстве принимает два значения параметров: inputPath и 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:

    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:

    az datafactory trigger show --resource-group "ADFQuickStartRG" --factory-name "ADFTutorialFactory" --name "MyTrigger" 
    
  6. Получите выполнения триггера в 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. last-updated-after и last-updated-before также ожидают метку времени в формате 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 для создания, запуска и мониторинга триггера. Чтобы этот образец работал, сначала выполните действия в статье Создание фабрики данных и конвейера с помощью Python. Затем добавьте следующий блок кода после блока кода "мониторинг выполнения конвейера" в скрипте 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, interval, endTime, count и schedule. Если определен объект recurrence, элемент frequency является обязательным. Другие элементы объекта recurrence являются необязательными.
frequency Единица частоты, с которой выполняется триггер. Поддерживаются следующие значения: "минута", "час", "день", "неделя" и "месяц".
interval Положительное целое число, указывающее интервал для значения frequency, которое определяет, как часто выполняется триггер. Например, если interval имеет значение 3, а для элемента frequency выбран вариант week (неделя), триггер выполняется один раз каждые 3 недели.
schedule Расписание повторения для триггера. Триггер с указанным значением частоты выполняется по расписанию. Свойство schedule содержит изменения для повторения, основанного на минутах, часах, неделях, днях месяца и номере недели.

Важно!

Для часовых поясов в формате UTC, значения startTime и endTime должно соответствовать формату yyyy-MM-ddTHH:mm:ssZ, а для других часовых поясов — yyyy-MM-ddTHH:mm:ss.

В стандарте ISO 8601 суффикс Z в метке времени обозначает дату и время в часовом поясе в формате UTC и делает отображение поля часового пояса бесполезным. Хотя отсутствие суффикса 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] }

Параметр часового пояса

Ниже перечислены некоторые часовые пояса, поддерживаемые триггерами по расписанию:

Часовой пояс Смещение времени в формате UTC (без учета перехода на летнее время) Значение timeZone Отслеживание перехода на летнее время Формат метки времени
Всемирное координированное время 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, а повторение — каждые два дня. (Значение повторения определяется путем задания для свойства frequency значения "день", а для свойства 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 может ограничивать число выполнений триггера. Например, если триггеру назначена ежемесячная частота и параметр schedule, который запускает триггер только в 31-й день месяца, он будет выполняться только в те месяцы, в которых есть 31 день.

Обратите внимание, что параметр schedule может увеличивать число выполнений триггера. Например, триггер с ежемесячной частотой и параметром schedule, который запускает триггер в 1 и 2 день месяца, будет выполняться в первый и второй дни месяца, а не раз в месяц.

Если задано несколько элементов schedule, они применяются в порядке от большего к меньшему: номер недели, число месяца, день недели, час и, наконец, минута.

В следующей таблице элементы свойства schedule описаны подробно.

Элемент JSON Description Допустимые значения
minutes Минуты часа, в которые будет выполняться триггер.
  • Целое
  • массив целых чисел
hours Часы дня, в которые будет выполняться триггер.
  • Целое
  • массив целых чисел
weekDays Дни недели, по которым выполняется триггер. Значение можно указать только с еженедельной частотой.
  • Понедельник, вторник, среда, четверг, пятница, суббота, воскресенье
  • Массив значений дня (максимальный размер массива — 7)
  • Значения дня можно вводить в любом регистре
monthlyOccurrences Дни месяца, по которым выполняется триггер. Значение можно указать только с ежемесячной частотой.
  • Массив объектов monthlyOccurrence: { "day": day, "occurrence": occurrence }.
  • Атрибут day является днем недели, в который выполняется триггер. Например, свойство monthlyOccurrences со значением day равным {Sunday} означает каждое воскресенье месяца. Атрибут day является обязательным.
  • Атрибут occurrence является частотой появления определенного дня на протяжении месяца. Например, свойство monthlyOccurrences со значением day и occurrence со значением {Sunday, -1} означает последнее воскресенье месяца. Атрибут occurrence не является обязательным.
monthDays Дни месяца, по которым выполняется триггер. Значение можно указать только с ежемесячной частотой.
  • Любое значение <= -1 и >= -31
  • Любое значение >= 1 и <= 31
  • Массив значений

Примеры расписаний повторения триггеров

Этот раздел содержит примеры расписания повторений с применением объекта schedule и его элементов.

В примерах предполагается, что interval имеет значение равное 1, а значение frequency является правильным согласно определению расписания. Например, у вас не может быть значения frequency "день" и изменение 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", значением 1 для параметра interval и без параметра schedule. Это расписание можно использовать с различными значениями частоты и интервала для создания других триггеров. Например, если значение частоты — "месяц", расписание выполняется один раз в месяц, а не каждый день, когда частота имеет значение "день".
{"minutes":[0]} Задание выполняется с наступлением каждого часа. Этот триггер выполняется с наступлением каждого часа, начиная с 12:00, 13:00, 14:00 и т. д.

Это расписание эквивалентно триггеру, для которого частота задана как "hour", а startTime как "0 минут", либо триггеру без расписания, но со значением частоты "day". Если значение частоты — "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]} Задание выполняется в 06: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}]} Задание выполняется в пятую пятницу каждого месяца в указанное время начала. Если пятой пятницы в месяце нет, конвейер не выполняется, так как по расписанию задание должно выполняться только по пятым пятницам. Чтобы триггер выполнялся в последнюю пятницу месяца, используйте вместо значения повторения 5 значение –1.
{"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 в третью среду каждого месяца.