1:N连接KSQL流和表

时间:2020-05-04 12:57:22

标签: ksqldb

我目前正在使用Debezium来流化两个商业应用程序表INVOICE和INVOICE_LINE中的事件。正如您所猜测的那样,两个表之间存在1:N的关系,每个发票在INVOICE表中都有一行,在INVOICE_LINE中有N行。

INVOICE
-------------
 ID
 DESCRIPTION
 INVOICE_DATE
 STATUS
-------------
INVOICE_LINE
------------
 ID        
 INVOICE_ID
 DESCRIPTION
 AMOUNT
 PRICE
 CURRENCY
------------

发票最初是在状态“ NEW”下创建的,但直到状态为“ PROCESSED”时才正式完成(因此可以进行其他处理)。

使用Debezium创建的主题,我想向我的消费者提供将其状态更改为“已处理”(标题和行)的发票。从最初创建发票到状态更改为“已处理”之间,可能会有几天的差异。

由于这个原因,我的策略是使用invoice_lines创建一个KSQL表,并将其与经过过滤的处理过的发票的KSQL流连接起来。但是,这似乎是不可能的,因为只能使用KSQL的键进行连接。通常建议针对这种情况重新输入KSQL表,但是由于每个INVOICE可能有多个INVOICE_LINE,因此在我的情况下不起作用。

对于像上面所述的1:N联接,推荐的方法是什么?

0 个答案:

没有答案