我使用ksql流,每5分钟计算一次事件。这是我的问题-
select count(*), created_on_date from TABLE_NAME window tumbling (size 5 minutes) group by created_on_date;
提供结果-
2 | 2018-11-13 09:54:50
3 | 2018-11-13 09:54:49
3 | 2018-11-13 09:54:52
3 | 2018-11-13 09:54:51
3 | 2018-11-13 09:54:50
无窗口滚动查询-
select count(*), created_on_date from OP_UPDATE_ONLY group by created_on_date;
结果-
1 | 2018-11-13 09:55:08
2 | 2018-11-13 09:55:09
1 | 2018-11-13 09:55:10
3 | 2018-11-13 09:55:09
4 | 2018-11-13 09:55:12
两个查询都返回相同的结果,那么窗口翻转有什么不同呢?
1条答案
按热度按时间vatpfxk51#
滚动窗口是一个滚动聚合,它根据给定时间窗口内的一个键统计事件的数量。时间窗口基于流的时间戳,默认情况下继承自kafka消息,但可由
WITH (TIMESTAMP='my_column')
. 所以你可以通过created_on_date
作为timestamp列,然后按其中的值进行聚合。第二个是整个消息流。由于您的消息本身恰好有一个时间戳,因此按此分组会产生基于时间的聚合的假象。然而,如果你想知道一个小时内发生了多少件事,这是没有用的(你只能在一个小时内进行计数)
created_on_date
).因此,第一个带有窗口的示例通常是正确的方法,因为您通常希望在给定的时间段内回答有关聚合的业务问题,而不是在任意数据流的过程中。