Azure LogAnalytics Parse JSON Array - PullRequest
       21

Azure LogAnalytics Parse JSON Array

0 голосов
/ 26 июня 2019

Я принимаю несколько пользовательских журналов в Azure LogAnalytics.Один из столбцов содержит вложенные объекты json.Я хотел бы вернуть каждый вложенный объект в отдельное значение столбца.

Пробовал оператор mvexpand, но безуспешно.

customLog_CL
| extend test = parsejson(target_s)
| mvexpand test

Данные столбца выглядят так, как показано ниже.

[ { "id": "00phb49dl40lBsasC0h7", "type": "PolicyEntity", "alternateId": "unknown", "displayName": "Default Policy", "detailEntry": "@{policyType=hello}" }, { "id": "0pri9mxp9vSc4lpiU0h7", "type": "PolicyRule", "alternateId": "00phb49dl40lBsasC0h7", "displayName": "All Users Login", "detailEntry": null } ]

Ответы [ 3 ]

0 голосов
/ 02 июля 2019

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

customLog_CL
| mvexpand parsejson(target_s)
| extend Id=target_s["id"]
| extend type=target_s["type"]
| extend OtherId=target_s["alternateId"]
| project Id, type, OtherId
0 голосов
/ 10 июля 2019

Это должно работать:

datatable(d:dynamic)  
[  
    dynamic(  
        [  
            { "id": "00phb49dl40lBsasC0h7", "type": "PolicyEntity", "alternateId": "unknown", "displayName": "Default Policy", "detailEntry": "@{policyType=hello}" },   
            { "id": "0pri9mxp9vSc4lpiU0h7", "type": "PolicyRule", "alternateId": "00phb49dl40lBsasC0h7", "displayName": "All Users Login", "detailEntry": "" }  
        ]  
    )  
]  
| mv-expand(d)  
| project key = tostring(d['id']), value = d
| extend p = pack(key, value)
| summarize bag = make_bag(p)
| evaluate bag_unpack(bag)

Вывод

0 голосов
/ 26 июня 2019

Пожалуйста, проверьте, соответствует ли это вашему требованию.

    let hosts_object = parsejson('{"hosts": [ { "id": "00phb49dl40lBsasC0h7", "type": "PolicyEntity", "alternateId": "unknown", "displayName": "Default Policy", "detailEntry": "@{policyType=hello}" }, { "id": "0pri9mxp9vSc4lpiU0h7", "type": "PolicyRule", "alternateId": "00phb49dl40lBsasC0h7", "displayName": "All Users Login", "detailEntry": null } ]}');
    print hosts_object 
    | extend json1 = hosts_object.hosts[0] , json2 = hosts_object.hosts[1]

Выходные данные для этого должны быть следующими:

enter image description here

Дополнительная справочная документация

Надеюсь, это поможет.

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