我目前正在使用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联接,推荐的方法是什么?