首页 文章

Azure Streaming Analytics,输出事件的不断流动

提问于
浏览
0

我有一个传感器,它只能通过脉冲将数据从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 回答

  • 3

    到目前为止,无法在没有输入事件的情况下生成输出 . 为了实现上述场景,您可以发出“心跳”事件,这些事件保证在同一个流中每分钟都有一个[或]具有不同的心跳流并且与该流保持连接 . 在这两种情况下,我们都迫使输入事件每分钟都在那里 .

    另一个选择是在输出数据源中处理它,如果它支持它 . 例如,如果您知道到达率,您可以编写一个查询,在一定时间后将缺少行视为“零” .

相关问题