發表文章

🐬【完整教學】Spotfire 一直卡在 Loading / Pivot?其實不是當機,而是資料架構問題(含排查流程)

前言:你看到的「卡住」,其實電腦正在拼命工作 很多公司在使用 Spotfire 或其他 BI 報表工具時,常遇到一個狀況: 開啟報表 → 畫面停在 Loading → 顯示 Performing transformation: Pivot → 等很久甚至看起來像當機 多數人的第一直覺是: 伺服器壞了 資料庫掛掉 網路斷線 但實際上, 90% 的情況不是故障,而是「資料設計方式讓系統必然變慢」 。 這篇文章用「完全沒有工程背景的人」也能理解的方式,帶你看懂發生了什麼事,以及如何自己找出真正的原因。 一、先理解:Spotfire 報表背後在做什麼? 你在畫面上看到的是一個圖表,例如: 良率分析 分佈圖 趨勢圖 但電腦實際做的事情其實是三步: 從資料庫拿資料 整理資料 把資料變成圖 問題就出在第 2 步。 二、什麼是 Pivot?(關鍵概念) 所謂 Pivot,你可以把它想像成 Excel 的「樞紐分析表」。 原始資料長這樣 產品 站點 數值 A 1 10 A 2 15 A 3 12 Pivot 後變成 產品 站點1 站點2 站點3 A 10 15 12 Excel 做這件事很快,因為資料只有幾千筆。 但如果是: 幾十萬筆甚至上百萬筆資料 BI 工具就要在記憶體裡「重新拼裝一張超大的表格」。 這一步是最耗資源的。 三、為什麼畫面會停在 Pivot? 這裡發生的真實流程是: Spotfire 向資料庫要資料 資料庫把大量原始資料傳回 Spotfire 在自己的記憶體裡重組資料 建立新表 才能畫圖 關鍵是第 3 步。 如果資料量太大,電腦會出現:...

🐬Spotfire Server 無法查詢排程狀態?完整解析「資料庫物件不存在」錯誤與實際排除流程(SQL Server 教學)

🧠 前言:這不是「系統壞掉」,是系統在求救 很多工程師在接手 BI 系統(像 Spotfire、Power BI Report Server、Tableau Server)時,最常遇到一種情況: 使用者回報:「排程沒跑」 但 Server 看起來是開著的。 然後你打開 log,看到一大串紅色錯誤,像這樣: 資料庫查詢失敗:找不到某個資料表或檢視表 新手工程師通常會以為: DB 壞了 Server 壞了 或要重灌 其實 這三個全部都錯 。 這篇文章會用「完全不懂後端的人也能理解」的方式,帶你一步一步看懂: 👉 為什麼 Spotfire Server 明明開著,卻查不到排程狀態? 🏗 Spotfire Server 的真正架構(白話版) 先理解一件非常重要的事情: Spotfire Server 並不是一個單一程式。 它其實是四個系統一起合作: 元件 功能 生活比喻 Web Server 接收使用者操作 櫃台 Automation Services 排程報表 排程員 Scheduler 記錄任務 工作表 SQL Server 資料庫 存所有任務資訊 倉庫 關鍵觀念: ...

🌐Vue 打包後的 dist 怎麼跑?新手也能懂的 3 種方式(本機測試到上線部署一次搞懂)

前言:為什麼 Vue 的 dist 不能「直接點開」? 很多新手第一次打包 Vue 專案後,會看到產生一個資料夾叫 dist ,直覺就會想: 「我雙擊 index.html 不就好了嗎?」 結果打開後可能是空白頁、功能壞掉、或切換頁面就 404。 原因很簡單: dist 是一包「靜態檔案」 (HTML/CSS/JS/圖片),它需要一個「伺服器」把檔案用正確方式送到瀏覽器,才能正常運作。 你可以把 dist 想成: ✅ 已經印好的傳單(內容都有了) ❌ 但還沒有人幫你發到路人手上 「伺服器」就是那個幫你發傳單的人。 一、最推薦:用「一鍵啟動」的本機靜態伺服器(新手最快) 這個方法適合: 你只是想在自己電腦上確認 dist 是否正常 想快速讓同事在同一台電腦或同網段測試 做法(範例指令) 進到 dist 所在的資料夾(或專案根目錄也可以) 使用一個靜態伺服器工具啟動 例如用 npx 直接跑一個輕量伺服器(不需要全域安裝): npx lite-server --baseDir = "dist" 完成後通常會出現一個網址,例如: http://localhost:xxxx 你用瀏覽器打開那個網址,就能看到打包後的成果。 這方法的優點 上手最快 適合「我只想確認 dist 能不能跑」這種需求 不需要懂部署 二、Windows 也能超簡單:用內建環境快速開一個網站 如果你在 Windows 上,不想裝太多工具,也可以用「現成就有的環境」開一個簡單網站。 做法(示意) 把命令列切到 dist 目錄 用某個內建方式啟動簡易 Web Server (例如你電腦有安裝常見開發環境,通常都能做到) 概念重...

