簡體   English   中英

Ksql:左連接顯示流中的列但不顯示表

[英]Ksql: Left Join Displays columns from stream but not tables

我在 KSQL 中有一個蒸汽和一個表,如下所述:

流名稱:DEAL_STREAM

表名:EXPENSE_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

當我運行以下查詢時,它只顯示流中的列,但沒有顯示表列。

在流表(左)連接中,如果在連接/查找時表中沒有匹配的記錄,則輸出記錄將包含null列(對於表側列)。

這是預期的輸出嗎? 如果不是我做錯了什么?

例如,是否有可能在將 (2) 輸入數據寫入表之前將 (1) 輸入數據寫入流? 如果是這樣,那么流表連接查詢將在 (1) 時刻嘗試執行表查找,而此時表中尚無此類查找數據可用(因為發生在稍后的時刻 (2))。 因為沒有這樣的表數據可用,連接寫入了表側列為null輸出記錄。

注意:KSQL 中的這種流表連接(以及構建 KSQL 的 Apache Kafka 的 Streams API)幾乎是流世界中連接的標准。 這里,只有流表連接的流端會觸發下游連接輸出,如果在連接新輸入記錄時表端沒有匹配流記錄,則表端列將為null 然而,由於這是用戶混淆的常見原因,我們目前正在努力將連接輸出的表端觸發添加到 Apache Kafka 的 Streams API 和 KSQL。 當這樣的功能可用時,你上面的問題就不會再發生了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM