我如何才能 select 仅在 KSQL 中的特定 window 内的数据?

How can I select only data within a specific window in KSQL?

我有一个 table 翻滚 window,例如

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
)

现在我只需要 select 来自当前 window 的数据,即 windowstart <= 当前时间和 windowend <= 当前时间。可能吗?我找不到任何例子。

取决于你说的意思 'select data' ;)

ksqlDB 支持两种主要的查询类型,(参见https://docs.ksqldb.io/en/latest/concepts/queries/)。

如果您想要的是拉式查询,即传统的 sql 查询,您希望将当前 window 作为一次性结果拉回,那么您想要的可能是可能的,尽管拉取查询是最近的一项功能,但功能还不完善。从 0.10 版开始,您只能查找已知密钥。例如,如果 sender 是 table 的键,您可以 运行 查询如:

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

这将需要 table 处理时间戳接近当前挂钟时间的数据,以便它拉回数据,即如果系统滞后,或者如果您正在处理历史或延迟数据,这行不通。

注意:以上查询适用于 ksqlDB v0.10。您在旧版本上的成功可能会有所不同。

有计划扩展拉取查询的功能。所以请密切关注 ksqlDB.

的更新