🐬為什麼資料過濾「看起來沒生效」?一次搞懂 BI 工具中「資料表 ≠ 畫面」的常見陷阱
🧠 前言:為什麼「我明明過濾了,畫面卻沒變?」
在資料分析或 BI(Business Intelligence)工具中,
「過濾失效」是最常見、也最讓人困惑的問題之一。
很多工程師、分析師都遇過這種情況:
❝ 我已經把資料中「小於等於 0 的比例」刪掉了,為什麼圖表上還是看得到 0%? ❞
如果你也曾卡在這裡,那麼這篇文章會一次幫你解開這個迷思。
🧩 一個最關鍵但常被忽略的觀念
❗ 資料表 ≠ 視覺化畫面
在大多數 BI 工具中(例如 Spotfire、Tableau、Power BI):
你操作的資料表,和畫面實際顯示的資料來源,很可能不是同一張表。
這正是問題的核心。
🏗 BI 系統的典型資料流程(白話版)
我們用一個「完全抽象化、不含任何真實系統名稱」的流程來說明:
你可能在「資料整理表」做了過濾,
但畫面其實是讀「彙總表」。
👉 所以你刪對資料了,但刪錯地方。
🔍 常見錯誤情境解析(用人話講)
情境一:我已經寫程式把不要的資料刪掉了
工程師通常會寫類似這樣的邏輯(以下為示意碼):
程式執行「完全正確」,
資料表裡真的只剩下大於門檻的資料。
❓ 問題在哪?
👉 畫面不是用這張表。
情境二:那我把過濾寫在「計算公式」裡不就好了?
有些人會改成:
這樣確實可以避免除以 0,
但它只影響「數值計算」,不會自動幫你把資料列刪掉。
Null ≠ 不存在
0 ≠ 不顯示
🧠 為什麼工程師會一直踩這個坑?
因為 BI 工具和一般後端系統有三個「反直覺」的特性:
1️⃣ 計算欄位只負責「算值」,不負責「刪資料」
這種寫法:
-
✔ 只影響欄位內容
-
❌ 不會影響資料列是否存在
2️⃣ 重新載入資料表,會「重置」你以為留下的東西
這種動作:
-
會重新指向來源資料
-
之前手動刪掉的資料列 全部回來
3️⃣ 圖表永遠只看它「綁定的那張表」
不論你在後面怎麼處理資料:
-
如果圖表用的是
SummaryTable -
你卻在
FilteredTable動刀
👉 畫面一定不會變
✅ 正確解法的三種方向(由簡到難)
✔ 解法一(最簡單):讓畫面直接用「已過濾的表」
適合:
-
表結構簡單
-
不需要再做複雜彙總
✔ 解法二(最穩定):在「畫面用的表」上做過濾
適合:
-
已經有複雜 Pivot / Group
-
不想改視覺化結構
✔ 解法三(最佳實務):計算 + 視覺化條件一起設計
適合:
-
長期維護
-
多張圖表共用邏輯
🧪 一個工程師視角的 Debug Checklist
下次你遇到「資料過濾沒生效」,請照這個順序檢查:
-
畫面實際用的是哪一張表?
-
我刪的是同一張嗎?
-
是否有「重新載入資料表」的動作?
-
過濾是寫在「計算」還是「資料列」?
-
Null 和 0 是否被混為一談?
🏁 結語:問題不在技術,而在「模型」
這類問題其實不是你不會寫程式,
而是:
❝ BI 工具的資料模型,和一般後端系統完全不同 ❞
只要你建立正確的心智模型:
- 資料表的生命週期
- 視覺化的資料來源
- 計算 vs 過濾的責任分工
你就能一次解決 90% 的「為什麼畫面沒變」問題。
留言
張貼留言