我有一个传感器,它只能通过脉冲将数据从IOT Hub发送到Streaming Analytics,而不是定期发送 .
我想计算在某个时间范围内发送脉冲的时间,即最后10分钟 .
我有这样非常简单的包:
{
"Timestamp": "2017-10-26T13:27:11.1103973",
"Pulses": 1
}
这些是发送,比如在10分钟的时间内发送3次 . 我使用以下Stream Analytics查询:
SELECT
SUM(Pulses) as Pulses,
System.Timestamp AS WindowEnd
INTO
[RawData-10-Minutes]
FROM
[Input]
GROUP BY
HoppingWindow(Duration(minute, 10), Hop(minute, 1))
这非常好 . 每1分钟我获得一个很好的数据流,每个过去10分钟的脉冲总数:
[
{
"pulses": 2.0,
"windowend": "1970-01-01T12:02:00.0000000Z"
},
{
"pulses": 2.0,
"windowend": "1970-01-01T12:03:00.0000000Z"
},
{
"pulses": 3.0,
"windowend": "1970-01-01T12:04:00.0000000Z"
}
]
然而,当没有10分钟的脉冲时,我预计我仍然会每分钟收到0个脉冲的总和值 . 然而事实并非如此 .
问题是,我在Power BI报告中显示“最后一个值”,显示:最近10分钟内的X脉冲 . 但是,当没有脉冲时,该值保持在最后的结果,这是不正确的 .
即使没有传入消息,是否可以每分钟从Stream Analytics发送常规数据流?
1 回答
到目前为止,无法在没有输入事件的情况下生成输出 . 为了实现上述场景,您可以发出“心跳”事件,这些事件保证在同一个流中每分钟都有一个[或]具有不同的心跳流并且与该流保持连接 . 在这两种情况下,我们都迫使输入事件每分钟都在那里 .
另一个选择是在输出数据源中处理它,如果它支持它 . 例如,如果您知道到达率,您可以编写一个查询,在一定时间后将缺少行视为“零” .