如何获取流式事件的移动总和?

How can I get the moving sum of streaming events?

我有一个发出整数事件的源。

对于每个新整数,我想将它与前一小时流式传输的所有整数相加,并将该值发送到下一步。

计算当前事件的整数与前一小时所有事件的整数的总和然后发出的惯用方法是什么?我可以想到两个选项,但觉得我错过了一些东西:

您可以使用 Flink SQL 使用 over window 来做到这一点。像这样:

SELECT
    SUM(*) OVER last_hour AS rolling_sum
FROM Events
WINDOW last_hour AS (
    ORDER BY eventTime
    RANGE BETWEEN INTERVAL '1' HOUR PRECEDING AND CURRENT ROW
)

OVER Aggregation from the Flink SQL docs for more info. You could also use the Table API, see Over Windows