Как использовать минимальное количество веб-действий для отправки уведомлений в конвейере ADF?

Я использую веб-активность для отправки уведомлений о запуске конвейера в командах MS. Мое требование — использовать минимальное количество веб-действий для снижения затрат. В то же время я хочу получать уведомления в случае сбоя какого-либо действия. Пожалуйста, предложите идеальное соединение с учетом вышеуказанного требования.

Я хочу использовать как можно меньшее количество действий для отправки уведомлений. Я попытался подключиться, используя только одно веб-действие, но это не удалось.


66
2

Ответы:

Решено

Это будет сложная задача, требующая множества действий по отправке сообщения о любом сбое активности в конвейере.

Для этого требования можно использовать действие конвейера выполнения. Но для этого требуется еще один родительский конвейер. Удалите веб-действия, поместите все необходимые действия в конвейер и вызовите этот конвейер из другого конвейера (родительского).

Здесь при сбое любого действия в дочернем конвейере действие «Выполнение конвейера» завершится неудачно, и оно содержит информацию о сообщении об ошибке и имени действия.

Следуйте приведенной ниже демонстрации для лучшего понимания:

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

Теперь в родительском конвейере вызовите этот конвейер с помощью действия «Выполнение конвейера» и убедитесь, что вы установили флажок «Ожидать завершения».

По завершении конвейера выполнения я добавил действие установки переменной с переменной Chat_message. Это выражение для получения сообщения в чате.

@if (equals(activity('Execute Pipeline1').status,'Succeeded'),'The pipeline succeeded',concat('The pipeline failed. The activity name is : ',substring(activity('Execute Pipeline1').error.message, add(indexOf(activity('Execute Pipeline1').error.message,'target'),7), sub(sub(indexOf(activity('Execute Pipeline1').error.message,'failed'),1),add(indexOf(activity('Execute Pipeline1').error.message,'target'),7))),' and the Error message is : ',split(activity('Execute Pipeline1').Error.message,'failed: ')[1]))

При сбое любого действия дочернего конвейера происходит сбой всего конвейера, а также происходит сбой действия «Выполнение конвейера» в родительском конвейере.

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

**Сообщение при сбое дочернего конвейера: **

**Сообщение об успешном завершении конвейера: **

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


Один из способов, как заявил Ракеш, — использовать активность конвейера выполнения, но это означает управление дополнительным конвейером. Вы также можете управлять, добавляя зависимости в форме завершения, пропускать и проверять статус всех действий, а также получать список всех сообщений об ошибках, если таковые имеются, и отправлять общее уведомление по электронной почте.

в моем блоге ниже представлена ​​подробная основа для этого: https://datasharkx.wordpress.com/2021/08/19/error-logging-and-the-art-of-avoiding-redundant-activities-in-azure-data-factory/


Интересные вопросы для изучения