本文介绍了应用程序洞察提取嵌套的CustomDimensions的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Application Insights Analytics中有一些数据,其中有一个动态对象作为自定义维度的属性。例如:

|        timestamp        |  name   | customDimensions                 | etc |
|-------------------------|---------|----------------------------------|-----|
| 2017-09-11T19:56:20.000 | Spinner | {                                | ... |
                                         MyCustomDimension: "hi"
                                         Properties:
                                             context: "ABC"
                                             userMessage: "Some other"
                                      }

这有意义吗?因此是CustomDimensions中的键/值对。

我正在尝试使context属性在结果中成为适当的列。因此预期为:

|        timestamp        |  name   | customDimensions                 | context| etc |
|-------------------------|---------|----------------------------------|--------|-----|
| 2017-09-11T19:56:20.000 | Spinner | {                                | ABC    | ...
                                         MyCustomDimension: "hi"
                                         Properties:
                                             context: "ABC"
                                             userMessage: "Some other"
                                      }

我试过了:

customEvents | where name == "Spinner" | extend Context = customDimensions.Properties["context"]

和这个:

customEvents | where name == "Spinner"  | extend Context = customDimensions.Properties.context

但两种方法似乎都不管用。它们在末尾给了我一个名为"Context"的列,但该列是空的--没有值。

有什么想法吗?

编辑:

添加图片以澄清数据格式:

推荐答案

编辑为工作答案

customEvents
 | where name == "Spinner"
 | extend Properties = todynamic(tostring(customDimensions.Properties))
 | extend Context = Properties.context

此处需要额外的tostringtodynamic才能获得您所期望的(以及我所期望的!)

给我的解释:

因此,基本上在默认情况下,它不会尝试解析动态/json块中的字符串,因为它们不想花费大量时间,可能会无限地尝试将嵌套内容转换为json,但失败了。

我仍然认为内部不应该需要额外的tostring,因为todynamic应该已经有效地允许字符串和动态输入,所以我正在检查拥有查询内容的团队是否可以更好地完成这一步。

这篇关于应用程序洞察提取嵌套的CustomDimensions的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-30 06:49