#azure-data-factory
Вопрос:
Я использую ADF для копирования файлов с файлового сервера в хранилище больших двоичных объектов Azure. Файлы в каталоге имеют одинаковую структуру без заголовков, и мне нужно объединить их в один файл в хранилище Blob-объектов.
Я создал конвейер ADF, который использует метаданные get для извлечения дочерних элементов и для каждого действия для циклического просмотра файлов один за другим
Внутри для каждого действия есть действие копировать данные, в котором я использую имя файла из действия получить метаданные
В настройках раковины я использую файлы слияния в качестве способа копирования
Когда я выполняю конвейер, действие копирования выполняется 3 раза, и файл в хранилище blob-объектов перезаписывается последним файлом. Как объединить все 3 файла ?
Я знаю, что мы можем использовать шаблон подстановочных знаков для выбора файлов. Предположим, у меня есть 3 файла для начала, когда я запускаю действие «Получить метаданные», и к тому времени, когда управление перейдет к действию «Копировать задание», и к этому времени, если в папке будет добавлен 4-й файл, то с помощью шаблона подстановочных знаков я обработаю все 4 файла, и действие «получить метаданные» даст мне имена файлов 3 файлов, которые я буду использовать для архивирования, что неправильно
Любая помощь будет признательна
Ответ №1:
Для этого вам не нужно по одному для каждого. Только одно действие по копированию, которое удаляет все три файла.
Хитрость заключалась бы в том, чтобы идентифицировать исходные файлы с помощью подстановочных знаков путей к файлам. если требуется объединить все файлы из исходного набора данных, то поведение слияния при копировании должно быть достаточным.
Комментарии:
1. извините, пришлось скопировать и вставить приведенный выше сценарий… Я знаю, что мы можем использовать шаблон подстановочных знаков для выбора файлов. Предположим, у меня есть 3 файла для начала, когда я запускаю действие «Получить метаданные», и к тому времени, когда контроль перейдет к операции «Копировать задание», и к этому времени, если в папке будет добавлен 4-й файл, я обработаю все 4 файла шаблоном подстановки, и действие «получить метаданные» даст мне имена файлов 3 файлов, которые я буду использовать для архивирования, что неправильно. И файлы могут быть в любом порядке, поэтому мы не можем использовать здесь подстановочные знаки
2. копирование с поведением слияния по-прежнему является лучшим способом выполнить ваши требования, то есть объединить исходные файлы в один файл назначения, для этого вам не нужен foreach. для обработки вновь поступивших или обновленных файлов в источнике , затем, в зависимости от того, как исходные файлы попадают в файловые системы и структуру файлов/папок, вам необходимо разработать стратегию идентификации и обработки вновь поступивших файлов, подумать о том, как файлы разделяются и идентифицируются в источнике, и как вы хотите обрабатывать изменения, будет ли полное слияние каждый раз, когда что-то меняется в источнике!