Azure 应用洞察 |知识库 |包含对象数组的 customDimensions 列

Azure Application Insights | KQL | customDimensions column containing array of objects

我们正在使用 Azure application Insights 进行错误记录。我是 KQL 的新手,正在尝试以下列格式从内置的“customDimensions”列中获取自定义属性,

来自“customDimensions”列的值

exceptions
| project customDimensions


{
"File Name":"Sample File 1",
"Correlation ID":"e33a8d45-1234-1234-1223-54a6fec30356",
"Error List":"[
{\"Function Name\":\"Sample Function 1\",\"Code\":\"12345\"},
{\"Function Name\":\"Sample-Function-2\",\"Code\":\"12343\"}]"
}

预期输出

File Name Correlation ID Function Name Code
Sample File 1 e33a8d45-1234-1234-1223-54a6fec30356 Sample Function 1 12345
Sample File 1 e33a8d45-1234-1234-1223-54a6fec30356 Sample-Function-2 12343

如何使用 KQL 实现上述输出?

谢谢。

这似乎有点棘手,但请耐心等待 :-)

  • 从动态元素中提取的每个 sub-element 都是动态的。
  • parse_json() / todynamic() 当给定一个动态参数时,returns 它,按原样。
    所以首先,我们使用 tostring() 然后才使用 todynamic() 所以字符串将被解析为 json,动态类型。

datatable(ErrorDetails:dynamic)
[
    dynamic({
        "File Name":"Sample File 1",
        "Correlation ID":"e33a8d45-0566-4bf2-94f8-54a6fec29bff",
        "Error List":"[{\"Function Name\":\"Sample Function 1\",\"Code\":\"12345\"},{\"Function Name\":\"Sample-Function-2\",\"Code\":\"12343\"}]"
    })
]
| mv-expand EL = todynamic(tostring(ErrorDetails["Error List"]))
| project ["File Name"] = ErrorDetails["File Name"], ["Correlation ID"] = ErrorDetails["Correlation ID"], ["Function Name"] = EL["Function Name"], ["Code"] = EL["Code"]
File Name Correlation ID Function Name Code
Sample File 1 e33a8d45-0566-4bf2-94f8-54a6fec29bff Sample Function 1 12345
Sample File 1 e33a8d45-0566-4bf2-94f8-54a6fec29bff Sample-Function-2 12343

Fiddle