【问题标题】:How does window tumbling works in ksql? As query returning same result with or without using window tumbling in ksql窗口翻滚在ksql中是如何工作的?作为查询返回相同的结果,无论是否在 ksql 中使用窗口翻滚
【发布时间】:2018-11-15 07:44:52
【问题描述】:

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

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

【问题讨论】:

    标签: apache-kafka ksqldb


    【解决方案1】:

    翻滚窗口是一个滚动聚合,并根据给定时间窗口内的键计算事件数。时间窗口基于流的时间戳,默认情况下继承自 Kafka 消息,但可被 WITH (TIMESTAMP='my_column') 覆盖。因此,您可以将 created_on_date 作为时间戳列传递,然后按那里的值聚合。

    第二个是整个消息流。由于您的消息本身恰好有一个时间戳,因此按它进行分组会产生基于时间的聚合的错觉。但是,如果您想知道有多少事件,例如在一小时内 - 这是没有用的(您只能在created_on_date 的粒度上进行计数)。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      相关资源
      最近更新 更多