【Power BI教學】Power BI 關聯性設定全攻略:從基礎概念到實務避坑指南

【Power BI教學】Power BI 關聯性設定全攻略:從基礎概念到實務避坑指南

DATA MODELING // 資料建模核心

一、關聯性設定的核心重要性

在 Power BI 中,設定資料表之間的關聯性(Relationships)是建立正確分析模型、確保 DAX 計算精準的關鍵步驟。本文將釐清關聯性的核心要素,並解答初學者最容易困惑的「方向性」問題。

CORE CONCEPT 01 // 核心要素拆解

二、決定關聯的三大要素

● 1. 基數(Cardinality)

說明兩張表之間的資料列如何對應:

  • 一對多 / 多對一(1 : * 或 * : 1)【最推薦】:
    觀念:維度表(如 產品表)無重複值(1);事實表(如 銷售明細)允許重複值(*)。
    情境:標準星型模型(Star Schema),效能最好且計算最穩定。
  • 一對一(1 : 1):
    觀念:兩邊欄位皆為唯一值。
    情境:常見於主表與副表拆分(如 員工基本資料 與 薪資機密)。若無權限考量,建議直接在 Power Query 中合併。
  • 多對多(* : *)【需謹慎】:
    觀念:兩邊都有重複值。容易產生計算歧義與效能卡頓,建議透過建立橋接表(Bridge Table)拆成兩段「一對多」。

● 2. 交叉篩選方向(Cross Filter Direction)

決定「A 表的篩選條件」是否會傳遞給「B 表」:

  • 單向(Single)【預設/最佳實踐】:篩選條件僅由 1 端(維度表)流向 * 端(事實表)。
  • 雙向(Both):篩選條件雙向流動。若非特殊需求不建議全開,容易導致計算非預期結果或循環參考。

● 3. 作用狀態(Active vs. Inactive)

  • 作用中(實線):兩表間僅能有 1 條作用中關聯,系統預設的 DAX 計算皆走此路徑。
  • 非作用中(虛線):當兩表有多個對應欄位(如 訂單日期 與 出貨日期)時建立。需在 DAX 中使用 USERELATIONSHIP() 函數動態啟用。
CORE CONCEPT 02 // 常見迷思觀念澄清

三、關於「方向性」與拉線的手感

● Q:拉線時的方向會影響設定嗎?

答案:手動拉線的方向完全沒有影響!但關聯線上的「箭頭方向」非常重要。

  • 滑鼠拉線手感(無影響):無論是從「1 端拉到 * 端」還是「* 端拉回 1 端」,系統產生的關聯結果完全一致。
  • 關聯線箭頭(極重要):箭頭代表篩選條件的流動方向。
【客戶表 (1)】 ─── (箭頭向右 ▶) ───► 【銷售表 (*)】

在「客戶表」篩選【張三】,右邊的「銷售表」會同步被篩選。反之,在「銷售表」點選某筆資料,左邊的「客戶表」不會被影響(單向設定下)。

● Q:方向性是系統自動執行的嗎?

答案:是的,系統會自動檢查並判斷,但最終檢查權在使用者身上。

系統自動偵測機制:當你拖曳欄位建立關聯時,Power BI 會背後分析資料。若判定 A 表為唯一值、B 表有重複值,會自動設定為 1 : *,並將篩選方向自動設為由 1 指向 * 的單向流動。

為什麼仍需人工檢查?

  • 維度表乾淨度:若維度表不小心有重複值,系統會誤判為多對多(* : *)並自動開啟雙向篩選。
  • 自動關聯誤拉:系統有時會自動將名稱相同的欄位拉在一起(如將銷售表的 Customer_ID 誤連到產品表的 Product_ID)。
SUMMARY // 實務避坑最佳實踐

四、初學者黃金 4 大準則

為避免 90% 以上的計算錯誤與報表卡頓,請遵循以下原則:

  1. 堅持 1 對多(1 : *):維持維度表與事實表分明,維度表 Primary Key 務必去除重複項。
  2. 維持單向篩選(Single):讓篩選單向流動,保持模型清晰。
  3. 獨立日期表(Date Table):建立連續不中斷的日期維度表來處理時間分析,避免直接用事實表的日期欄位串聯。
  4. 多重日期用虛線:面對多個日期欄位(如訂單日、出貨日),建立「1 條實線 + 多條虛線」,需要時以 DAX 調用虛線。

💡 快速檢查口訣:
「1 對多、單向流、獨立日期表、虛線交給 DAX 走。」

留言

相關文章 / 薪資情報

文章載入中...

你可能有興趣

精選文章 / 推薦情報

文章載入中...