Ksql: Left Join 显示流中的列而不是表

Ksql: Left Join Displays columns from stream but not tables

我在 KSQL 中有一个 steam 和一个 table,如下所述:

流名称:DEAL_STREAM

Table 姓名:EXPENSE_TABLE

当我 运行 以下查询时,它仅显示流中的列,但没有显示 table 列。

这是预期的输出吗?如果不是我做错了什么?

SELECT TD.EXPENSE_CODE, TD.BRANCH_CODE, TE.EXPENSE_DESC
FROM DEAL_STREAM TD
LEFT JOIN EXPENSE_TABLE TE ON TD.EXPENSE_CODE = TE.EXPENSE_CODE
WHERE TD.EXPENSE_CODE LIKE '%NL%' AND TD.BRANCH_CODE LIKE '%AM%';

查询的输出如下所示。

NL8232@#0          | AM   | null
NL0232@#0          | AM   | null
NL6232@!0          | AM   | null
NL5232^%0          | AM   | null

When I run the below queries it displays only columns from the stream but no table columns are being displays.

在流-table(左)连接中,如果在 table 在 join/lookup.

Is this the expected output. If not am I doing something wrong?

是否有可能,例如,您在将 (2) 输入数据写入 table 之前将 (1) 输入数据写入流?如果是这样,那么 stream-table 连接查询将在 (1) 时尝试执行 table-查找,而 table 中还没有这样的查找数据可用(因为后来发生在时间 (2))。因为没有这样的 table 数据可用,所以连接写入了 table 侧列为 null.

的输出记录

注意:KSQL 中的这个流-table 加入(以及,通过扩展,Apache Kafka 的 Streams API,KSQL 建立在该流中)几乎是流中加入的规范世界。这里,只有 stream-table join 的 stream-side 会触发下游 join 输出,如果在新的输入记录是时 table-side 上没有流记录匹配加入后,table 侧的列将为 null。然而,由于这是导致用户混淆的常见原因,我们目前正在努力将连接输出的 table 端触发添加到 Apache Kafka 的 Streams API 和 KSQL 中。有了这样的功能,就不会再出现你上面的问题了。