Как использовать mvexpand для json-массива пар ключ / значение

У меня есть настраиваемое свойство в телеметрии appInsights, которое представляет собой массив json пар ключ / значение. Я хочу спроецировать эту пару ключ / значение, и кажется, что использование parsejson и mvexpand вместе - вот как этого добиться; однако мне кажется, что я чего-то упускаю. Конечным результатом моего выражения является столбец с именем type, который является необработанным json. Попытка добавить какое-либо свойство к выражению приводит к пустому столбцу.

Свойство в кодировке Json

[{"type":"text/xml","count":1}]

AIQL

requests 
 | project customDimensions 
 | extend type=parsejson(customDimensions.['Media Types'])
 | mvexpand bagexpansion=array type 

Обновление 30.06.17

Чтобы ответить на вопрос EranG, вывод моего запроса при проецировании свойств в виде столбцов показан ниже.

введите здесь описание изображения


person Tedford    schedule 20.06.2017    source источник


Ответы (2)


Недавно у меня была такая же проблема. Возможно ваше свойство уже типа dynamic, но его динамическое String не массив. parsejson не работают, потому что он преобразует String в dynamic, а не динамический в другой динамический. Чтобы обойти это, я предлагаю вам сначала попробовать преобразовать свойство в String, а затем снова проанализировать его.

Пожалуйста, попробуйте следующий пример. Это может помочь вам, как помогло мне:

requests 
| project customDimensions 
| extend type=parsejson(tostring(customDimensions.['Media Types']))
| mvexpand type
| project type.type, type.['count']
person Maxim Kosov    schedule 30.06.2017
comment
Спасибо, tostring () - это то, что мне не хватало - person Nicholas; 27.05.2019

Что делает mvexpand, так это берет ваш массив и разбивает его на строки, чтобы в каждой строке был один элемент из массива. Если вы хотите разбить каждый элемент на столбцы, вам нужно попробовать что-то вроде:

requests 
| project customDimensions 
| extend type=parsejson(customDimensions.['Media Types'])
| mvexpand bagexpansion=array type 
| project type = type.type, count_ = type["count"]
person EranG    schedule 21.06.2017
comment
к сожалению, когда я запускаю этот запрос, я получаю такое же количество строк результатов с двумя пустыми столбцами с именами type и count_ - person Tedford; 27.06.2017