如何编写 kusto 查询以根据列中的值对 n 个连续行进行分组

How to write a kusto query to group n number of consecutive rows based on value in a column

我有一个数据集,其值如下

数据集:

Col1 Col2
A 0
B 1
C 1
D 1
E 0
F 0
G 1
H 0
I 0
J 0
K 1

我想要的结果如下:

Col1      Col2 
[A]        0
[B, C, D]  1
[E, F]     0
[G]        1
[H, I, J]  0
[K]        1

或替代为:

Col1      Col2 
[B, C, D]  1
[G]        1
[K]        1

有什么方法可以使用 kql 来实现吗?

我研究过使用 prev 函数,但它只在每次有固定行数的情况下才有效。但是这里我需要根据列中的值对 n 行进行分组,但是每次再次启动相同的值时,这些组都需要分开。

给你:

datatable(Col1:string,Col2:long) [
  "A", 0,
  "B", 1,
  "C", 1,
  "D", 1,
  "E", 0,
  "F", 0,
  "G", 1,
  "H", 0,
  "I", 0,
  "J", 0,
  "K", 1
]
| serialize 
| extend NewSession = (row_number() == 1) or (Col2 != prev(Col2))
| extend SessionId = row_cumsum(iff(NewSession, 1, 0))
| summarize Col1 = make_list(Col1) by Col2, SessionId
| project Col1, Col2

输出将正是您想要的。

注意:我使用serialize,但你也可以使用order by——但你至少需要其中之一,这样记录才会被排序。