🔧 為什麼 Spotfire 的 Yield Summary 沒有 BIN?
一、問題背景:
「資料明明存在,為什麼畫面什麼都沒有?」
在半導體或製造業的資料分析中,Yield Summary(良率彙總)
幾乎是每天都會看的報表。
其中最重要的一塊,往往是
BIN(失敗分類) 的分布與
Pareto 圖。
但實務上,常會遇到這個情況:
❓「資料庫有 BIN 資料」❓「下拉選單也選了 BIN」
❓「程式執行沒有錯誤」
👉 但 Yield Summary 表格與圖表就是空的
這篇文章會一步一步說明:
👉
為什麼「看起來一切正常」,卻完全顯示不出 BIN
二、初學者最容易誤會的關鍵觀念
❌ 常見錯誤理解
很多人會以為:
「只要欄位名稱是BIN1,
BIN2,
BIN19, 用程式判斷『是不是 BIN 開頭』就好。」
但在 Spotfire 裡,這個想法非常危險。
三、真正的關鍵:Pivot 後「欄位名稱不是你以為的樣子」
🎯 Spotfire 的 Pivot 是怎麼產生欄位的?
在 Yield Summary 中,BIN 欄位通常是 Pivot(樞紐分析) 的結果。
簡化來說,邏輯是:
| 原始資料 | Pivot 後 |
|---|---|
SBIN_NAME = BIN19
|
產生一個「欄位」 |
SBIN_NAME = 19
|
產生一個「欄位」 |
SBIN_NAME = BIN 19
|
產生一個「欄位」 |
👉
欄位名稱 =「資料內容本身」
👉 而不是固定的 BINxx 命名規則
四、為什麼「明明是 BIN,卻抓不到」?
🔍 問題其實出在這裡:
-
使用者選擇的 BIN 清單是:
-
但 Yield Summary 產生的欄位實際名稱可能是:
⚠️ 對電腦來說,這些「全部不同」
| 人眼看 | 電腦看 |
|---|---|
| BIN19 | BIN19 |
| BIN 19 | BIN␣19 |
| BIN19␣ | BIN19␣ |
➡️ 所以只要你用「字串完全比對」
➡️ 就會全部比對失敗
五、為什麼除錯時「什麼都沒印出來」?
很多工程師會這樣除錯:
「只印出包含 BIN 的欄位」
但如果
實際欄位根本沒有包含字串
BIN,
那你得到的結果就會是:
👉 這不是因為資料沒來
👉 而是因為「你檢查的條件本身就錯了」
六、正確觀念:不要猜欄位名,要「正規化後再比對」
✅ 正確做法(概念說明,不含原始程式)
步驟 1:把所有名稱轉成「統一格式」
-
去掉前後空白
-
全部轉成大寫
-
移除中間的空白
-
移除特殊不可見字元
例如:
| 原始值 | 正規化後 |
|---|---|
BIN 19
|
BIN19
|
bin19
|
BIN19
|
BIN19
|
BIN19
|
步驟 2:
-
把「使用者選擇的 BIN 清單」也做一樣的正規化
-
再用「正規化後的值」去比對 Yield Summary 欄位
👉 這樣才能 100% 對齊
七、為什麼這個問題在 Yield Summary 特別容易發生?
因為 Yield Summary 通常具備三個特性:
-
欄位是動態產生的(Pivot)
-
欄位名稱來自資料內容(SBIN_NAME)
-
資料來源可能來自不同系統 / 廠商
只要其中一個地方:
-
多一個空白
-
少一個字母
-
大小寫不同
👉 結果就會「全部消失」
八、實務建議(工程師一定要記住)
✅ 三個黃金原則
-
不要用
startswith("BIN")來判斷 -
一定要先印出「所有欄位名稱」再決定邏輯
-
所有字串比對都要先正規化
九、結論:
「不是 Spotfire 壞掉,是我們太相信眼睛」
這類問題最可怕的地方在於:
❌ 沒有錯誤❌ 沒有 Exception
❌ 看起來資料都有
但畫面就是空的
真正的原因往往不是資料、不是 SQL、也不是效能,
而是
「欄位名稱的理解錯誤」。
🎯 一句話總結
在 Spotfire 中,Pivot 產生的欄位名稱 ≠ 你以為的欄位名稱👉 永遠用「實際欄位 + 正規化比對」,
留言
張貼留言