Конвейер фабрики данных Azure — при сбое внутренней активности

#azure #azure-data-factory #azure-data-factory-pipeline

Вопрос:

Я разработал конвейер фабрики данных Azure, который проверяет схему файлов в озере данных. У меня есть 15 файлов в «формате шаблонов», и я сверяю их с файлами, полученными от клиентов. У меня есть файлы xlsx и CSV.

введите описание изображения здесь

Сначала я беру все имена файлов из папки шаблона и повторяю их. Мне нужно проверить, является ли текущий файл excel, например, когда мне нужно определить, является ли файл xlsx или CSV.

введите описание изображения здесь

Я хочу решать проблемы обоих типов. Во-первых, когда схема полученного файла отличается от схемы шаблона. И во-вторых, когда я вообще не получил этот файл. Поэтому в Заданной переменной активности я использую этот код. Так что я могу использовать его в переключении активности.

 @concat('Excel',
if(equals(activity('Get Metadata of excel bronze').Status,'Succeeded'),' True' , ' False'),
if(equals(activity('Get Metadata of excel bronze').Status,activity('Get Metadata of excel 
template').Status),' True' , ' False')
)
 

введите описание изображения здесь

Однако, когда я не получил файл и у меня есть шаблон «Получить метаданные excel», шаблон выходит из строя, и вся операция «Является Excel» завершается неудачно. Есть ли возможность принудительно, если действие не завершится ошибкой? В этом конвейере ожидается ошибка.

введите описание изображения здесь

Комментарии:

1. Действительно нужна дополнительная информация о первом шаге…. Получить Метаданные. Будете ли вы иногда не находить никаких файлов? Или файлы, которые не соответствуют вашим критериям? Если файлы не найдены, то это не должно повторяться для каждого, но похоже, что вы получаете все файлы в каталоге, если файл excel, то сделайте A, в противном случае сделайте B, но у вас возникли проблемы, когда файл не является ни excel, ни csv? Если файлы, которые вы используете, должны быть только excel или CSV, то вы можете выполнить действие фильтрации до каждого, чтобы отфильтровать только файлы excel или CSV. Это должно вам помочь в этом

Ответ №1:

Вы можете добавить новое действие при сбое, чтобы даже Get Metadata при сбое конвейер продолжал выполнять следующие шаги.

введите описание изображения здесь

Примечание.Когда вы подключаете 2 разных выхода действия к новому действию (установите переменную активность) в качестве входных данных, Set Variable действие выполняется только при успешном выполнении обоих входов и не запускается, если какое-либо из входных действий не выполнено.

введите описание изображения здесь

Обходной путь заключается в подключении выходных данных Get метаданных к 2 различным действиям.

Для каждого Get Metadata действия добавьте действие переменной set (или любое другое требуемое действие) при успешном и неудачном выполнении по отдельности, чтобы запустить конвейер без остановки при возникновении ошибки.

введите описание изображения здесь

Конвейер запускается даже при сбое Get Metadata2 при подключении к другому действию в случае сбоя.

введите описание изображения здесь