Не удается скопировать файл из SFTP в фабрике данных Azure при использовании подстановочного знака (*) в имени файла - PullRequest
0 голосов
/ 14 марта 2019

Я не могу скопировать CSV-файлы из SFTP-подключения в хранилище BLOB-объектов при использовании подстановочного знака (*) в имени файла.

Более конкретно, я ежедневно получаю файлы csv в SFTP, и они имеют формат: "ddMMyyyyxxxxxx.csv", где "xxxxxx" - это отметка времени. Более конкретно, мой CSV-файл на 13 марта: «13032019083647.csv», а на 14 марта: «14032019083556.csv». Очевидно, что отметка времени различна для каждого дня, поэтому я хочу скопировать файл независимо от того, какие строки существуют между датой и расширением файла.

В подполе «Файл» на вкладке «Путь к файлу» на вкладке «Соединение» моего подмножества я задаю в качестве ввода: «13032019 * .csv», как указано в значке справки рядом с полем:

File name or file filter

Когда я это делаю, мой отладочный прогон завершается с:

{"errorCode": "2200", "message": «ErrorCode = UserErrorInvalidCopyBehaviorBlobNameNotAllowedWithPreserveOrFlattenHierarchy, 'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message = Не удается принять копировать поведение PreserveHierarchy при копировании из папки в один файл., Источник = Microsoft.DataTransfer.ClientLibrary}

Я получаю похожую ошибку независимо от того, какой тип поведения при копировании я выберу. Я также попытался поэкспериментировать с параметром fileFilter (даже если ADF предупреждает, что такое же поведение может быть достигнуто с опцией fileName), но я все равно получаю ту же ошибку.

Для дальнейшего пояснения я прилагаю сегмент кода, который ADF создает для этой конфигурации:

Code segment with failing fileName

Следует также отметить, что при использовании полного fileName в соответствующем поле, а именно значения: «13032019083647.csv», копирование работает нормально.

Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

1 голос
/ 15 марта 2019

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

1.Действие метаданных: используйте набор данных в этом упражнении, чтобы указать конкретное местоположение файлов и передать дочерние элементы в качестве параметра.

2. Деятельность фильтра: Используйте фильтр для фильтрации файлов в соответствии с вашими потребностями.

3.Для каждого действия. В действии «Для каждого» получите элементы из предыдущего действия и добавьте операцию копирования внутри каждого. В процессе копирования исходный набор данных должен иметь вид @item (). Name.

Надеюсь, это решит вашу проблему.

0 голосов
/ 20 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...