#json #azure #azure-data-factory-2
#json #azure #azure-data-factory-2
Вопрос:
Есть ли способ сгладить следующий довольно неудобный тип объекта JSON в Azure Data Factory (V2)? Ключи верхнего уровня в данных представляют динамически генерируемые даты, которые различаются в каждом файле. Следовательно, схема дрейфует.
Я хотел бы сгладить данные, развернув members
массив под каждым ключом даты. Пожалуйста, смотрите Пример ввода и желаемый результат ниже.
Я не нашел способа добиться этого в потоке картографических данных. Операция сглаживания, похоже, не работает, поскольку схема не может быть определена, и я разворачиваю не один массив, а несколько. Моя вторая попытка состояла в том, чтобы использовать Unpivot для переноса каждой даты в строку, а затем сглаживания, но, похоже, сложный тип не поддерживается для непривитых значений.
Входной образец
{
"2021-01-01": {
"total": 30,
"members": [
{
"name": "foo",
"value": 10
},
{
"name": "bar",
"value": 20
}
]
},
"2021-01-02": {
"total": 70,
"members": [
{
"name": "foo",
"value": 30
},
{
"name": "john",
"value": 40
}
]
}
}
Желаемый табличный результат
Имя | значение | |
---|---|---|
2021-01-01 | foo | 10 |
2021-01-01 | панель | 20 |
2021-01-02 | foo | 30 |
2021-01-02 | джон | 40 |
Ответ №1:
Может быть, вы можете попробовать это:
Сгладьте свой массив JSON members
2021-01-01
и 2021-01-02
отдельно. Затем используйте DerivedColumn
преобразование, чтобы добавить дату в качестве столбца. Наконец, объедините ваши данные в два потока.
Но для этого вам нужно создать несколько ветвей. Если у вас много данных объекта date, это будет сложно.
Комментарии:
1. Это могло бы сработать, если бы ключи всегда
2021-01-01
были и2021-01-02
. Однако ключи генерируются исходной системой динамически, и как количество ключей, так и их имена различаются в каждом файле. Следовательно, сопоставление потока данных обрабатывает их как дрейфующие столбцы, которые, насколько я понимаю, нельзя развернуть.