發表文章

目前顯示的是 12月, 2025的文章

🧾BI 報表怎麼全部變成 0? 軟體工程師用一個真實案例,教你看懂「欄位錯誤、Null 與 0 值」到底在吵什麼

一、前言:為什麼我的報表全部變成 0? 對很多非工程背景的同事來說,「BI 報表」就像是魔法: 丟進一堆資料,按一下按鈕,就長出一張很專業的圖表,什麼良率、占比、排名,一眼就懂。 直到有一天—— 「咦?怎麼這次產生的報表,所有數字都變成 0,還有一堆空白欄?」 「系統是不是壞掉了?」 其實,很多時候不是「系統壞了」,而是: 欄位名稱改過了,但報表還在找舊名字 資料裡有大量 Null 或 0,公式又寫錯位置 轉表(Pivot)後,欄位跟你以為的不一樣 這篇文章,我會用一個實際的「工程師除錯過程」當故事, 但把技術細節改寫成適合一般人閱讀的版本, 讓你可以聽得懂工程師在說什麼,也比較知道問題到底出在哪裡。 二、故事背景:一個「良率儀表板」的日常 想像有一個公司,用 BI 工具做了一個「良率儀表板」, 每天會把測試資料轉成表格,算出各種: 每個批次(批號)的 測試總數 每個不良原因(BIN)的 發生次數與百分比 各家代工廠、產品型號、日期…的 良率 後端流程大概長這樣(用很白話的說法): 從資料庫抓出原始測試資料 → 放到一張叫 TestData 的表 把每個測試點的 bin 數量彙總 → 變成 BinSummary 再做一次彙總(Pivot),讓每個 BIN 變成欄位(BIN1、BIN2、BIN3…) 最後算出各個 BIN 的占比,也就是常看到的 % 欄位 整個過程會用一支腳本(Script)自動完成, 在儀表板上就會看到一個按鈕叫「Generate Yield Summary」之類的東西。 平常都好好的,直到有一天—— ...

📊 自動產生 Excel 圖表卻一堆問題?工程師教你一次搞懂「比例軸、擁擠、消失」的真正原因

前言: 很多公司都希望「 每天自動產生 Excel 報表+圖表 」,但實務上常常遇到這些問題: 圖表有產生,但 看起來一團黑 百分比顯示怪怪的,不是 5%、10% 一格 軸線標題(Lot / Percentage)不想顯示卻一直跑出來 圖例正常,但 X 軸、Y 軸文字太擠 有時甚至直接噴錯,整張圖不見 如果你完全不懂程式,只負責「 看報表的人 」,這篇會用工程師的角度, 把問題翻成白話 ,讓你知道為什麼會這樣、以及工程師通常怎麼解。 一、為什麼 Excel 圖表會「擠到像黑板塗滿線」? 📌 現象 你打開 Excel,看到圖表裡: 橫線非常密 百分比刻度幾乎重疊 看起來像「條碼」或「掃描線」 📌 真正原因(白話版) Excel 的圖表其實是用 0 ~ 1 代表 0% ~ 100% 。 如果工程師沒告訴 Excel: 「每隔多少百分比才畫一條線」 Excel 就會 每一點都畫 。 📌 工程師怎麼修? 工程師會明確告訴系統: 百分比最小值是 0% 最大值是 100% 每 5% 或 10% 才畫一條線 這就像你畫格子紙,不會每 1 公厘畫一條線。 二、為什麼 X 軸(Lot 名稱)全部疊在一起? 📌 現象 你看到: Lot 名稱全部直立重疊 根本看不出是哪一批 📌 真正原因 Excel 預設會 「每一筆資料都顯示標籤」 。 如果你有: 50 筆資料 Excel 就會試著顯示 50 個標籤。 📌 工程師的解法 工程師會改成: 「資料點都留著,但標籤 每隔幾個才顯示一個 」 例如: 只顯示第 1、5、10、15 筆 圖線完整,標籤清楚 三、為...

🐬Spotfire 匯出 CSV 的實際架構解析:為什麼「產生下載連結」的 Script 並不決定資料表?

前言:Spotfire 匯出流程為什麼常讓人誤判? 在維護 Spotfire 專案時,常見一個問題: 「這段 Script 到底是匯出哪一張 Data Table?」 實際追下去才發現: Script 裡完全沒看到 Document.Data.Tables["XXX"] 但 CSV 卻確實被產生了 使用者也能成功下載 這並不是 Spotfire 的黑魔法,而是 刻意設計的分層架構 。 一、常見錯誤理解:一支 Script 就該負責所有事情? 很多人會直覺認為: X 「既然是 Export Script,那一定在這裡指定資料表」 X 但在企業級 Spotfire 專案中,這通常是 反模式(Anti-pattern) 。 原因很簡單: 匯出流程(檔案、路徑、下載) 與資料邏輯(資料表、過濾、欄位) 👉 應該拆開處理 二、實務上的標準分層設計(Architecture) 常見實作會拆成兩層 Script [ UI / Download Script ] ↓ [ Data Export Script ] ↓ [ Spotfire Data Table ] 各層責任劃分 層級 負責內容 UI / Download Script 路徑、檔名、時間戳、下載連結 Data Export Script 決定資料來源、欄位、過濾條件 Data T...

🐬【Spotfire 教學】匯出資料成 CSV 是怎麼做到的?一篇給完全新手看的流程全解

