gpt4 book ai didi

azure - 如何根据 Kusto 中的状态汇总时间窗口

转载 作者:行者123 更新时间:2023-12-02 06:27:04 25 4
gpt4 key购买 nike

我最近开始与 Kusto 合作。我遇到了一个用例,我需要确认我所采取的方法是正确的。

我有以下格式的数据

enter image description here

在上面的示例中,如果状态为 1 并且时间范围等于 15 秒,那么我需要假设它出现 1 次。

因此在本例中出现了 2 次状态。我的方法是

if the current and next rows status is equal to 1 then take the time difference and do row_cum_sum and break it if the next(STATUS)!=0.

尽管该方法给了我正确的输出,但我假设一旦大小增加,性能就会变慢。

我正在寻找替代方法(如果有)。还添加完整的场景以使用示例数据重现此情况。

.create-or-alter function with (folder = "Tests", skipvalidation = "true") InsertFakeTrue() {
range LoopTime from ago(365d) to now() step 6s
| project TIME=LoopTime,STATUS=toint(1)
}

.create-or-alter function with (folder = "Tests", skipvalidation = "true") InsertFakeFalse() {
range LoopTime from ago(365d) to now() step 29s
| project TIME=LoopTime,STATUS=toint(0)
}


.set-or-append FAKEDATA <| InsertFakeTrue();

.set-or-append FAKEDATA <| InsertFakeFalse();



FAKEDATA
| order by TIME asc
| serialize
| extend cstatus=STATUS
| extend nstatus=next(STATUS)
| extend WindowRowSum=row_cumsum(iff(nstatus ==1 and cstatus ==1, datetime_diff('second',next(TIME),TIME),0),cstatus !=1)
| extend windowCount=iff(nstatus !=1 or isnull(next(TIME)), iff(WindowRowSum ==15, 1,iff(WindowRowSum >15,(WindowRowSum/15)+((WindowRowSum%15)/15),0)),0 )
| summarize IDLE_COUNT=sum(windowCount)

最佳答案

  1. 问题中的方法是在 Kusto 中实现此类计算的方法,并且考虑到逻辑需要排序也是高效的(只要排序后的数据可以驻留在单台机器上)。

  2. 关于联合运算符 - 默认情况下它是并行运行的,您可以使用提示控制并发性和传播,请参阅:union operator

关于azure - 如何根据 Kusto 中的状态汇总时间窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62276561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com