发布于 2020-06-01 15:10:21
我不认为您提出的解决方案会像您预期的那样起作用,因为流数据会尽快处理。结果不会随着时间的推移而重新计算。
然而,你可能能够以其他方式实现你想要的。
例如,如果没有收到付款,则需要在30分钟后自动关闭订单。这可以通过左加入订单流与付款流,在30分钟的窗口内,然后过滤出任何结果与付款。这会给你一堆未付的订单:
-- 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中是不可能的,至少在它支持非键连接之前是不可能的。
https://stackoverflow.com/questions/50904222
复制相似问题