库斯托 | Azure 数据资源管理器 | extractjson() returns 没有

Kusto | Azure Data Explorer | extractjson() returns nothing

我正在尝试使用 Kusto/Azure Data Explorer 中的 extractjson() 函数。我在 MS 文档中读到,当您需要提取 JSON 复合对象的多个元素时,最好使用 parse_json(),但在我的场景中,我只需要从JSON,所以我假设相反最好使用 extractjson()。这是一个示例 table 来说明:

let T = datatable (myObject:string)[
    '[{"Id":1,"Value":"light saber"}]',
    '[{"Id":2,"Value":"jedi beacon"}]'
];
T
| extend JediTools = extractjson("$.Value", myObject)

在最后一行,我试图扩展一个列以包含提取的 json 值,但我什么也没得到:

预期结果:

函数必须找到“值”,因为它不会抛出错误,但是为什么应该显示提取值的列是空白的?我也尝试了以下但结果是一样的:

| extend JediTools = extractjson("$.Value", myObject, typeof(string))

| extend JediTools = tostring(extractjson("$.Value", myObject))

它实际上没有找到“值”属性,因为它包含在一个数组中。当找不到 json 属性 时,您会返回一个空值,而不是错误。因为你有一个数组,你需要“mv-expand”它:

let T = datatable (myObject:string)[
    '[{"Id":1,"Value":"light saber"}]',
    '[{"Id":2,"Value":"jedi beacon"}]'
];
T
| extend myObject = todynamic(myObject)
| mv-expand myObject 
| extend JediTools = myObject.Value