內連接滴記錄結果

避免了記錄在執行一個內連接。

寫的siddharth.panchal

去年發表在:2022年5月23日

問題

你執行內連接,但是結果加入表丟失數據。

例如,假設您有兩個表,訂單模型

% python df_orders =火花。createDataFrame(((“日產”,Altima,雙門車2.5年代車),(“日產”,Altima, 4-door 3.5 SE轎車),(“日產”,Altima,”)(“日產”,Altima, None)],[“公司”,“模型”,“信息”)

樣品訂單表。

% python df_models = spark.createDataFrame(((“日產”,Altima,”)(“日產”,Altima,雙門車2.5年代車),(“日產”,Altima,雙門車3.5 SE轎車),(“日產”,Altima, 4-door 2.5年代轎車),(“日產”,Altima, 4-door 3.5 SE轎車),(“日產”,Altima, 4-door 3.5 SL轎車),(“日產”,Altima, 4-door混合動力轎車),(“日產”,Altima, None)],[“公司”,“模型”,“信息”)

範例模型表格。

你嚐試直接連接兩個表。

% python df_orders.createOrReplaceTempView(“訂單”)df_models.createOrReplaceTempView(“模型”)SQL複製到clipboardCopy SELECT *魔法從訂單一個魔法內連接模型b魔法上。公司= b。魔法和一個公司。模型= b。魔法和一個模型。信息= b.Info

結果加入表隻包括三四個記錄的訂單表。的記錄值一列沒有出現在結果中。

一個默認的內連接的結果。Null值下降。

導致

Apache火花不考慮當執行連結操作值。

如果你試圖加入表和一些列包含值,記錄將不被包括在結果加入表。

解決方案

如果你的源表值,您應該使用火花安全操作符(< = >)。

當你使用< = >引發過程值(而不是把他們)在執行連接。

例如,如果我們修改示例代碼< = >,由此產生的表不下降值。

%的sql SELECT *魔法從訂單一個魔法內連接模型b魔法上。公司= b。魔法和一個公司。模型= b。魔法和一個模型。信息< = > b.Info

空安全內連接的結果。Null值是可見的。

例如筆記本電腦

檢查內連接滴null值的例子筆記本

這篇文章有用嗎?