Использование ADF для получения подмножества файлов из каталога в Azure File Share

#azure #azure-data-factory #azure-data-lake

#azure #azure-data-factory #azure-data-lake

Вопрос:

Например, мой общий каталог Azure file share содержит следующие файлы:

 abc_YYYYMMDD.txt
def_YYYYMMDD.txt
ijk_YYYYMMDD.txt
 

Мне интересно только получить abc_YYYYMMDD.txt и ijk_YYYYMMDD.txt

В настоящее время у меня есть действие Get Metadata, которое получает список файлов (свойство childItems) внутри каталога общего доступа к файлам.

Затем у меня есть действие фильтра с этим динамическим содержимым:

 @startswith(item().name, variables('filename_filter')) OR startswith(item().name, 
variables('filename2filter')))
 

К сожалению, это ошибка:

 Position 54 'startswith' is a primitive and doesn't support nested properties
 

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

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

1. Очень ясно, как вы хотите фильтровать файл, по префиксу или surfix? Все имена файлов имеют одинаковый формат, а YYYYMMDD — это формат данных, я прав?

2. извините, это должно быть: @startswith(item().name, переменные (‘filename_filter’)) ИЛИ startswith(item().name, переменные(‘filename2filter’))) значение переменной filename_filter имеет: abc_ значение переменной filename2filter имеет ijk_

3. Привет @kayeesp, все в порядке. Вы имеете в виду, что теперь это решено? Обычно параметр и переменная также должны работать.

4. Нет, у меня все еще есть ошибка ‘startswith’ является примитивным и не поддерживает вложенные свойства. Можем ли мы сделать логическое или для динамического содержимого? кажется, это не работает, если у меня есть startswith в выражении.

5. Позвольте мне попробовать и обновлю вас.

Ответ №1:

Ваше выражение фильтра должно быть таким:

 @or(startswith(item().name,variables('filename_filter')),startswith(item().name,variables('filename2filter'))
 

Выражение не поддерживает «или» напрямую, вы должны использовать or() функцию.

Это моя исходная папка: введите описание изображения здесь

Я создаю конвейер, используя параметры для фильтрации имени файла, которые начинаются с «test1» и «test2»:

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

Запустите конвейер: введите описание изображения здесь

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

HTH.