Использование параметризованных наборов данных в потоках данных сопоставления фабрики данных Azure - PullRequest
1 голос
/ 01 ноября 2019

У меня возникают проблемы при использовании параметризованных наборов данных при обращении через поток данных отображения фабрики данных.

Я пытаюсь написать общий конвейер ELT, который будет читать из CSV-файла в хранилище больших двоичных объектов и записыватьэто к таблице в базе данных SQL Azure.

При использовании операции копирования все работает хорошо (см. конвейер «Импорт файла CSV в общую таблицу SQL с помощью операции копирования»).

Файл CSV (имя файла, переданное в конвейер фабрики данных в качестве параметра) читается из хранилища BLOB-объектов. Структура файла CSV определяется с помощью действия Get Metadata.

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

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

Когда я пытаюсь отладить поток данных, я получаюошибка "An error occurred, please view notification for more details." Я не могу найти никаких уведомлений, которые дают информацию об ошибке.

Поток данных работает, когда я использую наборы данных с жестко закодированным именем файла. Когда я переключаюсь на параметризованный поток данных (передавая такие параметры, как pipe (). DataFactory и т. Д.), Именно тогда я получаю сообщение об ошибке.

Я пытался жестко кодировать значения параметров потока данных отображения, нобез радости.

Шаблон прошел проверку, но если я попытаюсь запустить конвейер «Импортировать файл CSV в общую таблицу SQL с помощью потока данных», запустив конвейер, он очень быстро завершится сбоем и выдаст мне загадочное сообщение об ошибке. :

ErrorCode=InvalidTemplate, ErrorMessage=Unable to parse expression 'body('Copy Generic CSV Source to Generic SQL SinkComposeRuntimeVariables')?.Copy Generic CSV Source to Generic SQL Sinkd7ea532482e64afc88501b46924214b3?.ReadFromSourceCSVFileInBlobStorage.FileName'

Любые эксперты Azure Data Factory готовы протянуть руку?

Весь исходный код доступен по адресу https://github.com/marc-jellinek/AzureDataFactoryDemo_GenericSqlSink

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 02 ноября 2019

WOW! Я получил электронное письмо от Джека Ма в 9:30 EST в пятницу вечером с резолюцией. Проблема в том, что в имени потока данных есть пробелы.

Проблема в том, что выражение параметра не поддерживается для потока данных, в имени которого есть пробелы. Не могли бы вы попытаться переименовать ваш поток данных «Копировать общий источник CSV в общий SQL SinkComposeRuntimeVariables», а затем выполнить предварительный просмотр? Тем временем мы добавим дополнительную проверку на стороне UX для правильной обработки ограничения именования потока данных.

Я удалил пробелы из имени потока данных и успешно протестировал.

Большое спасибо за отличный опыт поддержки! Позвольте мне официально заявить, что Марк Кромер и Джек Ма рок!

enter image description here

0 голосов
/ 02 ноября 2019

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

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

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