🐬Spotfire 網頁版一直打不開?出現「No Web Player services are available」的原因與解法(工程師實戰排查)

1. 問題現象:為什麼 Spotfire 網頁版一直打不開? 很多公司會用 Spotfire Web Player 讓使用者直接用瀏覽器開啟分析報表(analysis)。但有時候你可能會遇到下面這種狀況: 使用者在瀏覽器點開某個 Spotfire analysis 畫面跳出錯誤訊息: “The analysis could not be opened because no Web Player services are available.” 不管按 Reopen analysis 、換瀏覽器、換帳號,甚至隔一陣子再試都一樣 錯誤頁面常會附上一段 Error reference code (看起來像一串 UUID) 對完全不懂 Spotfire 的人來說,這會很像「Spotfire 壞了」; 對工程師來說,這其實是一個非常明確的訊號: 👉 Spotfire Server 當下找不到任何可用的 Web Player 服務來接手你的報表。 2. 白話解釋:Web Player 是什麼?為什麼它會影響你能不能開報表? 你可以把 Spotfire Web 架構想成一間餐廳: Spotfire Server :像「櫃檯」,負責接單與分派工作 Web Player :像「廚房」,真正負責把報表算出來、渲染成瀏覽器能看的畫面 Node Manager / Node :像「店內的設備管理」,維持廚房與設備運作 當你用瀏覽器開啟報表時,流程大概是: 你點「開啟報表」 櫃檯(Spotfire Server)要找一間可用的廚房(Web Player) 找到後才會把工作分派過去 Web Player 開始跑查詢、算資料、渲染畫面 ...

🧾SQL Server 備份失敗:媒體家族(media family)錯誤是什麼?一篇搞懂為什麼 .bak 備份檔不能用

一、這是一個「幾乎每個工程師都會遇到」的錯誤 如果你是軟體工程師、IT 或 MIS,只要有碰過 SQL Server,某一天你一定會遇到這個情境: 我只是想備份資料庫,為什麼 SQL Server 拒絕我? 系統跳出一個很長的錯誤訊息,大意是: 備份媒體與目前備份裝置設定不相容 很多人看到這裡會以為: 磁碟壞了 權限錯誤 SQL Server 壞了 資料庫損毀 其實都不是。 真正的原因只有一個: 你正在把「新的備份」寫進一個「舊規格的備份容器」。 而這個容器,就是 .bak 檔案。 二、先用一個生活比喻理解(超重要) 想像你有一個硬碟盒。 某天你用「雙硬碟 RAID」方式建立它(等於 2 個硬碟一起運作)。 後來你把其中一顆硬碟拔掉,只剩一顆, 然後你想把資料再存回去。 系統會說: 不行,這個盒子原本是 2 顆硬碟的結構,你現在只有 1 顆。 SQL Server 的 .bak 檔案也是一樣的概念。 三、什麼叫做 Media Family(媒體家族)? SQL Server 備份其實不是單純「存檔」。 它是一個 備份媒體容器(Backup Media Set) 。 一個備份可以有: 1 個檔案 2 個檔案 甚至 10 個檔案 例如: 工程師可能曾經做過這種備份: (以下為示意範例程式碼) 把資料庫同時寫入兩個備份檔 也就是說 一份備份,被拆成「兩個 .bak」。 這就叫: 多媒體備份(Striped Backup) 而 SQL Server 會在備份檔內寫入一個結構資訊: 「這個備份容器需要兩個媒體家族」 四、問題就出在這裡 之後某一天,你重新備份時,只使用一個檔案: 只備份到一個檔案 SQL Server 會檢查舊 .bak 的內部資訊,然後發現: 這個容器設計需要 2 個備份媒體,但你只提供 1 個。 所以它拒絕。 不是你權限錯誤 ...

🐬Spotfire 匯出報表資料跟 SQL 查詢不一致?工程師教你一步一步找出真正原因(含日期、PIVOT、快取陷阱)

一、這篇文章在解決什麼問題? 很多公司使用 BI 系統(例如 Spotfire、Power BI、Tableau) 自動產生報表, 但工程師最常遇到一個可怕的狀況: 「系統匯出的報表數據,跟我在資料庫查詢的不一樣。」 這不是小問題。 在半導體、金融、製造業,這種情況可能直接影響決策、產線、甚至客戶信任。 這篇文章會帶你理解: 你看到的「資料不同」,通常不是資料壞掉,而是 查詢邏輯不同 。 而且 — 非常常見。 二、真實案例(簡化後) 一位工程師建立了一個自動報表: 系統每天會: 從資料庫抓測試數據 分析 匯出 CSV 產生 PDF 他發現一件事: 系統顯示只有 3 個產品型號,但他在資料庫查詢卻看到很多列資料。 他以為: SQL 寫錯 報表錯 系統壞掉 其實都不是。 三、關鍵概念: 「清單」跟「明細」是兩種資料 先看一個例子: 資料庫裡的資料(明細)可能長這樣: 產品 批號 A 001 A 002 A 003 B 004 B 005 C 006 但報表系統可能只會先抓: 有哪些產品? 那結果會是: A B C 這叫做: DISTIN...

