共用方式為


在 Power BI Desktop 中套用 [採用參考完整性] 設定

使用 DirectQuery 連接到資料來源時,您可以使用 [假設引用完整性 ] 選取專案,針對數據源執行更有效率的查詢。 這項功能對於基礎資料有幾項需求,而且只有在使用 DirectQuery 時才能加以存取。

設定 [假設引用完整性] 可讓數據源上的查詢使用 INNER JOIN 語句,而不是 OUTER JOIN,以改善查詢效率。

螢幕擷取畫面,其中顯示用以選取 [採用參考完整性] 的 [編輯關聯性] 對話方塊。

使用假設引用完整性的需求

這是進階設定,只有在使用 DirectQuery 連接到資料時才能啟用。 假設引用完整性正常運作時,需要下列需求:

  • 關聯性中 [從] 資料行內的資料一律不得為 Null 或「空白」
  • 針對 [從] 資料行中的每個值,[至] 資料行中會有對應的值

在此情況下,[從] 資料行可以是「一對多」關聯性中的「多」,或是「一對一」關聯性中第一個資料表的資料行。

採用參考完整性的使用範例

下列範例示範 假設引用完整性 在數據連線中使用時的行為。 此範例會連接到包含 Orders 資料表、Products 資料表和 Depots 資料表的資料來源。

  • 下圖顯示 Orders 資料表和 Products 資料表,Orders[ProductID]Products[ProductID] 之間存在參考完整性。 Orders 資料表中的 [ProductID] 資料行永遠不可為 Null ,而且每個值也都會出現在 Products 資料表中。 因此, 假設引用完整性 應設定為取得更有效率的查詢。 使用此設定並不會變更視覺效果中顯示的值。

    Orders 資料表和 Products 資料表的螢幕擷取畫面。

  • 在下圖中,請注意 Orders[DepotID]Depots[DepotID] 之間不存在參考完整性,因為某些 OrdersDepotIDNull。 因此,不應設定假設引用完整性

    Orders 資料表和 Depots 資料表的螢幕擷取畫面。

  • 最後,下表中沒有 Orders[CustomerID] 和 Customers[CustID] 之間的參考完整性。 CustomerID 包含 Customers 數據表中不存在的值 CustX 因此,不應設定假設引用完整性

    Orders 資料表和 Customers 資料表的螢幕擷取畫面。

設定假設引用完整性

若要啟用此功能,請選取 [ 假設引用完整性 ],如下圖所示。

螢幕擷取畫面,其中顯示可供選取 [採用參考完整性] 的 [編輯關聯性] 對話方塊。

選取時,此設定會向資料驗證,以確保沒有 Null 或不相符的資料列。 不過,如果有非常大量的值,此驗證並無法保證沒有參考完整性問題。

此外,驗證發生於編輯關聯性時,因此「不會」反映資料的任何後續變更。

如果您未正確設定假設引用完整性,會發生什麼事?

如果您在資料中有引用完整性問題時設定 [假設引用完整性 ],該設定不會產生錯誤。 但會導致資料中出現明顯的不一致情況。 例如,針對這裡所述的 Depots 資料表關聯性,此設定會造成下列結果:

  • 顯示訂單數量總計的視覺效果會顯示值為 40。
  • 顯示 Order Qty by Depot City 總計的視覺效果顯示總值只有 30 ,因為不包含 DepotIDNull 的 Order ID 1。