count - 计数行,直到达到当前拥有的团队价值... Kusto,countof()
问题描述
我有这个 Kusto 代码,我一直在尝试开发,任何帮助将不胜感激。
目标是计算到 CurrentOwningTeamId 在 OwningTeamId 列中的第一次出现。
我打包了拥有团队编号并将该值解析为自己的列。我需要计算拥有团队,直到我到达当前拥有团队。列是(示例):
目标:使用 Kusto(Application Insights 代码)计算 OwningTeamId 列中 CurrentOwningTeam 值的第一次出现:
[代码]
OwningTeamId, CurrenOwningTeam, CreateDate, RequestType
155523 **888888** 2017-07-02 PRIMARY
256924 **888888** 2017-08-02 TRANSFER
**888888** **888888** 2017-09-02 TRANSFER
954005 **888888** 2017-10-02 TRANSFER
**888888** **888888** 2017-11-02 TRANSFER
155523 **888888** 2017-12-02 TRANSFER
954005 **888888** 2017-13-02 TRANSFER
**888888** **888888** 2017-14-02 TRANSFER
[/代码]
我认为您可以将当前拥有的团队与 countof() 函数相匹配,但我不知道如何使用正则表达式进行处理。注意:每个事件的每个拥有团队的值都不同,这就是为什么我首先捕获事件的拥有团队并尝试在 OwningTeamId 列中计算 CurrentOwningTeam 编号的第一个实例。换句话说,我想计算到达第一个拥有球队所需的次数。在这种情况下,它将是三个。
注意:OwningTeamId 和 CurrentOwningTeam 可以在每个事件上发生变化,我首先捕获 CurrentOwningTeam,然后尝试在 OwningTeamId 列中进行匹配。
注意:这只是一个事件,但我正在尝试执行多个事件。以下是我如何获得当前拥有的团队价值。[/代码]
| extend CurrentOwningTeam=pack_array(OwningTeamId)
| parse CurrentOwningTeam with * "[" CurrentOwningTeam:int "]" *
| serialize CurrentOwningTeam
[/代码]
我尝试使用 row_number() 但它不适用于多个事件,仅适用于每个事件,因此我必须使用 count 或 countof 函数或其他方式。
解决方案
感谢您的澄清。这是一个查询的建议,该查询计算按时间排序的行,直到达到特定条件(计数是使用 IncidentId 键的上下文)。
datatable(IncidentId:string, OwningTeamId:string, CurrentOwningTeam:string, CreateDate:datetime, RequestType:string)
[
'Id1','155523','888888',datetime(2017-02-07),'PRIMARY',
'Id1','256924','888888',datetime(2017-02-08),'TRANSFER',
'Id1','888888','888888',datetime(2017-02-09),'TRANSFER',
'Id1','954005','888888',datetime(2017-02-10),'TRANSFER',
'Id1','888888','888888',datetime(2017-02-11),'TRANSFER',
'Id1','155523','888888',datetime(2017-02-12),'TRANSFER',
'Id1','954005','888888',datetime(2017-02-13),'TRANSFER',
'Id1','888888','888888',datetime(2017-02-14),'TRANSFER',
// Id2
'Id2','155523','888888',datetime(2017-02-07),'PRIMARY',
'Id2','256924','888888',datetime(2017-02-08),'TRANSFER',
'Id2','999999','888888',datetime(2017-02-09),'TRANSFER',
'Id2','954005','888888',datetime(2017-02-10),'TRANSFER',
'Id2','888888','888888',datetime(2017-02-11),'TRANSFER',
'Id2','155523','888888',datetime(2017-02-12),'TRANSFER',
'Id2','954005','888888',datetime(2017-02-13),'TRANSFER',
'Id2','888888','888888',datetime(2017-02-14),'TRANSFER',
]
| order by IncidentId, CreateDate asc
| extend c= row_cumsum(1, IncidentId!=prev(IncidentId))
| where OwningTeamId == CurrentOwningTeam
| summarize arg_min(CreateDate, c) by IncidentId
结果:
IncidentId CreateDate c
Id1 2017-02-09 00:00:00.0000000 3
Id2 2017-02-11 00:00:00.0000000 5
以下是指向如何使用 arg_min() 聚合查找最早记录的文档的链接,以及指向 row_cumsum()(累积和)函数的链接。
https://docs.microsoft.com/en-us/azure/kusto/query/arg-min-aggfunction https://docs.microsoft.com/en-us/azure/kusto/query/rowcumsumfunction
推荐阅读
- excel - VB.Net:从项目中的数据文件获取文件路径
- visual-studio - Visual Studio 2017 - 将项目同步到 Github 存储库时出现问题
- react-native - 反应原生构建失败
- clang - 构建 clang 和相关工具的发布(非主干)版本
- google-search-console - 从新的 Google 网站管理员控制台中删除站点地图
- java - Java 如何使用通配符搜索模式?
- apache-spark - 火花数据帧写入问题
- jmeter - 如何使用 JSON 提取器从请求响应中正确提取 .pem 密钥
- procmail - 基于用户名的自动 procmail 过滤器
- ant - Netbeans 9.0 Incubating - 不在 `dist` 中为迁移/更新的 Java 10 项目创建`lib` 目录