🐬Spotfire 出現「Bookmarks and Conversations」是什麼?按 Yes 還是 No?完整解釋與正確選擇教學

圖片
  一、為什麼你會看到這個奇怪的視窗? 如果你在公司負責報表、數據分析或維護 BI 系統(例如 Spotfire), 某一天你儲存報表時,突然跳出一個視窗: Bookmarks and conversations 並問你: 要不要保留 bookmarks 或 conversations? 很多人會卡住,因為: 不知道它是什麼 怕按錯報表壞掉 不敢問主管 其實這不是錯誤訊息,而是 Spotfire 在保護使用者的操作紀錄 。 這篇文章會用「完全沒有程式背景的人」也能理解的方式解釋。 二、先理解 Spotfire 是什麼(用生活例子) 你可以把 Spotfire 想像成: 一個「可以互動的 Excel + PowerPoint + 資料庫」的結合 它不是單純表格,而是: 可以點圖表 篩選資料 即時改變統計 多人同時看同一份報表 公司常用在: 半導體良率分析 銷售儀表板 工廠監控 客戶報表 三、什麼是 Bookmark?(最重要的觀念) 白話解釋 Bookmark 就像: 「把報表某個狀態拍一張快照存起來」 例如: 你在報表裡選了: 地區:台灣 產品:A系列 時間:本月 圖表縮放:失敗率 你按「儲存狀態」 → 這個狀態就變成 Bookmark。 之後別人只要點一下: 報表會瞬間回到你當時看的畫面。 也就是: Bookmark = 報表的預設觀看畫面 四、什麼是 Conversation? 這個更像「報表內建留言板」。 例如: 工程師在某個異常點旁邊留言: 這批良率異常,已確認為設備校正問題 主管或客戶打開報表時可以直接看到。 所以: 功能 像什麼 Bookmark 報表快照 Conversation 報表留言 五、為什麼儲存時會問你? 當你把報表存進公司「共用報表庫」時,其實你做的是: 覆蓋一個已經存在的報表 而那個舊報表裡,可能已經有: 使用者存的畫面 客戶的註解 主管的檢討紀錄 Spotfire 不敢直接刪掉, 所以才會問你: 這些人的紀錄,你確定要不要留下? 六、Yes 與 No 的真正差別 按 Yes(保留) 系統會: 保留所有 Bookmark 保留所有留言 新報表內容覆蓋舊報表...

🧾SQL 資料補值與跨表比對教學:用「同一筆主鍵」把錯誤欄位修正(新手也能懂)

你是不是也遇過這種情況: 資料表裡某個欄位的值「看起來怪怪的」,例如出現特殊符號、固定字母代碼、或明顯不是正常值;但你又知道「同一筆資料」在別的紀錄或別張表裡其實有正確值。這篇文章會用最白話的方式,帶你理解: 什麼是「用另一筆資料的欄位來補值」 為什麼你原本的查詢會「查不到(印出為空)」 如何用 SQL 寫出「只取第一筆」的補值規則 如何安全地把 SELECT 改成 UPDATE 如何比對兩張表中「同一個主鍵」的資料是否一致 一、問題場景:資料欄位出現「非正常值」,需要用參考資料補回來 假設你有一張「測試記錄表」 TestRecord ,裡面有一個欄位 CodeTag (類似日期碼 / 批號碼 / 分類碼)。 但某些資料的 CodeTag 會出現異常值,例如包含特殊符號或固定字樣(這通常代表上游流程寫入失敗或 placeholder 值)。 你希望做到: 如果 CodeTag 是異常值 → 用同一批資料下「其他站點/其他流程」的正常 CodeTag 來取代 如果能取代的資料有多筆 → 只拿「第一筆」作為參考(避免多筆造成更新不確定性) 二、為什麼你查詢會「印出為空」?新手最容易踩到的坑 很多人一開始會把條件寫得很精準,例如同時要求: 批號相同(例如 BatchNo ) 檔名相同(例如 FileName ) 且不是同一種站點(例如 Station <> 'X' ) 看起來合理,但實務上常常是: 同一批資料在不同站點產生的檔名不會一樣 。 所以你加上「檔名必須一樣」後,參考資料根本配不到,結果就會: SELECT 查不到 → 顯示空 ...