首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否有可能用KSQL实现“延迟执行”?

是否有可能用KSQL实现“延迟执行”?
EN

Stack Overflow用户
提问于 2018-06-18 07:06:48
回答 1查看 348关注 0票数 0
  1. 实现KSQL UDF "NOW()“
  2. 创建流my_notification_stream作为select *来自my_event_stream,其中occurTime +阈值< NOW()
  3. 听my_notification_stream主题
EN

回答 1

Stack Overflow用户

发布于 2020-06-01 15:10:21

我不认为您提出的解决方案会像您预期的那样起作用,因为流数据会尽快处理。结果不会随着时间的推移而重新计算。

然而,你可能能够以其他方式实现你想要的。

例如,如果没有收到付款,则需要在30分钟后自动关闭订单。这可以通过左加入订单流与付款流,在30分钟的窗口内,然后过滤出任何结果与付款。这会给你一堆未付的订单:

代码语言:javascript
复制
-- create stream of unpaid orders:
CREATE STREAM UNPAID AS 
   SELECT * FROM ORDERS 
     LEFT JOIN PAYMENTS WITHIN 30 MINUTES ON ORDERS.ORDERID = PAYMENTS.ORDERID
   WHERE PAYMENTS.ORDERID IS NULL;

第二个例子,如果我正确理解的话,可能会更棘手。您可以轻松地构建一个用户表,包括订阅结束时。然而,这还不足以满足你所需要的“到期前3天”的要求。问题是,您所谈论的NOW udf只在处理数据时执行,而不是随着时钟时间的变化而执行。您需要的是其他一些方法来促使ksqlDB重新评估您的表达式。

我认为这在ksqlDB中是不可能的,至少在它支持非键连接之前是不可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50904222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档