#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.