📊 為什麼設定「BIN 比例門檻」後,畫面上還是出現空的 BIN 欄位?
🧠 前言:
「我明明設定 BIN 加起來要超過 0.1% 才顯示,
為什麼畫面上還是看到一堆 0.00% 或空白的 BIN?」
如果你有做過 BI 報表、資料視覺化或製造數據分析,一定遇過這種情況:
- SQL 裡已經寫了門檻條件
- 查出來的資料「理論上」應該被過濾掉
- 但報表畫面上 BIN 欄位還是全部出現,甚至看起來像沒資料
這不是你眼花,也不是系統壞掉,
而是
「資料過濾」與「畫面顯示」是兩件完全不同層級的事情。
🧩 先用白話講整個資料流程(給完全沒寫過程式的人)
我們把整個系統想成三個步驟:
① 資料庫查資料(SQL)
👉 決定「哪些資料列要留下來」
② 系統加工資料(資料轉換 / 彙總)
👉 把資料整理成「適合報表顯示的形狀」
③ 報表畫面顯示(表格 / 圖表)
👉 決定「哪些欄位要顯示在畫面上」
💡 關鍵重點:
就算你在第 ① 步過濾掉資料第 ③ 步如果「硬把欄位加進畫面」,
❌ 常見誤解:
###「我在 SQL 裡設定門檻,欄位就不會顯示了」
這是 90% 工程師一開始都會犯的錯誤。
實際上:
- SQL 只能控制「資料列」
-
報表系統(例如 BI 工具)
- 不會自動幫你隱藏「全空的欄位」
🔍 真正的三大問題根源(工程師角度)
❗ 問題一:你只過濾「資料」,但沒有過濾「欄位」
很多系統會這樣做(示意):
「把所有 BIN 欄位都加到畫面上」
即使某個 BIN:
- 沒有任何資料
- 全部是 0
- 顯示成 0.00%
👉 它還是會被顯示出來
📌 解法思維(概念):
在顯示前,先計算「整個欄位的總和」,小於門檻的欄位,直接不要顯示。
❗ 問題二:資料 Join(合併)時,用錯層級的 Key
這個是最致命、也最難察覺的問題。
常見錯誤情境:
- 原始資料是「機台 + BIN」等細節資料
- 卻只用「產品 ID」去合併
結果會發生什麼?
➡ 系統會把
不該屬於這一列的 BIN 資料硬塞進來
➡ 產生一堆「理論上不該存在的 BIN 欄位」
📌 白話比喻:
就像你只用「姓氏」來合併全班成績,張三的分數就會跑到張四、張五身上。
❗ 問題三:門檻看起來很大,其實非常小
很多人看到:
> 0.01
會以為是 1%
但如果你是這樣算的:
(數量 / 總數) * 100
那:
| 寫法 | 真正意義 |
|---|---|
| 0.01 | 0.01%(非常小) |
| 0.1 | 0.1% |
| 1 | 1% |
👉 所以「只要有 1 筆資料」就可能通過門檻
👉 顯示時再被格式化成
0.00%,看起來像沒資料
✅ 正確的工程師解法(不依賴任何特定系統)
✔ 解法一:資料層先過濾「不該存在的 BIN」
示意邏輯(非真實程式):
只留下「整體占比超過門檻」的 BIN
✔ 解法二:顯示層再檢查「整欄是否有意義」
對每個 BIN 欄位:
如果整欄加總 <= 門檻
不顯示該欄位
📌 這一步是
SQL 做不到的,
一定要在「報表顯示前」做。
✔ 解法三:合併資料時「Key 層級一定要一致」
工程原則一句話:
資料從哪個層級來,就要用哪個層級去 Join
| 資料內容 | 合併 Key |
|---|---|
| 產品 + 機台 + BIN | 三個都要 |
| 只有產品 | 只能用產品 |
🧠 工程師總結(這句很重要)
SQL 是在決定「資料對不對」報表邏輯是在決定「畫面好不好看」
只做其中一半,結果一定怪。
✨ 結語:為什麼這個問題很常見?
因為:
- 資料工程師看 SQL
- 使用者看畫面
- 中間那層「顯示邏輯」最容易被忽略
真正穩定、可信的 BI 系統,
一定是
資料邏輯 + 顯示邏輯 同時設計。
留言
張貼留言