Выполнение конвейера и триггеры в фабрике данных AzurePipeline execution and triggers in Azure Data Factory

Запуск конвейера в службе "Фабрика данных Azure" определяет экземпляр выполнения конвейера.A pipeline run in Azure Data Factory defines an instance of a pipeline execution. Например, у вас есть конвейер, который выполняется в 8:00, 09:00 и 10:00.For example, say you have a pipeline that executes at 8:00 AM, 9:00 AM, and 10:00 AM. В этом случае выполняются три отдельных запуска конвейера.In this case, there are three separate runs of the pipeline, or pipeline runs. Для каждого запуска конвейера предусмотрен уникальный идентификатор.Each pipeline run has a unique pipeline run ID. Идентификатор запуска представляет собой уникальный идентификатор GUID, который определяет запуск определенного конвейера.A run ID is a GUID that uniquely defines that particular pipeline run.

Запуск конвейера обычно создается путем передачи аргументов в параметры, определенные в конвейерах.Pipeline runs are typically instantiated by passing arguments to parameters that you define in the pipeline. Конвейер можно выполнить двумя способами: вручную или с помощью триггера.You can execute a pipeline either manually or by using a trigger. Эта статья подробно описывает оба способа.This article provides details about both ways of executing a pipeline.

Выполнение вручную (по запросу)Manual execution (on-demand)

Выполнение конвейера вручную также называется выполнением по требованию.The manual execution of a pipeline is also referred to as on-demand execution.

Предположим, у вас есть базовый конвейер с именем copyPipeline, который вы хотите выполнить.For example, say you have a basic pipeline named copyPipeline that you want to execute. Это конвейер с одним действием, которое копирует данные из папки источника, расположенной в хранилище BLOB-объектов Azure, в папку приемника в том же хранилище.The pipeline has a single activity that copies from an Azure Blob storage source folder to a destination folder in the same storage. В следующем определении JSON показан этот пример конвейера:The following JSON definition shows this sample pipeline:

{
    "name": "copyPipeline",
    "properties": {
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "BlobSource"
                    },
                    "sink": {
                        "type": "BlobSink"
                    }
                },
                "name": "CopyBlobtoBlob",
                "inputs": [
                    {
                        "referenceName": "sourceBlobDataset",
                        "type": "DatasetReference"
                    }
                ],
                "outputs": [
                    {
                        "referenceName": "sinkBlobDataset",
                        "type": "DatasetReference"
                    }
                ]
            }
        ],
        "parameters": {
            "sourceBlobContainer": {
                "type": "String"
            },
            "sinkBlobContainer": {
                "type": "String"
            }
        }
    }
}

В определении JSON этот конвейер принимает два параметра: sourceBlobContainer и sinkBlobContainer.In the JSON definition, the pipeline takes two parameters: sourceBlobContainer and sinkBlobContainer. Значения этих параметров передаются во время выполнения.You pass values to these parameters at runtime.

Вы можете вручную запустить свой конвейер, используя один из методов ниже:You can manually run your pipeline by using one of the following methods:

  • Пакет SDK для .NET.NET SDK
  • модуль Azure PowerShell;Azure PowerShell module
  • REST APIREST API
  • Пакет SDK для PythonPython SDK

REST APIREST API

В следующем примере команды показано, как запустить конвейер вручную с помощью REST API:The following sample command shows you how to manually run your pipeline by using the REST API:

POST
https://management.azure.com/subscriptions/mySubId/resourceGroups/myResourceGroup/providers/Microsoft.DataFactory/factories/myDataFactory/pipelines/copyPipeline/createRun?api-version=2017-03-01-preview

Полный пример см. в статье Создание фабрики данных Azure и конвейера с помощью REST API.For a complete sample, see Quickstart: Create a data factory by using the REST API.

Azure PowerShellAzure PowerShell

Примечание

