Создание триггера, который запускает конвейер в "переворачивающемся" окнеCreate a trigger that runs a pipeline on a tumbling window

Эта статья содержит шаги по созданию, запуску и мониторингу триггера "переворачивающегося" окна.This article provides steps to create, start, and monitor a tumbling window trigger. Дополнительные сведения о триггерах и поддерживаемых типах см. в статье Выполнение конвейера и триггеры в фабрике данных Azure.For general information about triggers and the supported types, see Pipeline execution and triggers.

Триггер "переворачивающегося" окна — это тип триггера, который активируется с определенным интервалом начиная с указанного времени запуска, сохраняя состояние.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. Триггер "переворачивающегося" окна имеет связь "один к одному" с конвейером и может ссылаться только на один конвейер.A tumbling window trigger has a one-to-one relationship with a pipeline and can only reference a singular pipeline.

Пользовательский интерфейс Фабрики данныхData Factory UI

Чтобы создать триггер "переворачивающегося" окна на портале Azure, последовательно выберите Триггер > Tumbling window ("Переворачивающееся" окно) > Далее, а затем настройте свойства, определяющие "переворачивающееся" окно.To create a tumbling window trigger in the Azure portal, select Trigger > Tumbling window > Next, and then configure the properties that define the tumbling window.

Создание триггера "переворачивающегося" окна на портале Azure

Свойства типа триггера "переворачивающегося" окнаTumbling window trigger type properties

"Переворачивающееся" окно имеет следующие свойства типа триггеров:A tumbling window has the following trigger type properties:

{
    "name": "MyTriggerName",
    "properties": {
        "type": "TumblingWindowTrigger",
        "runtimeState": "<<Started/Stopped/Disabled - readonly>>",
        "typeProperties": {
            "frequency": <<Minute/Hour>>,
            "interval": <<int>>,
            "startTime": "<<datetime>>",
            "endTime: <<datetime – optional>>,
            "delay": <<timespan – optional>>,
            “maxConcurrency”: <<int>> (required, max allowed: 50),
            "retryPolicy": {
                "count": <<int - optional, default: 0>>,
                “intervalInSeconds”: <<int>>,
            },
            "dependsOn": [
                {
                    "type": "TumblingWindowTriggerDependencyReference",
                    "size": <<timespan – optional>>,
                    "offset": <<timespan – optional>>,
                    "referenceTrigger": {
                        "referenceName": "MyTumblingWindowDependency1",
                        "type": "TriggerReference"
                    }
                },
                {
                    "type": "SelfDependencyTumblingWindowTriggerReference",
                    "size": <<timespan – optional>>,
                    "offset": <<timespan>>
                }
            ]
        },
        "pipeline": {
            "pipelineReference": {
                "type": "PipelineReference",
                "referenceName": "MyPipelineName"
            },
            "parameters": {
                "parameter1": {
                    "type": "Expression",
                    "value": "@{concat('output',formatDateTime(trigger().outputs.windowStartTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
                },
                "parameter2": {
                    "type": "Expression",
                    "value": "@{concat('output',formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
                },
                "parameter3": "https://mydemo.azurewebsites.net/api/demoapi"
            }
        }
    }
}

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

