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 中。有了这样的功能,就不会再出现你上面的问题了。
我在 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 中。有了这样的功能,就不会再出现你上面的问题了。