Azure 计算流分析中的连续重复值
我想计算流分析中的连续重复值。例如,我有一个传感器,它每秒记录0或1的值。我想设置一个1分钟的滑动窗口,如果我连续有30个以上的0,则计数。我无法计算group子句中的0,因为它们可能不是连续的。例如,如果我有:Azure 计算流分析中的连续重复值,azure,azure-sql-database,azure-stream-analytics,Azure,Azure Sql Database,Azure Stream Analytics,我想计算流分析中的连续重复值。例如,我有一个传感器,它每秒记录0或1的值。我想设置一个1分钟的滑动窗口,如果我连续有30个以上的0,则计数。我无法计算group子句中的0,因为它们可能不是连续的。例如,如果我有: ID Value TimeStamp 1, 1, second 1 2, 1, second 2 3, 1, second 3 4, 1, second 4 5, 1, second 5 6, 1, second 6 7, 1, second 7 8, 0, second 8 9,
ID Value TimeStamp
1, 1, second 1
2, 1, second 2
3, 1, second 3
4, 1, second 4
5, 1, second 5
6, 1, second 6
7, 1, second 7
8, 0, second 8
9, 0, second 9
10, 0, second 10
11, 0, second 11
12, 0, second 12
13, 0, second 13
14, 0, second 14
15, 1, second 15
16, 1, second 16,
17, 1, second 17
18, 1, second 18
我想获得:
MinId Value Count
1, 1, 7
8, 0, 7
15,1, 4
或者更好,我想在同一分钟内得到,
其中(最大连续1为7,最大连续0为7)
在SQL中,我会这样做:
select grp, value, min(id), max(id), count(*) as cnt, max(fecha) as Fecha
from (select t.*,
(row_number() over (order by id) - row_number() over (partition by value order by id)
) as grp
from [StockSensor] t
) t
group by grp, value
order by min(id);
使用流分析,您可以使用滞后函数,但我找不到一种方法来计算连续的数字
有什么想法吗?我认为,使用今天提供的功能,您无法轻松计算连续1或0的数量。 但是,如果您想在有x个连续的时间戳1(或0)的情况下输出所有时间戳,您可以执行以下操作
with PreviousLookups as
(
select
System.Timestamp Time,
Value,
lag(Value,1 ) over (limit duration(mi, 1)) ValueP1,
lag(Value,2 ) over (limit duration(mi, 1)) ValueP2,
lag(Value,3 ) over (limit duration(mi, 1)) ValueP3,
lag(Value,4 ) over (limit duration(mi, 1)) ValueP4
from
iotInput timestamp by AppTimeStamp
)
select
Time
from
PreviousLookups
where
Value * ValueP1 * ValueP2 * ValueP3 * ValueP4 = 1
上述查询输出具有5个连续1的所有时间戳。它可以修改为“有30个或更多连续0的时间戳” 需要更多详细信息:
with PreviousLookups as
(
select
System.Timestamp Time,
Value,
lag(Value,1 ) over (limit duration(mi, 1)) ValueP1,
lag(Value,2 ) over (limit duration(mi, 1)) ValueP2,
lag(Value,3 ) over (limit duration(mi, 1)) ValueP3,
lag(Value,4 ) over (limit duration(mi, 1)) ValueP4
from
iotInput timestamp by AppTimeStamp
)
select
Time
from
PreviousLookups
where
Value * ValueP1 * ValueP2 * ValueP3 * ValueP4 = 1