【问题标题】:how to make ksql print only latest records如何让ksql只打印最新记录
【发布时间】:2019-05-08 01:44:37
【问题描述】:

我在 ksql 上运行以下查询。但我希望只在最后 20 个 记录

SELECT MAX(ROWTIME),TIMESTAMPTOSTRING(ROWTIME, 'yyyy-MM-dd HH:mm:ss'),SERIAL,COUNT FROM MY_STREAM WHERE TIMESTAMPTOSTRING(ROWTIME, 'yyyy-MM-dd HH:mm:ss') >= DATE AND TIMESTAMPTOSTRING(ROWTIME, 'yyyy-MM-dd HH:mm:ss') <= DATE2 GROUP BY SERIAL,COUNT LIMIT 20;

【问题讨论】:

    标签: apache-kafka ksqldb


    【解决方案1】:

    您目前无法在 KSQL 中执行此操作。由于 KSQL 正在处理无限数据,因此“最后”记录没有多大意义,因为数据(可能)总是到达。

    根据您要执行的操作,您可以使用ROWTIME 谓词根据时间范围过滤数据。

    您可能需要使用 Kafka Streams 来访问您描述的模式中的数据。

    您可能还想在此处检查现有问题以进行投票:https://github.com/confluentinc/ksql/issues/,如果没有,请创建一个https://github.com/confluentinc/ksql/issues/new

    【讨论】:

    • 是否支持 ORDER BY 子句?或 TOPKDISTINCT
    • 您可以在此处查看所有当前支持的语法:docs.confluent.io/current/ksql/docs/developer-guide/…
    • 如果我使用count(*),它只返回1
    • 如果我使用 TOPKDISTINCT(item1,5) 它返回 [value1,null,null,null,null]
    • 只是添加一个更正:LIMIT 20 现在支持,它显示到结果中将出现的 first 20 条记录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2017-11-24
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多