KQL 中的 unix uniq -c 命令等效(某种)?
The unix uniq -c command equivalent (sort of) in KQL?
uniq
命令过滤掉重复的行。重要的是它不会改变输入行的顺序,所以:
$ echo "1,1,1,2,1,1" | tr ',' '\n' | uniq -c
3 1
1 2
2 1
我们可以看到,对于每批相同的值,它指定值的计数,然后是值本身。
我正在寻找 KQL 中的等效项。当然,我想运行一些字段上的一些聚合函数,但本质是一样的。到目前为止,我使用的是 summarize
运算符,但它并不相同,因为它将相同值的所有实例分组,即使在我的排序中它们之间还有其他记录。就像sort | uniq -c
和uniq -c
的区别。
如何在不重新排序的情况下进行总结?
datatable(timestamp:int,val:int)[7,1 ,9,1 ,12,1 ,13,2 ,19,1 ,24,1 ,25,1, 26,1 ,27,2, 29,2 ,33,2 ,36,1, 42,1]
| order by timestamp asc
| extend group_id = row_number() - row_number(1, prev(val) != val)
| summarize val_occurrences = count(), from_timestamp = min(timestamp), to_timestamp = max(timestamp) by group_id, val
| project-away group_id
| order by from_timestamp asc
原始数据:
+-----------+-----+
| timestamp | val |
+-----------+-----+
| 7 | 1 |
| 9 | 1 |
| 12 | 1 |
| 13 | 2 |
| 19 | 1 |
| 24 | 1 |
| 25 | 1 |
| 26 | 1 |
| 27 | 2 |
| 29 | 2 |
| 33 | 2 |
| 36 | 1 |
| 42 | 1 |
+-----------+-----+
结果:
+-----+-----------------+----------------+--------------+
| val | val_occurrences | from_timestamp | to_timestamp |
+-----+-----------------+----------------+--------------+
| 1 | 3 | 7 | 12 |
| 2 | 1 | 13 | 13 |
| 1 | 4 | 19 | 26 |
| 2 | 3 | 27 | 33 |
| 1 | 2 | 36 | 42 |
+-----+-----------------+----------------+--------------+
uniq
命令过滤掉重复的行。重要的是它不会改变输入行的顺序,所以:
$ echo "1,1,1,2,1,1" | tr ',' '\n' | uniq -c
3 1
1 2
2 1
我们可以看到,对于每批相同的值,它指定值的计数,然后是值本身。
我正在寻找 KQL 中的等效项。当然,我想运行一些字段上的一些聚合函数,但本质是一样的。到目前为止,我使用的是 summarize
运算符,但它并不相同,因为它将相同值的所有实例分组,即使在我的排序中它们之间还有其他记录。就像sort | uniq -c
和uniq -c
的区别。
如何在不重新排序的情况下进行总结?
datatable(timestamp:int,val:int)[7,1 ,9,1 ,12,1 ,13,2 ,19,1 ,24,1 ,25,1, 26,1 ,27,2, 29,2 ,33,2 ,36,1, 42,1]
| order by timestamp asc
| extend group_id = row_number() - row_number(1, prev(val) != val)
| summarize val_occurrences = count(), from_timestamp = min(timestamp), to_timestamp = max(timestamp) by group_id, val
| project-away group_id
| order by from_timestamp asc
原始数据:
+-----------+-----+
| timestamp | val |
+-----------+-----+
| 7 | 1 |
| 9 | 1 |
| 12 | 1 |
| 13 | 2 |
| 19 | 1 |
| 24 | 1 |
| 25 | 1 |
| 26 | 1 |
| 27 | 2 |
| 29 | 2 |
| 33 | 2 |
| 36 | 1 |
| 42 | 1 |
+-----------+-----+
结果:
+-----+-----------------+----------------+--------------+
| val | val_occurrences | from_timestamp | to_timestamp |
+-----+-----------------+----------------+--------------+
| 1 | 3 | 7 | 12 |
| 2 | 1 | 13 | 13 |
| 1 | 4 | 19 | 26 |
| 2 | 3 | 27 | 33 |
| 1 | 2 | 36 | 42 |
+-----+-----------------+----------------+--------------+