前言:為什麼「匯出資料」其實沒有你想得那麼簡單? 很多人在使用 TIBCO Spotfire 做資料分析時,都會遇到一個需求: 👉「我可以把現在畫面上的資料下載成 Excel 或 CSV 嗎?」 表面上看起來只是「按一個下載鍵」, 但在實務上,背後其實牽涉到 檔案路徑、權限、資料來源、下載連結產生 等一整套流程。 這篇文章會用 完全不需要程式背景 的方式,帶你理解: Spotfire 的「匯出資料」是怎麼被設計的 為什麼常常找不到「到底是匯出哪一張資料表」 工程師實際上是怎麼把下載連結「生」出來的 一、Spotfire 匯出資料的常見誤解 ❌ 常見誤會 1: 「這段程式碼應該就直接指定資料表了吧?」 實際上,在很多 Spotfire 專案中: 負責『建立下載檔案』的程式,和『決定資料來源』的程式,是分開的 也就是說: 第一段程式: 👉 負責「建立資料夾、檔名、下載連結」 第二段程式: 👉 才真正決定「要把哪一張資料表寫進 CSV」 這種設計在企業系統裡非常常見,因為 可維護性比較高 。 二、整個匯出流程,用白話說就是這樣 我們先用「生活化比喻」來理解整件事 👇 🧠 可以想成這個流程: 📁 先決定「今天的檔案要放在哪個資料夾」 🏷 幫檔案取一個不會重複的名字 🧾 請另一位「專門負責寫資料的人」去產生 CSV 🌐 生一個可以點擊下載的網址 🖱 把這個下載連結顯示在 Spotfire 畫面上 👉 第一段程式只負責 1、2、4、5 👉 真正寫資料的是第 3 步的另一段程式 三、工程師實際在做什麼?(完全改寫的示意範例) ⚠️ 以下程式碼為「概念示意」,與任何實際...

🍀FT Loader(ftldr.py)如何同時支援 BIN / SBIN 欄位、只寫入 >0 的 Bin,並確認是否載入成功(新手也看得懂)

前言:為什麼你會遇到 BIN / SBIN 的坑? 在製造業測試資料(FT/CP/ATE)世界裡,「Bin」常用來分類測試結果: BIN1 可能代表 Pass BIN2~BINn 代表不同失敗原因或分類 但實務上,各家供應商或不同版本報表,欄位命名不一定一致: 有的報表用 BIN2 有的報表用 SBIN2 還可能出現大小寫混用 item_No / ITEM_NO 、或 sbin10 等 如果 Loader 沒有做「欄位正規化(Normalization)」,就會出現: 程式找不到 BIN1 ,直接報錯 或把 SBIN2 當成奇怪字串,轉數字時爆炸 或 0 的 Bin(沒有任何數量)也被寫進資料庫,造成報表顯示一堆不必要的欄位 這篇文章用「完全新手能懂」的方式,解釋: Loader 什麼時候會產生 SBIN/BIN 如何同時支援 BINx 與 SBINx 如何做到「只記錄數值 > 0 的 Bin」 如何判斷檔案到底跑成功了沒(不用猜) 一、你要解決的需求其實是兩件事 需求 A:BIN / SBIN 欄位都能讀 意思是:Excel 欄位可能叫 BIN4 或 SBIN4 ,你希望都能被 Loader 視為同一個「第 4 號 bin」。 需求 B:只有 Bin 數量 > 0 才寫進資料庫 意思是:如果 BIN2 = 0 ,就不要 insert 到 FT_SITE_SUMMARY 或 BIN_DEF ,避免後續報表出現一堆「永遠為 0」的 bin。 二、SBIN / BIN 的數值到底「在哪裡被記錄」? 以常見 Loader...

🐬Spotfire 出現「Linked Data Report」是什麼?資料不一致警告原因與完整解決步驟(新手也看得懂)

你在 Spotfire 做報表時,右上角突然跳出警告: Linked data report — There are some inconsistencies and some data might not be shown accurately. (資料連結有不一致,可能導致資料顯示不準) 很多人第一反應是:「Spotfire 壞了?」 其實不是。這個警告通常是在提醒你: 你看到的報表結果可能少了部分資料、或連錯資料 。 這篇文章會用「完全不懂資料模型的人也能理解」的方式,帶你搞懂它為什麼出現,以及最常見的修正流程。 一、Linked Data Report 用人話講是什麼? 你可以把 Spotfire 想成在組裝積木: 資料表 A :像是一盒積木(例如「訂單清單」) 資料表 B :另一盒積木(例如「出貨記錄」) 你想把 A 和 B 拼在一起,就需要一個「共同的卡榫」 這個卡榫就叫 Key(連結欄位) ,例如:訂單號、產品編號、批號等等。 Linked Data Report 的意思就是: Spotfire 發現你在拼積木時,有些積木卡榫對不上, 所以拼出來的成品可能缺角、或某些資料根本沒被接上。 二、為什麼會出現?最常見 4 大原因 以下這 4 種情況,是企業報表最常遇到的: 1) Join(資料合併)用的 Key 對不起來 例如你用「訂單號」去合併兩張表,但: 表 A 有:1001、1002、1003 表 B 只有:1001、1003 那 1002 在合併後就可能變成空值或消失 ,Spotfire 會提醒你「不一致」。 2) 資料來源欄位被改名 / 刪掉 / 型別變了 常見於: 資料庫欄位改名 Excel 欄位調整 CSV 欄位順序變動 數字欄位突然變成文字(或反過來) Spotfire 會覺得:「我原本要抓的欄位不見了」,因此...