如何在 KSQL 中仅选择特定窗口中的数据?



我有一张带有翻转窗口的桌子,例如

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
)

现在我只需要从当前窗口中选择数据,即窗口开始<=当前时间和窗口结束<=当前时间。可能吗?我找不到任何例子。

取决于您所说的"选择数据"时的意思;)

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();

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

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

有计划扩展拉取查询的功能。因此,请密切关注 ksqlDB 的更新。

最新更新