Создание пользовательского триггера события для запуска конвейера в Фабрике данных Azure

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

Совет

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

Управляемая событиями архитектура (EDA) — это общий шаблон интеграции данных, включающий в себя производство, обнаружение, потребление и реагирование на события. При выполнении сценариев интеграции данных клиентам Фабрики данных Azure часто требуется запускать конвейеры при возникновении определенных событий. Собственная интеграция Фабрики данных с помощью Сетки событий Azure теперь охватывает пользовательские разделы. Вы отправляете события в раздел сетки событий. Фабрика данных подписывается на раздел, прослушивает события и затем активирует конвейеры соответствующим образом.

Примечание.

Интеграция, описанная в этой статье, зависит от службы Сетка событий Azure. Убедитесь, что ваша подписка зарегистрирована у поставщика ресурсов "Сетка событий". См. дополнительные сведения о поставщиках и типах ресурсов. У вас должна быть возможность выполнить действие Microsoft.EventGrid/eventSubscriptions/. Это действие является частью встроенной роли участника EventGrid EventSubscription Contributor.

Важно!

Если вы используете эту функцию в Azure Synapse Analytics, убедитесь, что ваша подписка также зарегистрирована в поставщике ресурсов Фабрики данных. В противном случае появится сообщение о том, что не удалось создать подписку на события.

Если вы объединяете параметры конвейера с пользовательским триггеррм события, вы можете анализировать и ссылаться на пользовательские полезные данные data при выполнении конвейера. Поскольку поле data в полезных данных пользовательского события является структурой "ключ-значение" JSON в свободной форме, можно управлять выполнением конвейера, управляемого событиями.

Важно!

Если в полезных данных пользовательского события отсутствует ключ, на который ссылается параметр, произойдет сбой trigger run. Вы получите сообщение об ошибке, в котором говорится, что выражение не может быть вычислено, поскольку свойство keyName не существует. В этом случае событие не будет инициировать pipeline run.

Настройка пользовательского раздела в сетке событий

Чтобы использовать триггер настраиваемого события в Фабрике данных, необходимо сначала настроить пользовательский раздел в сетке событий.

Перейдите в службу "Сетка событий Azure" и создайте раздел самостоятельно. Дополнительные сведения о создании пользовательских разделов см. в учебниках на портале по службе "Сетка событий Azure" и в учебниках по CLI.

Примечание.

Рабочий процесс отличается от процесса триггера событий хранилища. В этом случае фабрика данных не настраивает этот раздел.

Фабрика данных предполагает, что события следуют Схеме событий Сетки событий. Убедитесь, что полезные данные события содержат следующие поля:

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]

Создание пользовательского триггера событий с помощью фабрики данных

  1. Перейдите в Фабрику данных Azure и войдите в систему.

  2. Перейдите на вкладку Правка. Найдите значок карандаша.

  3. Выберите Запустить в меню, а затем выберите Создать/изменить.

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

  5. Выберите Пользовательские события для типа.

    Screenshot of Author page to create a new custom event trigger in Data Factory UI.

  6. Выберите настраиваемый раздел в раскрывающемся списке подписки Azure или вручную введите область раздела события.

    Примечание.

    Для создания или изменения настраиваемого триггера событий в Фабрике данных необходимо использовать учетную запись Azure с соответствующим управлением доступом на основе ролей (Azure RBAC). Дополнительное разрешение не требуется. Субъект-служба фабрики данных не требует специального разрешения для сетки событий. Дополнительные сведения о контроле доступа см. в статье Контроль доступа на основе ролей.

  7. Свойства Тема начинается с и Тема заканчивается на позволяет фильтровать события, чтобы их инициировать. Оба свойства являются необязательными.

  8. Используйте + Создать для добавления Типов событий для фильтрации. Список триггеров пользовательских событий использует отношение "ИЛИ". При выполнении пользовательского события со свойством eventType, соответствующим одному из них в списке, запускается конвейер. Тип события вводится без учета регистра. Например, на следующем снимке экрана триггер соответствует всем событиям copycompleted или copysucceeded, имеющим тему, которая начинается с фабрик.

    Screenshot of Edit Trigger page to explain Event Types and Subject filtering in Data Factory UI.

  9. Триггер пользовательского события может анализировать и отсылать полезные пользовательские данные data в конвейер. Создайте параметры конвейера, а затем заполните значения на странице Параметры. Используйте формат @triggerBody().event.data._keyName_, чтобы проанализировать полезные данные и передать значения в параметры конвейера.

    Подробное описание см. в следующих статьях:

    Screenshot of pipeline parameters settings.

    Screenshot of the parameters page to reference data payload in custom event.

  10. Введите параметры и нажмите клавишу OK.

