KSQL中的多个键或外键

时间:2018-11-29 11:51:13

标签: apache-kafka ksql

我如何在KSQL中执行1-> N关系

我有一个表,其中bob_id为主键,还有另一个表,其中有多个行,其中foo_id为主键,而bob_id为外键。

我如何使用KSQL复制这种情况?

据我所知,KSQL没有外键。

除非列是主键,否则我们无法在ksql中联接表。

分区不起作用,因为我正在使用表而不是流。

2 个答案:

答案 0 :(得分:1)

您可以根据需要重新分配主题以更改密钥see this example here

Here is some good reference material,介绍如何在KSQL中执行不同类型的联接

答案 1 :(得分:0)

我不确定您是否能够在实践中做到这一点,因为我目前在远程操作similar时遇到了一些问题。

但我会解释你在放弃之前应该尝试什么。我真的希望我们都能找到办法。

<块引用>

重新分区不起作用,因为我使用的是表而不是流。

首先,这与重新分区无关,至少根据您的解释是这样。这是关于重新加密。重新分区意味着更改分区数量以对齐多个集合(表或流)以便能够加入它们。

因此,当您需要重新生成密钥时,您可以先创建一个重新生成密钥的流(例如,使用 CREATE AS SELECT ... PARTITION BY),然后从该流创建一个表。直接从主题创建表格会更好,因为它也将是 materialized

然后,虽然不支持 1 对多连接,但您似乎没有要求它们。因此,应该使用 LEFT OUTER 联接。

但这甚至不是我决定回答这个问题的主要原因。我想补充一点,因为我自己对此感到很兴奋,Kafka Streams 已经support joins by foreign keys
rumor 拥有它,也正在为 ksqlDB 做一些类似的工作。