KSQL 加入 Kafka 流到 KTable

KSQL joining Kafka stream to KTable

我正在尝试在 table 和流之间执行连接,但由于某种原因,它不起作用。

ksql> SELECT GROUP_TABLE.SOCIETY_ID, GROUP_TABLE.ID FROM GROUP_TABLE;
1 | 2
^CQuery terminated
ksql> SELECT DEVICE_STREAM.GROUP_ID FROM DEVICE_STREAM
2
^CQuery terminated
ksql> SELECT GROUP_TABLE.SOCIETY_ID  FROM DEVICE_STREAM LEFT JOIN GROUP_TABLE ON DEVICE_STREAM.GROUP_ID = GROUP_TABLE.ID;
null

我期待 1 而不是空值。 GROUP_TABLE 是从通过 Postgres JDBC 连接器同步到 Kafka 的主题创建的。

以上行为是针对现有数据的。如果我碰巧在 Postgres 中输入新数据,连接语句 returns 正确的值

很可能是数据上的时间戳。 stream-table 连接更像是一个 lookup/enrichment 而不是传统的 SQL 连接。 ksqlDB 尽量按时间顺序处理数据。如果 DEVICE_STREAM 上的时间戳在 GROUP_TABLE 之前 ,则 ksqlDB 不会加入数据,因为 table 中不存在该行还没。