Расширенная фильтрация

Пользовательский триггер события поддерживает расширенные возможности фильтрации, аналогичные расширенной фильтрации Сетки событий. Эти условные фильтры дают возможность активировать конвейеры на основе значений полезных данных событий. Например, в полезных данных события может быть поле с именем Department, и конвейер должен активироваться, только когда значение Department равно Finance. Вы также можете задать сложную логику, например поле date входит в список [1, 2, 3, 4, 5], поле monthне входит в список [11, 12], поле tag содержит любое из значений ['Fiscal Year 2021', 'FiscalYear2021', 'FY2021'].

Screenshot of setting advanced filters for customer event trigger

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

  • NumberIn;
  • NumberNotIn.
  • NumberLessThan;
  • NumberGreaterThan;
  • NumberGreaterThanOrEquals;
  • NumberGreaterThanOrEquals;
  • BoolEquals
  • StringContains;
  • StringBeginsWith;
  • StringEndsWith;
  • StringIn;
  • StringNotIn.

Нажмите кнопку +Создать, чтобы добавить новые условия фильтра.

Кроме того, на пользовательские триггеры событий распространяются те же ограничения, что и на сетку событий, в том числе:

  • 5 расширенных фильтров и 25 значений для всех фильтров на пользовательский триггер события;
  • 512 знаков для значения строки;
  • 5 значений для операторов in и not in
  • ключи не могут содержать символ . (точку), например john.doe@contoso.com. В настоящее время escape-символы в ключах не поддерживаются.
  • Один ключ можно использовать в нескольких фильтрах.

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

Схема JSON

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

Элемент JSON Описание Тип Допустимые значения Обязательное поле
scope Идентификатор ресурса Azure Resource Manager для раздела сетки событий. Строка Идентификатор Azure Resource Manager Да
events Тип событий, вызывающих срабатывание триггера. Массив строк Да, ожидается по крайней мере одно значение.
subjectBeginsWith Поле subject должно начинаться с шаблона, указанного для срабатывания триггера. Например, фабрики вызывают триггер только для субъектов событий, имена которых начинаются со слова factories. Строка Нет
subjectEndsWith Поле subject должно заканчиваться шаблоном, указанным для срабатывания триггера. Строка Нет
advancedFilters Список больших двоичных объектов JSON, каждый из которых задает условие фильтра. Каждый большой двоичный объект задает атрибуты key, operatorType и values. Список больших двоичных объектов JSON No

Управление доступом на основе ролей

Фабрика данных Azure использует управление доступом на основе ролей (RBAC) в Azure, чтобы запретить несанкционированный доступ. Для правильной работы фабрике данных необходим доступ к следующему:

  • Прослушивание событий.
  • Подписка на обновления событий.
  • Активирование конвейеров, связанных с пользовательскими событиями.

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

Фабрике данных не требуется специальное разрешение для сетки событий. Вам также не нужно назначать специальное разрешение роли Azure RBAC субъекту-службе Фабрики данных для операции.

В частности, требуется разрешение Microsoft.EventGrid/EventSubscriptions/Write для /subscriptions/####/resourceGroups//####/providers/Microsoft.EventGrid/topics/someTopics.

  • При создании в фабрике данных (например, в среде разработки) используемая для входа учетная запись Azure должна иметь указанное выше разрешение.
  • При публикации с помощью CI/CD учетная запись, используемая для публикации шаблона ARM в тестовой или рабочей фабрике, должна иметь указанное выше разрешение.