Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure
Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
Эта статья содержит шаги по созданию, запуску и мониторингу триггера "переворачивающегося" окна. Дополнительные сведения о триггерах и поддерживаемых типах см. в статье Выполнение конвейера и триггеры.
Триггер "переворачивающегося" окна — это тип триггера, который активируется с определенным интервалом начиная с указанного времени запуска, сохраняя состояние. Тумблирующие окна — это ряд фиксированных, неперекрывающихся и смежных интервалов времени. Триггер "переворачивающегося" окна имеет связь "один к одному" с конвейером и может ссылаться только на один конвейер.
Триггер скользящего окна — это более сложный вариант триггера расписания. Он предлагает набор функций для сложных сценариев, таких как (зависимость от других триггеров переворачивающегося окна, повторное выполнение неудачного задания и настройка повторных попыток пользователя для конвейеров). Дополнительные сведения о разнице между триггером расписания и триггером переворачивающегося окна см. в разделе "Сравнение типов триггеров".
Фабрика данных Azure и портал Azure Synapse
- Чтобы создать оконный периодический триггер на портале Azure, перейдите на вкладку Триггеры и щелкните Создать.
- После открытия области конфигурации триггера выберите "Переворачивающееся окно". Затем определите свойства триггера переворачивающегося окна.
- По завершении выберите Сохранить.
Свойства типа триггера окна скольжения
"Переворачивающееся" окно имеет следующие свойства типа триггеров:
{
"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, связанных с повторением и планированием триггера скользящего окна.
Элемент JSON | Описание | Тип | Допустимые значения | Обязательное поле |
---|---|---|---|---|
type |
Тип триггера. Фиксированное значение type это TumblingWindowTrigger . |
String |
TumblingWindowTrigger |
Да |
runtimeState |
Текущее состояние времени выполнения триггера. Этот элемент <только для чтения>. |
String |
Started
Stopped
Disabled
|
Да |
frequency |
Строка, представляющая единицу частоты (минуты, часы или месяцы), по которой триггер рекурсирует.
startTime Если значения даты более детализированы, чем frequency значение, startTime даты учитываются при вычислении границ окна. Например, если значение frequency равно hourly , а значение startTime равно 2017-09-01T10:10:10Z, первое окно — (2017-09-01T10:10:10Z, 2017-09-01T11:10:10Z). |
String |
Minute
Hour , Month |
Да |
interval |
Положительное целое число, указывающее интервал для frequency значения, которое определяет частоту выполнения триггера. Например, если interval является 3 и frequency является hour , триггер повторяется каждые 3 часа. Минимальный интервал окна составляет 5 минут. |
Integer |
Положительное целое число. | Да |
startTime |
Первое проявление, которое могло произойти в прошлом. Первый интервал триггера — (startTime , startTime + interval ). |
DateTime |
Некоторое значение DateTime . |
Да |
endTime |
Последний случай, который может быть в прошлом. | DateTime |
Некоторое значение DateTime . |
Да |
delay |
Время задержки до начала обработки данных для временного интервала. Запуск конвейера начинается после истечения ожидаемого времени выполнения плюс время задержки. Задержка определяет, как долго триггер ожидает после истечения запланированного времени, прежде чем начать новое выполнение. Задержка не изменяет окно startTime . Например, delay значение 00:10:00 подразумевает задержку в 10 минут. |
Timespan (чч:мм:сс) |
Значение timespan , где используется значение по умолчанию 00:00:00 . |
Нет |
maxConcurrency |
Количество одновременных запусков триггеров для окон, которые готовы. Например, для резервного копирования почасовой запуск за вчерашний день приводит к 24 окнам. Если maxConcurrency = 10, события триггера запускаются только для первых 10 окон (00:00-01:00 - 09:00-10:00). После завершения первых 10 активированных выполнений конвейера выполняются запуски триггера для следующих 10 временных окон (с 10:00 до 11:00 до 19:00 до 20:00). Продолжая этот пример maxConcurrency = 10, если готово 10 окон, то всего имеется 10 запусков конвейера. Если готово лишь одно окно, выполняется только один поток. |
Integer |
Целое число от 1 до 50. | Да |
retryPolicy: Count |
Число повторных попыток перед запуском конвейера помечается как Failed . |
Integer |
Целое число, в котором значение по умолчанию — 0 (повторы отсутствуют). | Нет |
retryPolicy: intervalInSeconds |
Задержка между повторными попытками (в секундах). | Integer |
Количество секунд, где значение по умолчанию — 30. Минимальное значение — 30 . |
Нет |
dependsOn: type |
Тип параметра TumblingWindowTriggerReference . Требуется, если установлена зависимость. |
String |
TumblingWindowTriggerDependencyReference , SelfDependencyTumblingWindowTriggerReference |
Нет |
dependsOn: size |
Размер "переворачивающегося" окна зависимости. | Timespan (чч:мм:сс) |
Положительное timespan значение, в котором по умолчанию используется размер окна дочернего триггера. |
Нет |
dependsOn: offset |
Смещение триггера зависимости. | Timespan (чч:мм:сс) |
Значение timespan , которое должно быть отрицательным при самозависимости. Если значение не указано, окно совпадает с самим триггером. |
Самозависимость: да Другое: нет |
Примечание.
После публикации триггера скользящего окна значения interval
и frequency
нельзя изменить.
Системные переменные WindowStart и WindowEnd
В вашем определении WindowStart
можно использовать переменные системы WindowEnd
и триггера переворачивающегося окна (т. е. для части запроса). Передайте системные переменные в качестве параметров конвейера в определении триггера. В следующем примере показано, как передать эти переменные в качестве параметров.
{
"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
.
Порядок выполнения окон в сценарии с обратным заполнением
Если триггер startTime
сработал в прошлом, то на основе формулы M=(CurrentTime- TriggerStartTime)/TumblingWindowSize триггер создает {M} запусков обратного заполнения параллельно, соблюдая параллелизм триггера, перед выполнением будущих запусков. Порядок выполнения для окон детерминирован — от самых старых до самых новых интервалов. В настоящее время это поведение изменить невозможно.
Примечание.
В этом сценарии все запуски из выбранного параметра startTime
выполняются перед выполнением будущих запусков. Если вам нужно компенсировать длинный период, рекомендуется выполнить первоначальную загрузку исторических данных.
Имеющиеся элементы TriggerResource
Следующие моменты относятся к обновлению существующих TriggerResource
элементов:
- Значение для
frequency
элемента (или размера окна) триггера вместе сinterval
элементом невозможно изменить после создания триггера. Это ограничение необходимо для правильного функционирования повторныхtriggerRun
запусков и оценки зависимостей. - Если значение элемента
endTime
триггера изменяется путем добавления или обновления, состояние уже обработанных окон не сбрасывается. Триггер учитывает новоеendTime
значение. Если новоеendTime
значение находится перед окнами, которые уже выполнены, триггер останавливается. В противном случае триггер останавливается при обнаружении новогоendTime
значения.
Повторные попытки, назначенные пользователем конвейеров
В случае сбоев конвейера триггер переворачивающегося окна может автоматически повторить выполнение указанного конвейера, используя те же входные параметры без вмешательства пользователя.
retryPolicy
Используйте свойство в определении триггера, чтобы указать это действие.
Зависимость триггера скользящего окна
Если вы хотите убедиться, что триггер скользящего окна выполняется только после успешного выполнения другого триггера скользящего окна в Data Factory, создайте зависимость триггера скользящего окна.
Отмена запуска переворачивающегося окна
Можно отменить запуски для триггера переворачивающегося окна, если конкретное окно находится в состоянии Ожидания, Ожидания зависимости, или Выполнения:
- Если окно находится в состоянии Запущено, отмените связанное выполнение конвейера, и запуск триггера помечается как отменено после этого.
- Если окно находится в состоянии ожидания или ожидания зависимости, вы можете отменить это состояние через мониторинг.
Вы также можете повторно запустить отмененное окно. Повторное выполнение принимает последние опубликованные определения триггера. Зависимости для указанного окна повторно вычисляются при повторном запуске.
Пример для Azure PowerShell и Azure CLI
В этом разделе показано, как использовать Azure PowerShell для создания, запуска и мониторинга триггера.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как выполнить миграцию на модуль Az PowerShell, см. статью Перенос Azure PowerShell с AzureRM на Az.
Предварительные условия
- Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.
- Azure PowerShell. Выполните инструкции по установке Azure PowerShell в Windows с помощью PowerShellGet.
- Фабрика данных Azure. Следуйте инструкциям в статье "Создание Фабрика данных Azure с помощью PowerShell для создания фабрики данных и конвейера".
Пример кода
Создайте файл JSON с именем MyTrigger.json в папке C:\ADFv2QuickStartPSH со следующим содержимым:
Внимание
Перед сохранением JSON-файла установите значение элемента
startTime
на текущее время по всемирному координированному времени (UTC). Установите значение элементаendTime
на один час позже текущего времени по UTC.{ "name": "PerfTWTrigger", "properties": { "type": "TumblingWindowTrigger", "typeProperties": { "frequency": "Minute", "interval": "15", "startTime": "2017-09-08T05:30:00Z", "endTime" : "2017-09-08T06: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" } }
Создайте триггер с помощью командлета Set-AzDataFactoryV2Trigger:
Set-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger" -DefinitionFile "C:\ADFv2QuickStartPSH\MyTrigger.json"
Убедитесь, что триггер находится в состоянии Остановлено, используя командлет Get AzDataFactoryV2Trigger:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Запустите триггер с помощью командлета: Start-AzDataFactoryV2Trigger:
Start-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Убедитесь, что триггер находится в состоянии Запущено, используя командлет:Get-AzDataFactoryV2Trigger:
Get-AzDataFactoryV2Trigger -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -Name "MyTrigger"
Получите сведения о выполнениях триггера в Azure PowerShell с помощью командлета Get-AzDataFactoryV2TriggerRun. Чтобы получить сведения о выполнениях триггера, периодически выполняйте следующую команду. Обновите значения
TriggerRunStartedAfter
иTriggerRunStartedBefore
, чтобы они соответствовали значениям в определении триггера.Get-AzDataFactoryV2TriggerRun -ResourceGroupName $ResourceGroupName -DataFactoryName $DataFactoryName -TriggerName "MyTrigger" -TriggerRunStartedAfter "2017-12-08T00:00:00" -TriggerRunStartedBefore "2017-12-08T01:00:00"
Чтобы отслеживать запуски триггеров и конвейеров на портале Azure, см. Мониторинг конвейера.