Фабрика данных Azure (ADF), создайте набор данных CSV с динамическим путем к файлу

Я хочу создать набор данных csv, который будет выбирать файл с именем, соответствующим шаблону, например file_name_ddmmyyyy: имя_файла_01012023.csv или имя_файла_01012024

Достаточно проверить, начинается ли имя файла с имя_файла_.

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

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

Ваше требование состоит в том, чтобы запускать конвейер каждый раз, когда загружается файл с указанным выше форматом? Кроме того, вы сказали, что позаботитесь о том, чтобы с этим шаблоном был только один файл, верно?

Rakesh Govindula 22.08.2024 12:16

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

Potis23 22.08.2024 12:17

Является ли ваш источник учетной записью хранения?

Rakesh Govindula 22.08.2024 12:18

Да, источником является учетная запись хранения.

Potis23 22.08.2024 12:18
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
4
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для этого требования вы можете использовать триггер событий хранилища в ADF.

Сначала создайте два параметра строкового типа в разделе параметров конвейера и не присваивайте им значений по умолчанию.

Далее перейдите к триггерам -> новый и создайте триггер, как показано ниже.

Если хотите, можете проверить все контейнеры.

Затем передайте параметры триггера @triggerBody().folderPath и @triggerBody().fileName в созданные параметры конвейера.

Этот триггер запускает конвейер всякий раз, когда файл с шаблоном file_name*.csv загружается или изменяется.

Чтобы убедиться, что запускаемый файл имеет правильный шаблон, используйте if Activity в конвейере с выражением ниже.

@and(equals(length(split(split(pipeline().parameters.filename,'_')[2],'.')[0]),8),contains(split(split(pipeline().parameters.filename,'_')[2],'.')[0],'20'))

Внутри истинных действий If используйте свои действия для использования файла. Чтобы динамически получать путь к файлу в наборе данных, вы можете использовать параметры набора данных. В наборе данных создайте строковый параметр в разделе параметров без какого-либо значения.

В динамическом выражении имени файла используйте этот параметр @dataset().<parameter_name>.

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

@concat(pipeline().parameters.folderpath,'/',pipeline().parameters.filename)

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

Большое спасибо за ваш ответ! Позвольте мне проверить это, и я приму это

Potis23 22.08.2024 13:16

Я не до конца понял использование @triggerBody().fileName и @triggerBody().folderPath. Откуда они берутся и как заселяются?

Potis23 22.08.2024 13:54

Это параметры триггера по умолчанию, которые будут иметь путь к папке с файлом триггера и имя файла. Вы не можете использовать их непосредственно в конвейере. Вы можете передавать их только в любые параметры конвейера и использовать параметры конвейера в конвейере. Вот почему я создал параметры конвейера и передал им значения параметров триггера. Если есть необходимость использования триггерного пути к файлу в конвейере, вы можете использовать эти параметры.

Rakesh Govindula 22.08.2024 14:22

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

Rakesh Govindula 22.08.2024 14:23

Я следовал инструкциям: кажется, что параметры триггера и конвейера работают должным образом (я использовал действие установки переменной, которое создает переменную со значением some_container/file_name_01012023.csv), но действие dataset/get_metadata по какой-то причине отказывается извлекать метаданные файла. Это сработало для вас? (для справки я загружаю file_name_01012023.csv в контейнер some_container)

Potis23 22.08.2024 18:31

Позвольте мне проверить и обновить ответ, если потребуется.

Rakesh Govindula 23.08.2024 05:31

Давайте продолжим обсуждение в чате.

Rakesh Govindula 23.08.2024 05:43

Другие вопросы по теме