Эта статья была изменена и теперь содержит сведения о новом модуле Az для Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Вы по-прежнему можете использовать модуль AzureRM, исправления ошибок для которого будут продолжать выпускаться как минимум до декабря 2020 г.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Дополнительные сведения о совместимости модуля Az с AzureRM см. в статье Introducing the new Azure PowerShell Az module (Знакомство с новым модулем Az для Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Инструкции по установке модуля Az см. в статье об установке Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

В следующем примере команды показано, как запустить конвейер вручную с помощью Azure PowerShell:The following sample command shows you how to manually run your pipeline by using Azure PowerShell:

Invoke-AzDataFactoryV2Pipeline -DataFactory $df -PipelineName "Adfv2QuickStartPipeline" -ParameterFile .\PipelineParameters.json

Параметры передаются в тексте полезных данных запроса.You pass parameters in the body of the request payload. В пакетах SDK для .NET, Azure PowerShell и Python можно передавать значения в словарь, который передается в качестве аргумента вызова:In the .NET SDK, Azure PowerShell, and the Python SDK, you pass values in a dictionary that's passed as an argument to the call:

{
  "sourceBlobContainer": "MySourceFolder",
  "sinkBlobContainer": "MySinkFolder"
}

Полезные данные ответа содержат уникальный идентификатор запуска конвейера.The response payload is a unique ID of the pipeline run:

{
  "runId": "0448d45a-a0bd-23f3-90a5-bfeea9264aed"
}

Полный пример см. в статье Создание фабрики данных Azure с помощью PowerShell.For a complete sample, see Quickstart: Create a data factory by using Azure PowerShell.

Пакет SDK для .NET.NET SDK

В следующем примере вызова показано, как запустить конвейер вручную с помощью .NET SDK:The following sample call shows you how to manually run your pipeline by using the .NET SDK:

client.Pipelines.CreateRunWithHttpMessagesAsync(resourceGroup, dataFactoryName, pipelineName, parameters)

Полный пример см. в статье Создание фабрики данных и конвейера с помощью пакета SDK .NET.For a complete sample, see Quickstart: Create a data factory by using the .NET SDK.

Примечание

Пакет SDK .NET можно использовать для вызова конвейеров фабрики данных из решения "Функции Azure", собственных веб-служб и т. д.You can use the .NET SDK to invoke Data Factory pipelines from Azure Functions, from your own web services, and so on.

Выполнение триггераTrigger execution

Триггеры — это еще один способ выполнить запуск конвейера.Triggers are another way that you can execute a pipeline run. Триггеры обозначает единицу обработки, которая определяет время запуска для выполнения конвейера.Triggers represent a unit of processing that determines when a pipeline execution needs to be kicked off. Сейчас службы "Фабрика данных" поддерживает три типа триггеров:Currently, Data Factory supports three types of triggers:
  • Триггер планировщика. Триггер, который запускает конвейер в определенное время по расписанию.Schedule trigger: A trigger that invokes a pipeline on a wall-clock schedule.

  • Триггер "переворачивающегося" окна. Триггер, который работает на основе периодических интервалов, сохраняя состояние.Tumbling window trigger: A trigger that operates on a periodic interval, while also retaining state.

  • Триггер на основе событий. Триггер, который реагирует на событие.Event-based trigger: A trigger that responds to an event.

Конвейеры и триггеры имеют связь "многие ко многим".Pipelines and triggers have a many-to-many relationship. Несколько триггеров могут запускать один конвейер, а один триггер может запускать несколько конвейеров.Multiple triggers can kick off a single pipeline, or a single trigger can kick off multiple pipelines. В следующем определении триггера свойство конвейеры ссылается на список конвейеров, запускаемых определенным триггером.In the following trigger definition, the pipelines property refers to a list of pipelines that are triggered by the particular trigger. Определение свойства содержит значения для параметров конвейера.The property definition includes values for the pipeline parameters.

Базовое определение триггераBasic trigger definition

{
    "properties": {
        "name": "MyTrigger",
        "type": "<type of trigger>",
        "typeProperties": {...},
        "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>"
                }
            }
        ]
    }
}

Триггер планировщикаSchedule trigger

Триггер планировщика запускает конвейер в определенное время по расписанию.A schedule trigger runs pipelines on a wall-clock schedule. Этот триггер поддерживает периодичность и расширенные возможности календаря.This trigger supports periodic and advanced calendar options. Например, триггер поддерживает такие интервалы, как "еженедельно" или "каждую неделю, в 17:00 по понедельникам и в 21:00 по четвергам".For example, the trigger supports intervals like "weekly" or "Monday at 5:00 PM and Thursday at 9:00 PM." Триггер планировщика гибкий, так как шаблон набора данных не важен, а триггер не различает данные временных рядов и данные, не относящиеся к временным рядам.The schedule trigger is flexible because the dataset pattern is agnostic, and the trigger doesn't discern between time-series and non-time-series data.

Дополнительные сведения о триггерах планировщика и примеры см. в руководстве по созданию триггера расписания.For more information about schedule triggers and for examples, see Create a schedule trigger.

Определение триггера планировщикаSchedule trigger definition

