Kusto kql 删除动态数组中的重复连续项

问题描述 投票:0回答:1

我想知道有没有办法删除连续的重复项。例如,如果我们有:

[x,y,z,z,z,z, ...]
我想要
[x,y,z, ...]

| project ClusterName, NodeName, UserName LoadError
| summarize LoadErrorSequence = make_list(LoadError) by ClusterName, NodeName, UserName
| extend LoadErrorSequenceJson = dynamic_to_json(LoadErrorSequence)
| summarize count() by LoadErrorSequenceJson
kql
1个回答
0
投票

获取动态数组后,您可以使用以下代码获取所需的数组。 我采用了与您提供的相同的示例数组。

let data = datatable(original: dynamic)
[
    dynamic(['x','y','z','z','z','z','x','x','z','y','y','z','z','x','y'])
];
data
| extend l = array_length(original)
| mv-apply index = range(0, l - 1) to typeof(int) on (
    extend curr_item = original[index],
           prev = iff(index == 0, "null", tostring(original[index - 1]))
    | where tostring(curr_item) != prev
    | summarize res_array = make_list(curr_item)
)
| project-away l;

首先,获取数组的长度并使用

mv-apply
循环遍历给定数组的索引。在此,使用索引将当前项和上一项存储在列中。之后,过滤掉当前项不等于其前一项的值。然后,使用
make_list()
上的
summarize
制作当前项目列的数组。

输出:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.