Azure Streaming Analytics,输​​出事件的持续流

Azure Streaming Analytics, constant flow of output events

我有一个传感器,它仅按脉冲而不是定期将数据从物联网集线器发送到流式分析。

我想计算脉冲在特定时间范围内发送的次数,即最后 10 分钟。

我有这样非常简单的数据包:

{
    "Timestamp": "2017-10-26T13:27:11.1103973",
    "Pulses": 1
}

那些是发送,假设在 10 分钟的时间范围内发送 3 次。我使用以下流分析查询:

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 报告中显示 "Last Value",其中显示:过去 10 分钟内有 X 个脉冲。然而,当没有脉冲时,该值停留在最后一个结果,这是不正确的。

是否可以每分钟从流分析发送常规数据流,即使没有传入消息?

目前无法在没有输入事件的情况下生成输出。要实现上述场景,您可以发出 "heartbeat" 保证在同一流中每分钟都存在的事件 [或者] 使用不同的心跳流并与该流进行左连接。在这两种情况下,我们都强制每分钟出现一个输入事件。

另一个选项是在输出数据源中处理它(如果它支持的话)。例如,如果您知道到达率,您可以编写一个查询,将在一定时间后缺少行视为 "zero".