Элемент JSONJSON element ОписаниеDescription TypeType Допустимые значенияAllowed values Обязательное значениеRequired
typetype Тип триггера.The type of the trigger. Тип является фиксированным значением "Тумблингвиндовтригжер".The type is the fixed value "TumblingWindowTrigger". СтроковоеString "TumblingWindowTrigger""TumblingWindowTrigger" ДаYes
runtimeStateruntimeState Текущее состояние времени выполнения триггера.The current state of the trigger run time.
Примечание. Этот элемент — <readOnly>.Note: This element is <readOnly>.
СтроковоеString "Started," "Stopped," "Disabled""Started," "Stopped," "Disabled" ДаYes
frequencyfrequency Строка, представляющая единицу частоты (минуты или часы), с которой выполняется триггер.A string that represents the frequency unit (minutes or hours) at which the trigger recurs. Если значения даты startTime являются более детализированными, чем значение частоты, даты startTime учитываются при вычислении границ окна.If the startTime date values are more granular than the frequency value, the startTime dates are considered when the window boundaries are computed. Например, если значение частоты соответствует ежечасному выполнению, а значение startTime — 2017-09-01T10:10:10Z, первое окно будет (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z).For example, if the frequency value is hourly and the startTime value is 2017-09-01T10:10:10Z, the first window is (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). СтроковоеString "minute," "hour""minute," "hour" ДаYes
intervalinterval Положительное целое число, указывающее интервал для значения frequency, которое определяет, как часто выполняется триггер.A positive integer that denotes the interval for the frequency value, which determines how often the trigger runs. Например, если interval имеет значение 3, а для элемента frequency выбран вариант "hour", триггер будет выполняться один раз каждые 3 часа.For example, if the interval is 3 and the frequency is "hour," the trigger recurs every 3 hours. Целое числоInteger Положительное целое число.A positive integer. ДаYes
startTimestartTime Первое возникновение, которое может быть в прошлом.The first occurrence, which can be in the past. Первым интервалом триггера является (startTime, startTime + interval).The first trigger interval is (startTime, startTime + interval). DateTimeDateTime Значение даты и времени.A DateTime value. ДаYes
endTimeendTime Последнее возникновение, которое может быть в прошлом.The last occurrence, which can be in the past. DateTimeDateTime Значение даты и времени.A DateTime value. ДаYes
delaydelay Время задержки до начала обработки данных окна.The amount of time to delay the start of data processing for the window. Запуск конвейера начинается после истечения ожидаемого времени выполнения плюс время задержки.The pipeline run is started after the expected execution time plus the amount of delay. Задержка определяет, как долго триггер ожидает, прежде чем начать новое выполнение по окончании предыдущего.The delay defines how long the trigger waits past the due time before triggering a new run. Задержка не изменяет окно startTime.The delay doesn’t alter the window startTime. Например, значение задержки 00:10:00 подразумевает задержку длительностью 10 минут.For example, a delay value of 00:10:00 implies a delay of 10 minutes. Временной диапазонTimespan
(чч:мм:сс)(hh:mm:ss)
Значение времени, где время по умолчанию — 00:00:00.A timespan value where the default is 00:00:00. НетNo
maxConcurrencymaxConcurrency Количество одновременных выполнений триггеров, запущенных в окнах, которые готовы.The number of simultaneous trigger runs that are fired for windows that are ready. Например, чтобы заполнить ежечасные запуски для вчерашних результатов в 24 окнах.For example, to back fill hourly runs for yesterday results in 24 windows. Если maxConcurrency равно 10, события триггера активируются только для первых 10 окон (00:00–01:00 — 09:00–10:00).If maxConcurrency = 10, trigger events are fired only for the first 10 windows (00:00-01:00 - 09:00-10:00). После завершения первых 10 активированных выполнений конвейера выполнения триггер запускается для следующих 10 окон (10:00–11:00 — 19:00–20:00).After the first 10 triggered pipeline runs are complete, trigger runs are fired for the next 10 windows (10:00-11:00 - 19:00-20:00). Продолжая пример с maxConcurrency равным 10, если 10 окон готовы, значит есть всего 10 выполнений конвейера.Continuing with this example of maxConcurrency = 10, if there are 10 windows ready, there are 10 total pipeline runs. Если готово только одно окно, значит готово только 1 выполнение конвейера.If there's only 1 window ready, there's only 1 pipeline run. Целое числоInteger Целое число от 1 до 50.An integer between 1 and 50. ДаYes
retryPolicy: CountretryPolicy: Count Число повторных попыток, после которых выполнение конвейера будет помечено как "Failed".The number of retries before the pipeline run is marked as "Failed." Целое числоInteger Целое число, в котором значение по умолчанию — 0 (повторы отсутствуют).An integer, where the default is 0 (no retries). НетNo
retryPolicy: intervalInSecondsretryPolicy: intervalInSeconds Задержка между повторными попытками (в секундах).The delay between retry attempts specified in seconds. Целое числоInteger Количество секунд, где значение по умолчанию — 30.The number of seconds, where the default is 30. НетNo
dependsOn: типdependsOn: type Тип Тумблингвиндовтригжерреференце.The type of TumblingWindowTriggerReference. Требуется, если задана зависимость.Required if a dependency is set. СтроковоеString "Тумблингвиндовтригжердепенденциреференце", "Селфдепенденцитумблингвиндовтригжерреференце""TumblingWindowTriggerDependencyReference", "SelfDependencyTumblingWindowTriggerReference" НетNo
dependsOn: размерdependsOn: size Размер окна "переворачивающегося" зависимостей.The size of the dependency tumbling window. Временной диапазонTimespan
(чч:мм:сс)(hh:mm:ss)
Положительное значение TimeSpan, где по умолчанию — размер окна дочернего триггераA positive timespan value where the default is the window size of the child trigger НетNo
dependsOn: смещениеdependsOn: offset Смещение триггера зависимостей.The offset of the dependency trigger. Временной диапазонTimespan
(чч:мм:сс)(hh:mm:ss)
Значение TimeSpan, которое должно быть отрицательным в самостоятельной зависимости.A timespan value that must be negative in a self-dependency. Если значение не указано, окно совпадает с самим триггером.If no value specified, the window is the same as the trigger itself. Самозависимость: ДаSelf-Dependency: Yes
Другое: НетOther: No

