我想知道有没有办法删除连续的重复项。例如,如果我们有:
[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
获取动态数组后,您可以使用以下代码获取所需的数组。 我采用了与您提供的相同的示例数组。
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
制作当前项目列的数组。
输出: