在 Azure 流分析中,通过从多个 windows 滑动 window 分组进行分组
In Azure Stream Analytics grouping by sliding window grouping from multiple windows
我在 Azure 流分析中有以下查询...DataInput returns 只有 1 行(我输出到一个 blob 并且可以看到它)...但看起来 CalcData 正在处理更多行...看起来它正在从多个滑动 windows 中获取行。当我将事件间隔开时,我会得到正确的输出,但是当事件彼此相邻发生时,滑动 window 似乎不正确
WITH DataInput AS 1 AS (SELECT
CONCAT(fqn, '_HealthIndex') AS fqn,
value as value,
count(value) as cntvalue
FROM DataInput
GROUP BY fqn,value,SlidingWindow(Duration( hour, 8 ))
),
CalcData AS
(SELECT
fqn,
count(*) as records,
sum(value) as alm,
100 - sum(case when cast(value as bigint)=19 and cast(cntvalue as bigint) > 1 then 5
when cast(value as bigint)=23 and cast(cntvalue as bigint) > 1 then 5
when cast(value as bigint)=64 and cast(cntvalue as bigint) > 1 then 10
when cast(value as bigint)=72 and cast(cntvalue as bigint) > 1 then 10
when cast(value as bigint)=77 and cast(cntvalue as bigint) > 0 then 5
when cast(value as bigint)=78 and cast(cntvalue as bigint) > 0 then 5
when cast(value as bigint)=83 and cast(cntvalue as bigint) > 16 then 5
when cast(value as bigint)=84 and cast(cntvalue as bigint) > 16 then 5
when cast(value as bigint)=91 and cast(cntvalue as bigint) > 0 then 30
when cast(value as bigint)=92 and cast(cntvalue as bigint) > 1 then 5
when cast(value as bigint)=101 and cast(cntvalue as bigint) > 1 then 15 else 0 end ) as value
,System.TimeStamp as t
from DataInput1 group by fqn,SlidingWindow(Duration( hour, 8 ))
)
如能深入了解 CalcData 为何不仅采用 DataInput 的输出,我们将不胜感激
CalcData
步骤仅从 DataInput1
步骤的输出中获取数据,但是您是通过在 DataInput1
中滑动 window 来对事件进行分组。每次事件进入或离开 window 时,滑动 window 都会创建一个输出。因此,您可以将一个事件包含在多个滑动中 windows。为了确保一个事件最多包含在一个 window 中,请考虑使用翻滚分组 window。
我在 Azure 流分析中有以下查询...DataInput returns 只有 1 行(我输出到一个 blob 并且可以看到它)...但看起来 CalcData 正在处理更多行...看起来它正在从多个滑动 windows 中获取行。当我将事件间隔开时,我会得到正确的输出,但是当事件彼此相邻发生时,滑动 window 似乎不正确
WITH DataInput AS 1 AS (SELECT
CONCAT(fqn, '_HealthIndex') AS fqn,
value as value,
count(value) as cntvalue
FROM DataInput
GROUP BY fqn,value,SlidingWindow(Duration( hour, 8 ))
),
CalcData AS
(SELECT
fqn,
count(*) as records,
sum(value) as alm,
100 - sum(case when cast(value as bigint)=19 and cast(cntvalue as bigint) > 1 then 5
when cast(value as bigint)=23 and cast(cntvalue as bigint) > 1 then 5
when cast(value as bigint)=64 and cast(cntvalue as bigint) > 1 then 10
when cast(value as bigint)=72 and cast(cntvalue as bigint) > 1 then 10
when cast(value as bigint)=77 and cast(cntvalue as bigint) > 0 then 5
when cast(value as bigint)=78 and cast(cntvalue as bigint) > 0 then 5
when cast(value as bigint)=83 and cast(cntvalue as bigint) > 16 then 5
when cast(value as bigint)=84 and cast(cntvalue as bigint) > 16 then 5
when cast(value as bigint)=91 and cast(cntvalue as bigint) > 0 then 30
when cast(value as bigint)=92 and cast(cntvalue as bigint) > 1 then 5
when cast(value as bigint)=101 and cast(cntvalue as bigint) > 1 then 15 else 0 end ) as value
,System.TimeStamp as t
from DataInput1 group by fqn,SlidingWindow(Duration( hour, 8 ))
)
如能深入了解 CalcData 为何不仅采用 DataInput 的输出,我们将不胜感激
CalcData
步骤仅从 DataInput1
步骤的输出中获取数据,但是您是通过在 DataInput1
中滑动 window 来对事件进行分组。每次事件进入或离开 window 时,滑动 window 都会创建一个输出。因此,您可以将一个事件包含在多个滑动中 windows。为了确保一个事件最多包含在一个 window 中,请考虑使用翻滚分组 window。