【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 : *):維持維度表與事實表分明,維度表 Primary Key 務必去除重複項。
- 維持單向篩選(Single):讓篩選單向流動,保持模型清晰。
- 獨立日期表(Date Table):建立連續不中斷的日期維度表來處理時間分析,避免直接用事實表的日期欄位串聯。
- 多重日期用虛線:面對多個日期欄位(如訂單日、出貨日),建立「1 條實線 + 多條虛線」,需要時以 DAX 調用虛線。
💡 快速檢查口訣:
「1 對多、單向流、獨立日期表、虛線交給 DAX 走。」
留言
張貼留言