【问题标题】:How can I select only data within a specific window in KSQL?如何在 KSQL 中仅选择特定窗口中的数据?
【发布时间】:2020-07-30 03:32:59
【问题描述】:

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

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

【问题讨论】:

    标签: apache-kafka ksqldb


    【解决方案1】:

    取决于你说“选择数据”时的意思;)

    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 的更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      相关资源
      最近更新 更多