Системные переменные WindowStart и WindowEndWindowStart and WindowEnd system variables

Системные переменные WindowStart и WindowEnd триггера "переворачивающегося" окна можно использовать в определении конвейера (то есть для части запроса).You can use the WindowStart and WindowEnd system variables of the tumbling window trigger in your pipeline definition (that is, for part of a query). Передайте системные переменные в качестве параметров конвейера в определении триггера.Pass the system variables as parameters to your pipeline in the trigger definition. В следующем примере показано, как передавать эти переменные в качестве параметров:The following example shows you how to pass these variables as parameters:

{
    "name": "MyTriggerName",
    "properties": {
        "type": "TumblingWindowTrigger",
            ...
        "pipeline": {
            "pipelineReference": {
                "type": "PipelineReference",
                "referenceName": "MyPipelineName"
            },
            "parameters": {
                "MyWindowStart": {
                    "type": "Expression",
                    "value": "@{concat('output',formatDateTime(trigger().outputs.windowStartTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
                },
                "MyWindowEnd": {
                    "type": "Expression",
                    "value": "@{concat('output',formatDateTime(trigger().outputs.windowEndTime,'-dd-MM-yyyy-HH-mm-ss-ffff'))}"
                }
            }
        }
    }
}

Чтобы использовать значения системных переменных WindowStart и WindowEnd в определении конвейера, используйте параметры "MyWindowStart" и "MyWindowEnd" соответственно.To use the WindowStart and WindowEnd system variable values in the pipeline definition, use your "MyWindowStart" and "MyWindowEnd" parameters, accordingly.

Порядок выполнения окон в сценарии с обратным заполнениемExecution order of windows in a backfill scenario

Если есть несколько окон для выполнения (особенно в сценарии с обратным заполнением), порядок выполнения окон является детерминированным: от старых интервалов к новым.When there are multiple windows up for execution (especially in a backfill scenario), the order of execution for windows is deterministic, from oldest to newest intervals. В настоящее время это поведение изменить невозможно.Currently, this behavior can't be modified.

Имеющиеся элементы TriggerResourceExisting TriggerResource elements

