窗口翻转在ksql中如何工作?作为查询返回相同的结果,无论是否在ksql中使用窗口滚动

时间:2018-11-13 11:02:07

标签: apache-kafka ksql

我正在使用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 个答案:

答案 0 :(得分:1)

翻滚窗口是滚动聚合,它根据给定时间窗口内的键来计算事件的数量。时间窗口基于流的时间戳,默认情况下,该时间戳是从您的Kafka消息继承而来的,但可以由WITH (TIMESTAMP='my_column')覆盖。因此,您可以将created_on_date作为timestamp列传递,然后根据那里的值进行汇总。

第二个是整个消息流。由于您的消息本身恰好带有时间戳,因此按分组进行分组会给您基于时间的聚合的错觉。但是,如果您想找出例如一个小时内有多少事件-这将是没有用的(您只能以created_on_date来进行计数)。

第一个带有窗口的示例通常是正确的方法,因为您通常要在给定时间段内回答有关聚合 的业务问题,不是< / strong>中的任意数据流。