在ksql中窗口翻滚是如何工作的?作为在ksql中使用或不使用窗口滚动返回相同结果的查询

pu3pd22g  于 2021-06-06  发布在  Kafka
关注(0)|答案(1)|浏览(379)

我使用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

两个查询都返回相同的结果,那么窗口翻转有什么不同呢?

vatpfxk5

vatpfxk51#

滚动窗口是一个滚动聚合,它根据给定时间窗口内的一个键统计事件的数量。时间窗口基于流的时间戳,默认情况下继承自kafka消息,但可由 WITH (TIMESTAMP='my_column') . 所以你可以通过 created_on_date 作为timestamp列,然后按其中的值进行聚合。
第二个是整个消息流。由于您的消息本身恰好有一个时间戳,因此按此分组会产生基于时间的聚合的假象。然而,如果你想知道一个小时内发生了多少件事,这是没有用的(你只能在一个小时内进行计数) created_on_date ).
因此,第一个带有窗口的示例通常是正确的方法,因为您通常希望在给定的时间段内回答有关聚合的业务问题,而不是在任意数据流的过程中。

相关问题