[英]Is it possible to use multiple left join in Confluent KSQL query? tried to join stream with more than 1 tables , if not then whats the solution?
[英]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.