如何在ksql中只选择特定窗口中的数据?

krugob8w  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(349)

我有一张带翻窗的table。

CREATE TABLE total_transactions_per_1_days AS
SELECT
    sender,
    count(*) AS count,
    sum(amount) AS total_amount,
    histogram(recipient) AS recipients
FROM
    completed_transactions
WINDOW TUMBLING (
    SIZE 1 DAYS
)

现在我只需要从当前窗口中选择数据,即windowstart<=current time和windowend<=current time。有可能吗?我找不到任何例子。

odopli94

odopli941#

取决于您所说的“选择数据”是什么意思;)
ksqldb支持两种主要的查询类型(参见https://docs.ksqldb.io/en/latest/concepts/queries/).
如果您想要的是拉式查询,即传统的sql查询,您希望将当前窗口作为一个一次性结果拉回来,那么您想要的可能是可能的,尽管拉式查询是最近的功能,尚未完全具备。从版本0.10开始,您只能查找已知的密钥。例如,如果 sender 是表的键,可以运行如下查询:

SELECT * FROM total_transactions_per_1_days
   WHERE sender = some_value
   AND WindowStart <= UNIX_TIMESTAMP()
   AND WindowEnd >= UNIX_TIMESTAMP();

这将要求表已处理的数据的时间戳接近当前的挂钟时间,以便它回拉数据,即,如果系统滞后,或者如果您正在处理历史数据或延迟数据,这将不起作用。
注意:上述查询将在ksqldbv0.10上运行。您在旧版本上的成功可能会有所不同。
有计划扩展pull查询的功能。所以请留意ksqldb的更新。

相关问题