🐬Spotfire Automation Services 匯出報表卻出現舊年份資料?用「快取/未刷新」思維一次查清楚(含可套用範例)
前言:明明今天資料庫沒資料,為什麼匯出還是 2022? 你可能遇過這種情境: 今天日期是 2026/01/15 你用排程(Automation Services)跑 Spotfire Script 匯出 CSV / PDF 你確定資料庫在這段期間 沒有任何資料 但匯出的檔案打開一看,竟然還有 2022 年 的內容 第一直覺通常會想:「是不是 SQL 日期條件寫錯?」 但實務上更常見的真相其實是: Spotfire 沒有真的重新查資料庫,而是沿用資料表(Data Table)裡的舊資料(快取/Stored Data)。 本文會用「完全不懂 Spotfire / SQL 的人也聽得懂」的方式,帶你一步一步定位原因,並提供可直接套用的修法。 一、先建立正確觀念:Spotfire 匯出時匯的是「畫面上的資料」 很多人以為「匯出 CSV」等於「直接把 SQL 撈出來寫成檔案」,但 Spotfire 常見流程是: Script 先嘗試把某個資料表(Data Table)改成新的 SQL Spotfire 可能 不會立刻重查資料庫 (尤其是 Stored Data、Cache、排程環境) 你的視覺化(TablePlot)仍顯示舊資料 Export 指令把「視覺化目前呈現的資料」輸出成 CSV 所以: ✅ 只要資料表沒刷新,匯出就會是舊資料 即使資料庫早就空了也一樣。 二、怎麼判斷是不是「沒刷新」而不是「SQL 撈錯」? 最有效的方法是做三個檢查,全部都可以放在腳本裡印 log。 檢查 1:把日期區間印出來(避免日期格式錯誤) 很多腳本會手動拼字串日期,最常犯的錯是少了 - 或沒補零,導致日期變成像 2026-115 這種「看起來像日期但其實不標準」的格式。 ✅ 建議做法:一定印出 start/end,並用固定格式 YYYY-MM-DD 。 # 假設你要抓近 7 天(含今天) from datetime import datetime, timedelta today = datetime.today() start_dt = today - timedelta(days...