如何在Kusto中查询单日同时包含多个指定作业状态的记录
Kusto 多状态匹配单日筛选查询方案
适用场景
你需要筛选出单日同时包含Running和Completed两种作业状态的所有明细记录,可直接使用以下查询逻辑。
具体实现
假设你的源表名为JobInfo,核心字段包含:作业时间字段JobTime、作业状态字段Status、其余业务字段按需保留即可。
方案1:返回符合条件的全部明细记录(匹配预期输出效果)
JobInfo // 提取每条记录对应的日期 | extend RunDate = startofday(JobTime) // 按日期分区,判断每个日期下是否同时存在两种目标状态 | partition by RunDate ( where set_has_element(make_set(Status), "Running") and set_has_element(make_set(Status), "Completed") ) // 可选:如果只需要保留两种目标状态的记录,保留下面这行过滤,不需要可删除 | where Status in ("Running", "Completed") // 可选:按日期、时间排序 | sort by RunDate asc, JobTime asc
方案2:仅统计符合条件的日期列表(不需要明细时使用)
JobInfo | extend RunDate = startofday(JobTime) | summarize StatusSet = make_set(Status) by RunDate | where set_has_element(StatusSet, "Running") and set_has_element(StatusSet, "Completed") | project RunDate
逻辑说明
startofday():把精确到时分秒的时间字段转换为当日零点的日期值,实现按日分组make_set():聚合指定字段的所有非重复值,生成集合set_has_element():判断集合中是否包含指定值,同时满足两个状态存在的条件即可匹配到符合要求的日期
内容的提问来源于stack exchange,提问作者VenkataRamana
相关产品推荐
相关产品推荐

