Kusto中如何判定批次完成并对每个已完成批次执行计算
Kusto实时批次完成状态自动识别与物化视图实现需求
问题背景
我此前曾提出过相关问题,但之前的提问未结合提供的数据样例给出清晰的场景说明。
我在Kusto中随机生成了如下测试数据:
let data = datatable(BatchNumber: string, Timestamp:datetime, Power1:int, Power2: int, Speed1: int, Speed2: int, Enabled1: bool, Enabled2: bool) [ "620214P", datetime(2022-02-18 10:00:00 AM), 100, 200, 50, 80, false, true, "620214P", datetime(2022-02-18 10:01:00 AM), 100, 200, 50, 80, true, true, "620214P", datetime(2022-02-18 10:02:00 AM), 100, 200, 50, 80, false, true, "620214P", datetime(2022-02-18 10:03:00 AM), 100, 200, 50, 80, true, true, "620214P", datetime(2022-02-18 10:04:00 AM), 100, 200, 50, 80, false, true, "620214P", datetime(2022-02-18 10:05:00 AM), 100, 200, 50, 80, true, true, "620214P", datetime(2022-02-18 10:06:00 AM), 100, 200, 50, 80, false, true, "620214P", datetime(2022-02-18 10:07:00 AM), 100, 200, 50, 80, true, true, "720214P", datetime(2022-02-18 10:08:00 AM), 100, 200, 50, 80, false, true, "720214P", datetime(2022-02-18 10:09:00 AM), 100, 200, 50, 80, true, true, "720214P", datetime(2022-02-18 10:10:00 AM), 100, 200, 50, 80, false, true, "720214P", datetime(2022-02-18 10:11:00 AM), 100, 200, 50, 80, true, true, "720214P", datetime(2022-02-18 10:12:00 AM), 100, 200, 50, 80, false, true, "720214P", datetime(2022-02-18 10:13:00 AM), 100, 200, 50, 80, true, true, "720214P", datetime(2022-02-18 10:14:00 AM), 100, 200, 50, 80, false, true, "720214P", datetime(2022-02-18 10:15:00 AM), 100, 200, 50, 80, true, true, "720214P", datetime(2022-02-18 10:15:00 AM), 100, 200, 50, 80, false, true ];
核心需求
需要实现自动判定批次完成状态的能力,规则与输出要求如下:
- 批次号为唯一字符串值
- 判定逻辑:按时间正序排列所有记录,取某批次号的最后一条记录,若其后紧邻的下一条记录所属批次号与当前批次不同,则判定前序批次已完成
- 基于上述样例数据,批次号为
620214P的批次已完成,批次号为720214P的批次尚未完成 - 数据为实时接入,禁止硬编码特定批次号,脚本需自动基于上述逻辑识别已完成批次,投影输出字段包括:
- 对应已完成批次号
Batch_Date:该批次最后一条记录的时间戳,例如620214P的完成时间为2022-02-18 10:07:00 AM- 仅针对该已完成批次从启动到结束全周期计算得到的聚合指标(例如总功率等)
预期运行效果
- 初始样例数据下仅返回
620214P对应的计算结果:
- 当数据集新增一条批次号为
820214P的记录后,720214P满足完成判定规则,结果集自动新增该批次对应的记录:
- 每次识别到新的已完成批次时,直接新增一条对应记录,投影输出新完成批次的批次号、批次完成时间、全周期专属计算指标
- 最终需要使用
materialized-view(物化视图)承载结果表,目标表结构参考:
待解决问题
- 该需求在Kusto中是否可以实现?
- 具体实现方法是什么?
- 是否存在更优的高效实现方案?
内容的提问来源于stack exchange,提问作者Noobie2021
相关产品推荐
相关产品推荐

