Я пытаюсь следовать инструкциям в документации для загрузки массива JSON и создания записей для каждого элемента в массиве в Azure Обозревателе данных, но все идет не так, как ожидалось ,
В моей промежуточной таблице есть несколько полей верхнего уровня, которые я хочу перенести, и это работает, но все поля массива просто пустые.
.create function RecordsExpandTest() {
records_intermediate_test
| mv-expand records_test = answers
| project
fullraw = tostring(fullraw),
question = tostring(question),
question_class = tostring(question_class),
question_raw = tostring(question_raw),
answer_class = tostring(answers["class"]),
answer_type = tostring(answers["type"]),
answer_raw = tostring(answers["raw"]),
request_time = todatetime(request_time)
}
Когда я глотаю строку в моя промежуточная таблица (records_intermediate_test), которая имеет массив из 3 ответов, в итоговой таблице (records_test) создается 3 строки, но все поля, связанные с ответами, пусты, даже если в исходных данных их нет.
Создать для промежуточной таблицы:
.create table records_intermediate_test(fullraw: string, question: string, question_class: string, question_raw: string, answers : dynamic, request_time: datetime)
Создать для финальной таблицы:
.create table records_test(fullraw: string, question: string, question_class: string, question_raw: string, answer_class : string, answer_type: string, answer_raw : string, request_time: datetime)
Изменить таблицу, которая применяет расширение mv:
.alter table records_test policy update @'[{"Source": "records_intermediate_test", "Query": "RecordsExpandTest()", "IsEnabled": "True"}]'
Пример строки из records_intermediate_test
"fullraw": TEST,
"question": TEST,
"question_class": TEST,
"answers": [
{
"class": "C",
"type": "C",
"raw": "TEST"
},
{
"class": "B",
"type": "B",
"raw": "TEST"
},
{
"class": "A",
"type": "A",
"raw": "TEST"
}
],
"request_time": 2019-01-01T10:07:49.0105654Z
Пример строки из records_test
"fullraw": TEST,
"question": TEST,
"question_class": TEST,
"answer_class": ,
"answer_type": ,
"answers_raw": ,
"request_time": 2019-01-01T10:07:49.0105654Z
^ Повторяется 3 раза в таблице
Ожидаемые строки из records_test
"fullraw": TEST,
"question": TEST,
"question_class": TEST,
"answer_class": A,
"answer_type": A,
"answers_raw": TEST,
"request_time": 2019-01-01T10:07:49.0105654Z
"fullraw": TEST,
"question": TEST,
"question_class": TEST,
"answer_class": B,
"answer_type": B,
"answers_raw": TEST,
"request_time": 2019-01-01T10:07:49.0105654Z
"fullraw": TEST,
"question": TEST,
"question_class": TEST,
"answer_class": C,
"answer_type": C,
"answers_raw": TEST,
"request_time": 2019-01-01T10:07:49.0105654Z
Входные данные промежуточной таблицы всегда содержат массив с 1 вопросом. Это отображение:
.create table records_intermediate_test ingestion json mapping 'mappingtest'
'['
' { "column" : "fullraw", "Properties":{"Path":"$.fullraw"}},'
' { "column" : "question", "Properties" {"Path":"$.question[0].question"}},'
' { "column" : "question_class", "Properties":{"Path":"$.question[0].class"}},'
' { "column" : "question_raw", "Properties":{"Path":"$.question[0].raw"}},'
' { "column" : "answers", "Properties":{"Path":"$.answers"}},'
' { "column" : "request_time", "Properties":{"Path":"$.request_time"}}'
']'
Пример необработанного JSON вход для таблицы records_intermediate_test:
{
"fullraw": "TEST",
"question": "TEST",
"question_class": "TEST",
"answers": [
{
"class": "C",
"type": "C",
"raw": "TEST"
},
{
"class": "B",
"type": "B",
"raw": "TEST"
},
{
"class": "A",
"type": "A",
"raw": "TEST"
}
],
"request_time": 2019-01-01T10:07:49.0105654Z
}