Azure Data Factory V2. Невозможно объединить подстановочные имена файлов с динамическим путем к файлу содержимого.Существует ли решение для блоков данных (ADB) или другое решение ADF? - PullRequest
0 голосов
/ 30 апреля 2019

В настоящее время у меня есть восходящий процесс, который выгружает почти случайное количество ZIP-файлов в хранилище озера данных Azure, и каждая папка имеет имя, например, FILES / PROCESSING / 2019/04/19.

Я создал процесс копирования данных Azure Data Factory V2 (ADF) для динамического захвата любых файлов в «текущем» пути к файлам, но есть проблема поддержки с сочетанием путей файлов динамического содержимого и имен файлов подстановочных знаков, как показано ниже.

Есть ли обходной путь для этого в ADF?

Спасибо!

Вот динамический путь к файлу моей Связанной службы с подстановочными именами файлов:

FILES/PROCESSING/@formatDateTime(utcnow(),'yyyy')/@formatDateTime(utcnow(),'mm')/@formatDateTime(utcnow(),'dd')

и подстановочный знак:

/*.zip

Я ожидаю, что процесс запустится, но вместо этого получу это сообщение об ошибке:

Activity CopyNewFiles failed: Failure happened on 'Source' side. ErrorCode=UserErrorFileNotFound,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Cannot find the 'Azure Data Lake Store' file. . Service request id: c0266e28-d841-40b7-b177-e67d5e5388a1 Response details: {"RemoteException":{"exception":"FileNotFoundException","message":"File/Folder does not exist: /FILES/PROCESSING/2019/04/30 [c0266e28-d841-40b7-b177-e67d5e5388a1][2019-04-30T12:08:55.0353825-07:00]","javaClassName":"java.io.FileNotFoundException"}},Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Net.WebException,Message=The remote server returned an error: (404) Not Found.,Source=System,'

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

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

1 Ответ

0 голосов
/ 09 мая 2019

Это должно работать на вашем пути:

@Concat('FILES/PROCESSING/',utcnow('yyyy/MM/dd'))

и *.zip в файле бит.

Только один @ в начале.

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

FILES/PROCESSING/@{formatDateTime(utcnow(),'yyyy')}/@{formatDateTime(utcnow(),'MM')}/@{formatDateTime(utcnow(),'dd')}/*.zip

также обратите внимание на прописную ММ за месяцмм это минуты :)

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