Как можно сослаться на источник JSON для производного действия столбца в Azure фабрике данных - PullRequest
0 голосов
/ 23 февраля 2020

Я новичок в Azure Фабрика данных. Я смог сгенерировать набор JSON файлов из источника REST API с помощью конвейера. Каждый файл состоит из одного объекта JSON верхнего уровня с массивом до 100 дочерних объектов. Вывод сохраняется в контейнере Azure Blob Storage.

Теперь я хочу использовать Поток данных отображения для изменения JSON, прежде чем записать его в Azure SQL, однако я борется с синтаксисом. Я настроил источник так, чтобы он указывал на каталог, содержащий файлы JSON. На вкладке Исходная проекция отображается правильная схема. Я могу просмотреть данные, увидеть строку для каждого файла и развернуть дочерние объекты, чтобы увидеть полную структуру.

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

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

Я что-то упустил? Этот сценарий поддерживается?

1 Ответ

0 голосов
/ 28 февраля 2020

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

Кажется, что трудно иметь дело с JSON, который имеет несколько иерархий в качестве источника для операций копирования данных. Вы можете выбрать один уровень повторяющихся данных для сопоставления со структурой таблицы (свойство «Ссылка на коллекцию» на вкладке «Сопоставление»).

В моем сценарии были дополнительные повторяющиеся данные в данных, которые я отображал в своей таблице. Я обновил отображение, чтобы записать дочерние данные JSON в текстовое поле в моей таблице SQL. Для этого мне нужно было использовать редактор Azure Data Factory JSON для моего конвейера. Вы можете получить доступ к этому из ссылки «Код» в верхнем правом углу визуального редактора конвейера.

Я добавил следующую строку после закрывающей скобки для массива «mappings» для моей операции копирования: «mapComplexValuesToString» : true

Полный путь к массиву сопоставления в определении действия - typeProperties - translation - mappings. После добавления нового элемента убедитесь, что ваши запятые верны.

При таком подходе в моей таблице SQL была строка для каждого элемента массива в моей коллекции ссылок. Скалярные дочерние элементы в элементах массива отображаются в столбцы таблицы, а дочерний элемент JSON записывается в столбец данных в той же таблице.

Чтобы извлечь нужные значения в дочернем элементе JSON, я создал представление SQL, в котором используется синтаксис CROSS APPLY OPEN JSON. Это позволяет мне обрабатывать JSON в поле данных аналогично связанной таблице. Вы можете указать структуру, в которой находится ваш JSON. Если у вас есть вложенные данные в вашем JSON, вы можете применять один и тот же подход для каждого уровня.

Команда OPEN JSON поддерживается только в последних версиях SQL Server. Я использую Azure SQL, так что у меня работает.

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