Следующие пункты относятся к имеющимся элементам TriggerResource:The following points apply to existing TriggerResource elements:

  • Если значение для элемента frequency (или размера окна) триггера изменяется, состояние окон, которые уже обрабатываются, не сбрасывается.If the value for the frequency element (or window size) of the trigger changes, the state of the windows that are already processed is not reset. Триггер продолжает запускать окна из последнего окна, которое выполнено с использованием нового размера окна.The trigger continues to fire for the windows from the last window that it executed by using the new window size.
  • Если значение для элемента endTime триггера изменяется (добавляется или обновляется), состояние окон, которые уже обрабатываются, не сбрасывается.If the value for the endTime element of the trigger changes (added or updated), the state of the windows that are already processed is not reset. Триггер использует новое значение endTime.The trigger honors the new endTime value. Триггер останавливается, если новое значение endTime предшествует окну, которое уже выполняется.If the new endTime value is before the windows that are already executed, the trigger stops. В противном случае триггер останавливается, когда встречается новое значение endTime.Otherwise, the trigger stops when the new endTime value is encountered.

Зависимость триггера окна "переворачивающегося"Tumbling window trigger dependency

Если вы хотите убедиться, что триггер окна "переворачивающегося" выполняется только после успешного выполнения другого триггера "переворачивающегося" окна в фабрике данных, создайте зависимость окна "переворачивающегося".If you want to make sure that a tumbling window trigger is executed only after the successful execution of another tumbling window trigger in the data factory, create a tumbling window trigger dependency.

Пример для Azure PowerShellSample for Azure 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 для создания, запуска и мониторинга триггера.This section shows you how to use Azure PowerShell to create, start, and monitor a trigger.

  1. Создайте файл JSON с именем MyTrigger.json в папке C:\ADFv2QuickStartPSH со следующим содержимым:Create a JSON file named MyTrigger.json in the C:\ADFv2QuickStartPSH\ folder with the following content:

    Важно!

    Прежде чем сохранить файл JSON, установите значение элемента startTime на текущее время в формате UTC.Before you save the JSON file, set the value of the startTime element to the current UTC time. Установите значение элемента endTime на один час после текущего времени UTC.Set the value of the endTime element to one hour past the current UTC time.

    {
      "name": "PerfTWTrigger",
      "properties": {
        "type": "TumblingWindowTrigger",
        "typeProperties": {
          "frequency": "Minute",
          "interval": "15",
          "startTime": "2017-09-08T05:30:00Z",
          "delay": "00:00:01",
          "retryPolicy": {
            "count": 2,
            "intervalInSeconds": 30
          },
          "maxConcurrency": 50
        },
        "pipeline": {
          "pipelineReference": {
            "type": "PipelineReference",
            "referenceName": "DynamicsToBlobPerfPipeline"
          },
          "parameters": {
            "windowStart": "@trigger().outputs.windowStartTime",
            "windowEnd": "@trigger().outputs.windowEndTime"
          }
        },
        "runtimeState": "Started"
      }
    }
    
  2. Создайте триггер с помощью командлета Set-AzDataFactoryV2Trigger :Create a trigger by using the Set-AzDataFactoryV2Trigger cmdlet:

    Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
    
  3. Убедитесь, что состояние триггера остановлено с помощью командлета Get-AzDataFactoryV2Trigger :Confirm that the status of the trigger is Stopped by using the Get-AzDataFactoryV2Trigger cmdlet:

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

    Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  5. Убедитесь, что состояние триггера запущено с помощью командлета Get-AzDataFactoryV2Trigger :Confirm that the status of the trigger is Started by using the Get-AzDataFactoryV2Trigger cmdlet:

    Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
    
  6. Получение триггера выполняется в Azure PowerShell с помощью командлета Get-AzDataFactoryV2TriggerRun .Get the trigger runs in Azure PowerShell by using the Get-AzDataFactoryV2TriggerRun cmdlet. Чтобы получить сведения о выполнениях триггера, периодически выполняйте следующую команду.To get information about the trigger runs, execute the following command periodically. Обновите значения TriggerRunStartedAfter и TriggerRunStartedBefore в соответствии со значениями в определении триггера:Update the TriggerRunStartedAfter and TriggerRunStartedBefore values to match the values in your trigger definition:

    Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
    

Сведения о том, как отслеживать выполнения триггера и конвейера на портале Azure, см. в разделе Мониторинг конвейера.To monitor trigger runs and pipeline runs in the Azure portal, see Monitor pipeline runs.

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