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

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

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

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

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

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

Фабрика данных Azure и портал Azure Synapse

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

Примечание.

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

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


  1. Выберите Trigger (Запустить) в меню, а затем выберите New/Edit (Создать/изменить).

    Снимок экрана: меню

  2. На странице "Добавить триггеры" выберите "Выбрать триггер", а затем нажмите кнопку "Создать".

    Снимок экрана: панель

  3. На странице создания триггера:

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

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

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

      Примечание.

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

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

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

    5. В разделе "Повторение", если в раскрывающемся списке выбраны дни, недели или месяцы , можно просмотреть дополнительные параметры повторения.

      Снимок экрана: расширенные параметры повторения дней, недель и месяцев.

    6. Чтобы указать время окончания, выберите "Указать дату окончания". Укажите сведения о конце и нажмите кнопку "ОК".

      Стоимость связана с каждым запуском конвейера. При тестировании может потребоваться убедиться, что конвейер активируется всего несколько раз. Но при этом обязательно оставьте достаточно времени, чтобы конвейер успел запуститься между временем публикации и временем окончания. Триггер вступит в силу только после публикации решения, а не сразу при сохранении триггера в пользовательском интерфейсе.

      Снимок экрана: параметры триггера.

      Снимок экрана: параметры триггера для даты и времени окончания.

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

    Снимок экрана: параметр

  5. В окне "Новый триггер" просмотрите предупреждение и нажмите кнопку "ОК".

    Снимок экрана: нажатие кнопки

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

    Снимок экрана: кнопка

  7. Перейдите на вкладку "Конвейер выполняется " слева, а затем выберите "Обновить ", чтобы обновить список. Вы увидите выполнения конвейера, активированные запланированным триггером. Обратите внимание на значения в столбце Активировано. Если вы используете параметр "Активировать сейчас ", в списке будет запущен триггер вручную.


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

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

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

      Внимание

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

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

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

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

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

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

      Внимание

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

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

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

    • Конвейер в кратком руководстве принимает два parameters значения: 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. После последнего обновления и последнего обновления до этого также ожидает метку времени 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, SliceEndWindowStartи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элементы , , endTimeintervalcountи 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:ssZ. Для других часовых поясов 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 в значение .interval2) Обратите внимание, что 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 Дни недели, по которым выполняется триггер. Значение можно указать только с еженедельной частотой.
  • Понедельник, вторник, среда, четверг, пятница, суббота, воскресенье.
  • Массив значений дня (максимальный размер массива составляет 7).
  • Значения дня не учитывает регистр.
monthlyOccurrences Дни месяца, по которым выполняется триггер. Значение можно указать только с ежемесячной частотой.
  • monthlyOccurrences Массив объектов: { "day": day, "occurrence": occurrence }.
  • Атрибут day — это день недели, в которой запускается триггер. Например, monthlyOccurrences свойство со day значением {Sunday} означает каждый воскресенье месяца. Атрибут day является обязательным.
  • Атрибут occurrence является вхождением указанного day в течение месяца. Например, monthlyOccurrences свойство со day occurrence значениями {Sunday, -1} означает последнее воскресенье месяца. Атрибут occurrence является необязательным.
monthDays Дни месяца, по которым выполняется триггер. Значение можно указать только с ежемесячной частотой.
  • Любое значение <= -1 и >= -31
  • Любое значение >= 1 и <= 31
  • Массив значений

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

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

В примерах предполагается, что interval это значение 1 и что 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 в третью среду каждого месяца.