在 Power BI Desktop 中套用 [假設引用完整性] 設定
使用 DirectQuery 連接到資料來源時,您可以使用 [假設引用完整性 ] 選項,針對數據源執行更有效率的查詢。 此功能有一些基礎數據的需求,而且只有在使用 DirectQuery 時才可使用。
設定 [假設引用完整性] 可讓數據源上的查詢使用 INNER JOIN 語句,而不是 OUTER JOIN,以改善查詢效率。
使用假設引用完整性的需求
此設定是進階設定,只有在使用 DirectQuery 連線到數據時才會啟用。 假設引用完整性正常運作時,需要下列需求:
- 關聯性中 From 數據行中的數據絕不 為 Null 或 空白
- 針對 From 數據行中的每個值,[到] 資料行中有對應的值
在此內容中,From 數據行是一對多關聯性的多對多關聯性,或它是一對一關聯性中第一個數據表中的數據行。
使用假設引用完整性的範例
下列範例示範 假設引用完整性 在數據連線中使用時的行為。 此範例會連接到數據源,其中包含 Orders 資料表、 Products 數據表和 Depots 數據表。
在下圖中,顯示 Orders 數據表和 Products 數據表,Orders[ProductID] 和 Products[ProductID] 之間存在引用完整性。 Orders 數據表中的 [ProductID] 資料行絕不為 Null,而且每個值也會出現在 Products 數據表中。 因此, 假設引用完整性 應設定為取得更有效率的查詢。 使用此設定並不會變更視覺效果中顯示的值。
在下一個影像中,請注意,Orders[DepotID] 與 Depots[DepotID] 之間沒有引用完整性,因為 DepotID 是某些 Orders 的 Null。 因此,不應該設定假設引用完整性。
最後,下表中沒有 Orders[CustomerID] 和 Customers[CustID] 之間的引用完整性。 CustomerID 包含一些值,在此案例中為 CustX,不存在於 Customers 數據表中。 因此,不應該設定假設引用完整性。
設定假設引用完整性
若要啟用此功能,請選取 [ 假設引用完整性 ],如下圖所示。
選取時,會根據數據驗證設定,以確保沒有 Null 或不相符的數據列。 不過,對於具有非常大量值的案例,驗證並不保證沒有引用完整性問題。
此外,驗證會在編輯關聯性時發生,而且不會反映數據的任何後續變更。
如果您未正確設定假設引用完整性,會發生什麼事?
如果您在數據中有引用完整性問題時設定 [假設引用完整性 ],該設定不會產生錯誤。 不過,這確實會導致數據明顯不一致。 例如,針對這裡所述的 Depots 數據表關聯性,會產生下列結果:
- 顯示訂單數量總計的視覺效果會顯示值為 40
- 顯示 Depot City 訂單數量總計的視覺效果只會顯示總計 30,因為它不會包含訂單標識碼 1,其中 DepotID 為 Null。
相關內容
- 深入瞭解 DirectQuery。
- 取得 Power BI 中關聯性的詳細資訊。
- 深入瞭解 Power BI Desktop 中的關聯性檢視。