#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 при подключении к другому действию в случае сбоя.