При создании триггера планировщика нужно указать расписание и повторения с помощью определения JSON.When you create a schedule trigger, you specify scheduling and recurrence by using a JSON definition.

Чтобы триггер планировщика выполнял конвейер, включите в определении триггера ссылку на нужный конвейер.To have your schedule trigger kick off a pipeline run, include a pipeline reference of the particular pipeline in the trigger definition. Конвейеры и триггеры имеют связь "многие ко многим".Pipelines and triggers have a many-to-many relationship. Несколько триггеров могут запускать один конвейер.Multiple triggers can kick off a single pipeline. Один триггер может запускать несколько конвейеров.A single trigger can kick off multiple pipelines.

{
  "properties": {
    "type": "ScheduleTrigger",
    "typeProperties": {
      "recurrence": {
        "frequency": <<Minute, Hour, Day, Week, Year>>,
        "interval": <<int>>, // How often to fire
        "startTime": <<datetime>>,
        "endTime": <<datetime>>,
        "timeZone": "UTC",
        "schedule": { // Optional (advanced scheduling specifics)
          "hours": [<<0-24>>],
          "weekDays": [<<Monday-Sunday>>],
          "minutes": [<<0-60>>],
          "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.The parameters property is a mandatory property of the pipelines element. Если конвейер не принимает никаких параметров, необходимо включить пустое определение JSON для свойства parameters.If your pipeline doesn't take any parameters, you must include an empty JSON definition for the parameters property.

Общее представление схемыSchema overview

Таблица ниже содержит обзор основных элементов схемы, связанных с периодичностью выполнения и расписанием триггера:The following table provides a high-level overview of the major schema elements that are related to recurrence and scheduling a trigger:

Свойство JSONJSON property ОписаниеDescription
startTimestartTime Значение даты и времени.A date-time value. Для базовых расписаний значение свойства startTime применяется к первому выполнению.For basic schedules, the value of the startTime property applies to the first occurrence. В сложных расписаниях триггер не запускается раньше, чем определяется значением startTime.For complex schedules, the trigger starts no sooner than the specified startTime value.
endTimeendTime Дата и время завершения триггера.The end date and time for the trigger. После указанной даты и времени триггер перестает выполняться.The trigger doesn't execute after the specified end date and time. Значение свойства не может быть в прошлом.The value for the property can't be in the past.
timeZonetimeZone Часовой пояс.The time zone. В настоящее время поддерживается только часовой пояс UTC.Currently, only the UTC time zone is supported.
recurrencerecurrence Объект recurrence указывает правила повторения для триггера.A recurrence object that specifies the recurrence rules for the trigger. Этот объект поддерживает следующие элементы: frequency, interval, endTime, count и schedule.The recurrence object supports the frequency, interval, endTime, count, and schedule elements. Если определен объект recurrence, элемент frequency является обязательным.When a recurrence object is defined, the frequency element is required. Другие элементы объекта recurrence являются необязательными.The other elements of the recurrence object are optional.
frequencyfrequency Единица частоты, с которой выполняется триггер.The unit of frequency at which the trigger recurs. Поддерживаются следующие значения: "минута", "час", "день", "неделя" и "месяц".The supported values include "minute", "hour", "day", "week", and "month".
intervalinterval Положительное целое число, указывающее интервал для значения frequency,A positive integer that denotes the interval for the frequency value. которое определяет, как часто выполняется триггер.The frequency value determines how often the trigger runs. Например, если interval имеет значение 3, а для элемента frequency выбран вариант week (неделя), триггер выполняется один раз каждые три недели.For example, if the interval is 3 and the frequency is "week", the trigger recurs every three weeks.
scheduleschedule Расписание повторения для триггера.The recurrence schedule for the trigger. Триггер с указанным значением частоты выполняется по расписанию.A trigger with a specified frequency value alters its recurrence based on a recurrence schedule. Свойство schedule содержит изменения для повторения, основанного на минутах, часах, неделях, днях месяца и номере недели.The schedule property contains modifications for the recurrence that are based on minutes, hours, week days, month days, and week number.

Пример триггера расписанияSchedule trigger example

{
    "properties": {
        "name": "MyTrigger",
        "type": "ScheduleTrigger",
        "typeProperties": {
            "recurrence": {
                "frequency": "Hour",
                "interval": 1,
                "startTime": "2017-11-01T09:00:00-08:00",
                "endTime": "2017-11-02T22:00:00-08:00"
            }
        },
        "pipelines": [{
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "SQLServerToBlobPipeline"
                },
                "parameters": {}
            },
            {
                "pipelineReference": {
                    "type": "PipelineReference",
                    "referenceName": "SQLServerToAzureSQLPipeline"
                },
                "parameters": {}
            }
        ]
    }
}

Параметры схемы по умолчанию, ограничения и примерыSchema defaults, limits, and examples

Свойство JSONJSON property ТипType Обязательное значениеRequired Значение по умолчаниюDefault value Допустимые значенияValid values ПримерExample
startTimestartTime строкаstring ДаYes ОтсутствуютNone Дата и время по спецификации ISO 8601ISO 8601 date-times "startTime" : "2013-01-09T09:30:00-08:00"
recurrencerecurrence объектobject ДаYes ОтсутствуютNone Объект recurrenceA recurrence object "recurrence" : { "frequency" : "monthly", "interval" : 1 }
intervalinterval номерnumber НетNo 11 От 1 до 10001 to 1000 "interval":10
endTimeendTime строкаstring ДаYes ОтсутствуютNone Значение даты и времени, представляющее время в будущем.A date-time value that represents a time in the future "endTime" : "2013-02-09T09:30:00-08:00"
scheduleschedule объектobject НетNo ОтсутствуютNone Объект scheduleA schedule object "schedule" : { "minute" : [30], "hour" : [8,17] }

Свойство startTimestartTime property

В следующей таблице показано, как свойство startTime управляет запуском триггера:The following table shows you how the startTime property controls a trigger run:

Значение startTimestartTime value Повторение без расписанияRecurrence without schedule Повторение с расписаниемRecurrence with schedule
Время начала в прошломStart time is in the past Вычисляется время первого выполнения, относящееся к будущему времени, после указанного времени начала.Calculates the first future execution time after the start time, and runs at that time.

Последующие выполнения производятся с учетом времени предыдущего выполнения.Runs subsequent executions calculated from the last execution time.

Пример представлен после этой таблицы.See the example that follows this table.
Триггер выполняется не раньше указанного времени начала.The trigger starts no sooner than the specified start time. Первое выполнение производится по расписанию, которое отсчитывается от времени начала.The first occurrence is based on the schedule, calculated from the start time.

Последующие выполнения производятся по расписанию повторов.Runs subsequent executions based on the recurrence schedule.
Время начала в будущем или в настоящемStart time is in the future or the current time Выполняется первый раз в указанное время начала.Runs once at the specified start time.

Последующие выполнения производятся с учетом времени предыдущего выполнения.Runs subsequent executions calculated from the last execution time.
Триггер выполняется не раньше указанного времени начала.The trigger starts no sooner than the specified start time. Первое выполнение производится по расписанию, которое отсчитывается от времени начала.The first occurrence is based on the schedule, calculated from the start time.

Последующие выполнения производятся по расписанию повторов.Runs subsequent executions based on the recurrence schedule.

Рассмотрим, как работает триггер, для которого время начала установлено в прошлом, указан параметр recurrence и отсутствует параметр schedule.Let's look at an example of what happens when the start time is in the past, with a recurrence, but no schedule. Предположим, что текущее время — 08.04.2017 13:00, время начала — 07.04.2017 14:00, а повторение — каждые два дня.Assume that the current time is 2017-04-08 13:00, the start time is 2017-04-07 14:00, and the recurrence is every two days. (Значение recurrence определяется путем указания для свойства frequency значения "день", а для свойства interval значение 2.) Обратите внимание, что значение startTime находится в прошлом, то есть наступает раньше текущего времени.(The recurrence value is defined by setting the frequency property to "day" and the interval property to 2.) Notice that the startTime value is in the past and occurs before the current time.

В этих условиях первое выполнение происходит 09.04.2017 в 14:00.Under these conditions, the first execution is 2017-04-09 at 14:00. От времени начала ядро планировщика отсчитывает время повторных выполнений.The Scheduler engine calculates execution occurrences from the start time. Выполнения, которые приходятся на прошлое, игнорируются.Any instances in the past are discarded. Ядро берет очередной случай выполнения, который приходится на будущее.The engine uses the next instance that occurs in the future. В этом случае время начала — 07.04.2017 в 14:00.In this scenario, the start time is 2017-04-07 at 2:00 PM. Следующее выполнение состоится через 2 дня от этого времени начала, то есть 09.04.2017 в 14:00.The next instance is two days from that time, which is on 2017-04-09 at 2:00 PM.

Время первого выполнения останется тем же даже при таких значениях startTime: 05.04.2017 в 14:00 или 01.04.2017 в 14:00.The first execution time is the same even whether startTime is 2017-04-05 14:00 or 2017-04-01 14:00. Все последующие выполнения после первого вычисляются по расписанию (свойство schedule).After the first execution, subsequent executions are calculated by using the schedule. Таким образом, последующие выполнения проходят 11.04.2017 в 14:00, затем 13.04.2017 в 14:00, затем 15.04.2017 в 14:00 и т. д.Therefore, the subsequent executions are on 2017-04-11 at 2:00 PM, then on 2017-04-13 at 2:00 PM, then on 2017-04-15 at 2:00 PM, and so on.

Наконец, когда часы или минуты не установлены в расписании триггера, часы или минуты первого выполнения используются как значения по умолчанию.Finally, when hours or minutes aren’t set in the schedule for a trigger, the hours or minutes of the first execution are used as defaults.

Свойство scheduleschedule property

С помощью параметра schedule можно ограничить число выполнений триггера.You can use schedule to limit the number of trigger executions. Например, если триггеру назначена ежемесячная частота и параметр schedule, который запускает триггер только на 31-й день месяца, он будет выполняться только в те месяцы, в которых есть 31 день.For example, if a trigger with a monthly frequency is scheduled to run only on day 31, the trigger runs only in those months that have a thirty-first day.

Кроме того, с помощью параметра schedule можно увеличить число выполнений триггера.You can also use schedule to expand the number of trigger executions. Например, триггер с ежемесячной частотой и параметром schedule, который запускает триггер в 1 и 2 день месяца, будет выполняться в первый и второй дни месяца, а не раз в месяц.For example, a trigger with a monthly frequency that's scheduled to run on month days 1 and 2, runs on the first and second days of the month, rather than once a month.

Если для параметра schedule задано несколько элементов, они применяются в порядке от большего к меньшему: номер недели, число месяца, день недели, час и минута.If multiple schedule elements are specified, the order of evaluation is from the largest to the smallest schedule setting: week number, month day, week day, hour, minute.

В следующей таблице элементы свойства schedule описаны подробно.The following table describes the schedule elements in detail:

Элемент JSONJSON element ОписаниеDescription Допустимые значенияValid values
minutesminutes Минуты часа, в которые будет выполняться триггер.Minutes of the hour at which the trigger runs. Целое число- Integer
Массив целых чисел- Array of integers
hourshours Часы дня, в которые будет выполняться триггер.Hours of the day at which the trigger runs. Целое число- Integer
Массив целых чисел- Array of integers
weekDaysweekDays Дни недели, в которые будет выполняться триггер.Days of the week the trigger runs. Значение можно указать только с еженедельной частотой.The value can be specified only with a weekly frequency.
monday- Monday
tuesday- Tuesday
wednesday- Wednesday
thursday- Thursday
friday- Friday
saturday- Saturday
sunday- Sunday
Массив значений дня (максимальный размер массива — 7)- Array of day values (maximum array size is 7)

Значения дня можно вводить в любом регистреDay values are not case-sensitive
monthlyOccurrencesmonthlyOccurrences Дни месяца, по которым выполняется триггер.Days of the month on which the trigger runs. Значение можно указать только с ежемесячной частотой.The value can be specified with a monthly frequency only. Массив объектов monthlyOccurrence: { "day": day, "occurrence": occurrence }- Array of monthlyOccurrence objects: { "day": day, "occurrence": occurrence }
Атрибут day является днем недели, в который выполняется триггер.- The day attribute is the day of the week on which the trigger runs. Например, свойство monthlyOccurrences со значением day равным {Sunday} означает каждое воскресенье месяца.For example, a monthlyOccurrences property with a day value of {Sunday} means every Sunday of the month. Атрибут day является обязательным.The day attribute is required.
Атрибут occurrence является частотой появления определенного дня на протяжении месяца.- The occurrence attribute is the occurrence of the specified day during the month. Например, свойство monthlyOccurrences со значением day и occurrence со значением {Sunday, -1} означает последнее воскресенье месяца.For example, a monthlyOccurrences property with day and occurrence values of {Sunday, -1} means the last Sunday of the month. Атрибут occurrence не является обязательным.The occurrence attribute is optional.
monthDaysmonthDays Дни месяца, по которым выполняется триггер.Day of the month on which the trigger runs. Значение можно указать только с ежемесячной частотой.The value can be specified with a monthly frequency only. — любое значение <= -1 и >= -31;- Any value <= -1 and >= -31
— любое значение >= 1 и <= 31.- Any value >= 1 and <= 31
Массив значений- Array of values

Триггер "переворачивающегося" окнаTumbling window trigger

Триггер "переворачивающегося" окна — это тип триггера, который активируется с определенным интервалом начиная с указанного времени запуска, сохраняя состояние.Tumbling window triggers are a type of trigger that fires at a periodic time interval from a specified start time, while retaining state. "Переворачивающиеся" окна — это ряд неперекрывающихся и несоприкасающихся интервалов времени фиксированного размера.Tumbling windows are a series of fixed-sized, non-overlapping, and contiguous time intervals.

Дополнительные сведения об этом типе триггеров и примеры см. в статье, посвященной созданию триггера "переворачивающегося" окна.For more information about tumbling window triggers and for examples, see Create a tumbling window trigger.

Триггер на основе событийEvent-based trigger

Триггеры на основе событий запускают конвейеры в ответ на событие, например поступление файла в хранилище BLOB-объектов Azure или удаление из него.An event-based trigger runs pipelines in response to an event, such as the arrival of a file, or the deletion of a file, in Azure Blob Storage.

Дополнительные сведения см. в статье о создании триггера, который запускает конвейер в ответ на событие.For more information about event-based triggers, see Create a trigger that runs a pipeline in response to an event.

Примеры расписаний повторения триггеровExamples of trigger recurrence schedules

Этот раздел содержит примеры расписания повторенийThis section provides examples of recurrence schedules. с применением объекта schedule и его элементов.It focuses on the schedule object and its elements.

В примерах предполагается, что interval имеет значение равное 1, а значение frequency является правильным согласно определению расписания.The examples assume that the interval value is 1, and that the frequency value is correct according to the schedule definition. Например, у вас не может быть значения frequency "день" и изменения monthDays в объекте schedule.For example, you can't have a frequency value of "day" and also have a monthDays modification in the schedule object. Такие ограничения описаны в таблице в предыдущем разделе.These kinds of restrictions are described in the table in the preceding section.

ПримерExample ОписаниеDescription
{"hours":[5]} Выполняется каждый день в 05:00.Run at 5:00 AM every day.
{"minutes":[15], "hours":[5]} Выполняется каждый день в 05:15.Run at 5:15 AM every day.
{"minutes":[15], "hours":[5,17]} Выполняется каждый день в 05:15 и 16:15.Run at 5:15 AM and 5:15 PM every day.
{"minutes":[15,45], "hours":[5,17]} Выполняется каждый день в 05:15, 05:45, 16:15 и 16:45.Run at 5:15 AM, 5:45 AM, 5:15 PM, and 5:45 PM every day.
{"minutes":[0,15,30,45]} Выполнение каждые 15 минут.Run every 15 minutes.
{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]} Выполнение каждый час.Run every hour.

Этот триггер запускается каждый час.This trigger runs every hour. Минуты зависят от значения startTime, если оно указано.The minutes are controlled by the startTime value, when a value is specified. Если значение не указано, управление минутами осуществляется в соответствии с временем создания.If a value isn't specified, the minutes are controlled by the creation time. Например, если триггер запущен или создан (в зависимости от ситуации) в 12:25, он будет запускаться в 00:25, 01:25, 02:25 и т. д. и 23:25.For example, if the start time or creation time (whichever applies) is 12:25 PM, the trigger runs at 00:25, 01:25, 02:25, ..., and 23:25.

Это расписание работает так же, как триггер со значением frequency равным "hour", значением 1 для параметра interval и без параметра schedule.This schedule is equivalent to having a trigger with a frequency value of "hour", an interval value of 1, and no schedule. Это расписание можно использовать с различными значениями частоты и интервала для создания других триггеров.This schedule can be used with different frequency and interval values to create other triggers. Например, если значение frequency — "month", расписание выполняется один раз в месяц, а не каждый день, когда frequency имеет значение "day".For example, when the frequency value is "month", the schedule runs only once a month, rather than every day when the frequency value is "day".
{"minutes":[0]} Задание выполняется с наступлением каждого часа.Run every hour on the hour.

Этот триггер выполняется с наступлением каждого часа, начиная с 12:00, 13:00, 14:00 и т. д.This trigger runs every hour on the hour starting at 12:00 AM, 1:00 AM, 2:00 AM, and so on.

Это расписание является эквивалентом триггера со значением frequency равным "hour" и значением startTime без минут или без объекта schedule, но со значением frequency "day".This schedule is equivalent to a trigger with a frequency value of "hour" and a startTime value of zero minutes, and no schedule but a frequency value of "day". Если значение frequency равно "week" или "month", расписание выполняется только один раз в неделю или один раз в месяц соответственно.If the frequency value is "week" or "month", the schedule executes one day a week or one day a month only, respectively.
{"minutes":[15]} Задание выполняется через 15 минут после наступления каждого часа.Run at 15 minutes past every hour.

Этот триггер выполняется через 15 минут после наступления каждого часа, начиная с 00:15, 01:15, 02:15 и т. д. и заканчивая в 23:15.This trigger runs every hour at 15 minutes past the hour starting at 00:15 AM, 1:15 AM, 2:15 AM, and so on, and ending at 11:15 PM.
{"hours":[17], "weekDays":["saturday"]} Задание выполняется в 17:00 каждую субботу.Run at 5:00 PM on Saturdays every week.
{"hours":[17], "weekDays":["monday", "wednesday", "friday"]} Задание выполняется в 17:00 в каждые понедельник, среду и пятницу.Run at 5:00 PM on Monday, Wednesday, and Friday every week.
{"minutes":[15,45], "hours":[17], "weekDays":["monday", "wednesday", "friday"]} Задание выполняется в 17:15 и 17:45 в каждые понедельник, среду и пятницу.Run at 5:15 PM and 5:45 PM on Monday, Wednesday, and Friday every week.
{"minutes":[0,15,30,45], "weekDays":["monday", "tuesday", "wednesday", "thursday", "friday"]} Задание выполняется каждые 15 минут в каждый рабочий день.Run every 15 minutes on weekdays.
{"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 в каждый рабочий день.Run every 15 minutes on weekdays between 9:00 AM and 4:45 PM.
{"weekDays":["tuesday", "thursday"]} Задание выполняется по вторникам и четвергам в указанное время начала.Run on Tuesdays and Thursdays at the specified start time.
{"minutes":[0], "hours":[6], "monthDays":[28]} Задание выполняется в 6:00 28-го числа каждого месяца (при условии, что значение frequency — "month").Run at 6:00 AM on the twenty-eighth day of every month (assuming a frequency value of "month").
{"minutes":[0], "hours":[6], "monthDays":[-1]} Задание выполняется в 06:00 в последний день месяца.Run at 6:00 AM on the last day of the month.

Чтобы триггер запускался в последний день месяца, используйте "-1" вместо значения 28, 29, 30 или 31.To run a trigger on the last day of a month, use -1 instead of day 28, 29, 30, or 31.
{"minutes":[0], "hours":[6], "monthDays":[1,-1]} Задание выполняется в 06:00 в первый и последний день каждого месяца.Run at 6:00 AM on the first and last day of every month.
{monthDays":[1,14]} Выполняется в первый и 14-й день каждого месяца в указанное время начала.Run on the first and fourteenth day of every month at the specified start time.
{"minutes":[0], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1}]} Задание выполняется в первую пятницу каждого месяца в 05:00.Run on the first Friday of every month at 5:00 AM.
{"monthlyOccurrences":[{"day":"friday", "occurrence":1}]} Задание выполняется в первую пятницу каждого месяца в указанное время начала.Run on the first Friday of every month at the specified start time.
{"monthlyOccurrences":[{"day":"friday", "occurrence":-3}]} Задание выполняется в третью пятницу с конца каждого месяца в указанное время начала.Run on the third Friday from the end of the month, every month, at the specified start time.
{"minutes":[15], "hours":[5], "monthlyOccurrences":[{"day":"friday", "occurrence":1},{"day":"friday", "occurrence":-1}]} Задание выполняется в первую и последнюю пятницу каждого месяца в 05:15.Run on the first and last Friday of every month at 5:15 AM.
{"monthlyOccurrences":[{"day":"friday", "occurrence":1},{"day":"friday", "occurrence":-1}]} Задание выполняется в первую и последнюю пятницу каждого месяца в указанное время начала.Run on the first and last Friday of every month at the specified start time.
{"monthlyOccurrences":[{"day":"friday", "occurrence":5}]} Задание выполняется в пятую пятницу каждого месяца в указанное время начала.Run on the fifth Friday of every month at the specified start time.

Оно не выполняется, если пятой пятницы в месяце нет.When there's no fifth Friday in a month, the pipeline doesn't run. Чтобы триггер выполнялся в последнюю пятницу месяца, используйте вместо значения повторения 5 значение –1.To run the trigger on the last occurring Friday of the month, consider using -1 instead of 5 for the occurrence value.
{"minutes":[0,15,30,45], "monthlyOccurrences":[{"day":"friday", "occurrence":-1}]} Задание выполняется каждые 15 минут в последнюю пятницу месяца.Run every 15 minutes on the last Friday of the month.
{"minutes":[15,45], "hours":[5,17], "monthlyOccurrences":[{"day":"wednesday", "occurrence":3}]} Задание выполняется в 5:15, 5:45, 17:15, 17:45 в третью среду каждого месяца.Run at 5:15 AM, 5:45 AM, 5:15 PM, and 5:45 PM on the third Wednesday of every month.

Сравнение типов триггеровTrigger type comparison

Триггер "переворачивающегося" окна и триггер расписания работают с одинаковыми интервалами времени.The tumbling window trigger and the schedule trigger both operate on time heartbeats. Чем они отличаются?How are they different?

В следующей таблице представлено сравнение триггера "переворачивающегося" окна и триггера расписания:The following table provides a comparison of the tumbling window trigger and schedule trigger:

Триггер "переворачивающегося" окнаTumbling window trigger Триггер планировщикаSchedule trigger
Сценарии с задним числомBackfill scenarios Поддерживается.Supported. Выполнения конвейера можно запланировать для окон в прошлом.Pipeline runs can be scheduled for windows in the past. Не поддерживается.Not supported. Конвейер можно выполнить только в периоды времени в настоящем и будущем.Pipeline runs can be executed only on time periods from the current time and the future.
НадежностьReliability 100 % надежность.100% reliability. Запуск конвейеров можно запланировать для всех окон с заданной датой начала без пробелов.Pipeline runs can be scheduled for all windows from a specified start date without gaps. Меньшая надежность.Less reliable.
Повторные попыткиRetry capability Поддерживается.Supported. При сбое запуска конвейера по умолчанию политика повторного запуска настроена на 0 повторных попыток. Или пользователь может указать количество повторных попыток в определении триггера.Failed pipeline runs have a default retry policy of 0, or a policy that's specified by the user in the trigger definition. Автоматически выполняет повтор при сбое конвейера из-за ограничений параллелизма, сервера и регулирования (т. е. коды состояния "400: ошибка пользователя", "429: слишком много запросов" и "500: внутренняя ошибка сервера").Automatically retries when pipeline runs fail due to concurrency/server/throttling limits (that is, status codes 400: User Error, 429: Too many requests, and 500: Internal Server error). Не поддерживается.Not supported.
ПараллелизмConcurrency Поддерживается.Supported. Пользователи могут явно задавать ограничения параллелизма для триггера.Users can explicitly set concurrency limits for the trigger. Триггер может параллельно запустить от 1 до 50 конвейеров.Allows between 1 and 50 concurrent triggered pipeline runs. Не поддерживается.Not supported.
Системные переменныеSystem variables Поддерживают использование системных переменных WindowStart и WindowEnd.Supports the use of the WindowStart and WindowEnd system variables. Пользователи могут получить доступ к triggerOutputs().windowStartTime и triggerOutputs().windowEndTime как к системным переменным триггера в определении триггера.Users can access triggerOutputs().windowStartTime and triggerOutputs().windowEndTime as trigger system variables in the trigger definition. Значения используются как время начала и окончания окна соответственно.The values are used as the window start time and window end time, respectively. Например, для триггера "переворачивающегося" окна, выполняющегося каждый час, в окне от 1:00 до 2:00 определением является triggerOutputs().WindowStartTime = 2017-09-01T01:00:00Z и triggerOutputs().WindowEndTime = 2017-09-01T02:00:00Z.For example, for a tumbling window trigger that runs every hour, for the window 1:00 AM to 2:00 AM, the definition is triggerOutputs().WindowStartTime = 2017-09-01T01:00:00Z and triggerOutputs().WindowEndTime = 2017-09-01T02:00:00Z. Не поддерживается.Not supported.
Связь конвейера и триггераPipeline-to-trigger relationship Поддерживает связь "один к одному".Supports a one-to-one relationship. Вы можете активировать только один конвейер.Only one pipeline can be triggered. Поддерживает связи "многие ко многим"Supports many-to-many relationships. Несколько триггеров могут запускать один конвейер.Multiple triggers can kick off a single pipeline. Один триггер может запускать несколько конвейеров.A single trigger can kick off multiple pipelines.

Следующие шагиNext steps

Ознакомьтесь со следующими руководствами:See the following tutorials: