You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Azure Stream Analytics中滑动窗口的累积求和异常问题

需求说明

需按col1和col2进行聚合:

  • 若status字段值为ended或completed,则对应col2的取值为0;
  • 若status为started或connected,则对应col2取值为1;
    最终按col1汇总这些取值的总和。

输入数据

col1col2statusflag
Q1P1started1
Q1P1connected1
Q1P1ended0
Q1P1completed0
Q1P2started1
Q1P2connected1
Q1P2ended0
Q1P2completed0
Q2P3started1
Q2P3connected1

预期输出

col1count
Q10
Q21

问题场景

我已经通过滑动窗口计算出col2级别的flag最小值,但在按col1聚合时,使用slidingwindow(day,1)出现了累积求和,得不到预期结果。我的SQL代码如下:

with min_val as (
select col1, 
col2,
min(flag) as val 
from cte 
group by col1,col2, slidingwindow(day,1))

select col1
,sum(val)
from min_val
group by col1, slidingwindow(day,1) -- 这里的滑动窗口导致了累积求和

解决方案

问题出在两次聚合都嵌套了滑动窗口slidingwindow(day,1),导致第二次聚合时触发了累积求和逻辑。根据你的需求和示例数据,其实不需要滑动窗口的累积效果,直接去掉即可:

修正后的SQL

with min_val as (
select col1, 
col2,
min(flag) as val 
from cte 
group by col1, col2)

select col1,
sum(val) as count
from min_val
group by col1

逻辑说明

  1. 第一步聚合min_val:按col1和col2分组取flag的最小值,刚好匹配需求逻辑——只要col2对应记录里有0(存在ended/completed状态),val就为0;若全是1(只有started/connected状态),则val为1。
  2. 第二步聚合:按col1直接汇总val的和,就能得到预期结果。

如果确实需要按日滑动窗口计算,需确保两次窗口的时间字段一致且逻辑匹配,但从当前需求来看,无需滑动窗口即可实现目标。

内容的提问来源于stack exchange,提问作者gjeevanm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:33:17