🐬Spotfire Automation Services 教學:為什麼排程「找不到 D 槽 DXP」?以及如何正確把報表放進 Automation 執行
前言:你以為是「程式碼問題」,其實是「系統位置」問題
很多人第一次做 Spotfire 報表排程會遇到這種情況:
-
手動在電腦開 DXP 一切正常
-
但放到 Automation Services 後,報表不跑、檔案不輸出
-
明明 DXP 路徑就在:
-
D:\...\xxx.dxp
卻一直開不到
-
對新手來說很困惑:
「我檔案明明在那裡啊,為什麼 Automation 找不到?」
工程師的答案其實很簡單:
Automation Services 是在 伺服器(Server)上跑,它看不到你的電腦 D 槽。
核心觀念:Automation Services 跑在 Server,不跑在你電腦
用最白話的比喻
你在家裡電腦桌面有一份檔案,
但你叫公司機房裡的一台伺服器去開「你家桌面的檔案」——當然開不到。
同理:
-
你看到的
D:\xxx.dxp是你「本機」的 D 槽 -
Automation Services 看的世界是「伺服器」
-
兩者不在同一台機器
所以「正確方式」只有兩種:
-
把 DXP 放到 Spotfire Library(最標準)
-
或放到 Server 看的到的 UNC 網路共享路徑(視公司規範)
為什麼你在 Tools 找不到 Register Script?(Spotfire 11 常見)
很多人會照教學找:
-
Tools → Register Script
-
或 Add-ins / Extensions
結果發現完全沒有這些選項,甚至 Options 裡也找不到 Add-ins。
這通常不是你操作錯,而是企業環境常見的「功能控管」:
-
公司可能在 Spotfire 11 停用/移除 IronPython Scripting 功能
-
或用 Feature Control 限制 Script 編輯
-
導致你可以 Editing、可以加計算欄位
但就是看不到 Register Script
對新手的結論
如果你的環境沒有 Script 功能,你仍然能做 Automation 排程,但功能會受限(通常只能匯出整份報表 PDF/圖片等)。
正確做法:把 DXP 放到 Library,再用 Job Builder 建 Task 流程
Step 1:把 DXP 存到 Spotfire Library
在 Spotfire Analyst 中:
-
開啟你的報表(DXP)
-
File → Save As → Library -
存到一個共用或你有權限的資料夾,例如:
-
/Shared/Reports/
-
-
保存完成後,你的報表就變成「伺服器也看得到的檔案」
✅ 這一步完成,Automation 才有機會開啟 DXP。
Step 2:在 Automation Services Job Builder 建排程任務
在 Job Builder 中,你會看到「任務清單是空的」的畫面。
新手最容易卡在這裡:以為開了 Job Builder 就能跑。
其實你必須「加 Tasks」,Automation 才知道要做什麼。
一個最小可跑的 Job(標準模板)
通常會包含 4 個步驟:
-
Open Analysis:打開 DXP(從 Library)
-
Set Document Properties:設定參數(日期、條件、輸出路徑…)
-
Export:匯出 PDF/圖片/Excel
-
Close Analysis:關閉報表
Step 3:什麼是 Document Properties?為什麼要設它?
如果你報表內有:
-
起訖日期
-
篩選條件
-
變數控制顯示內容
-
匯出檔名/輸出資料夾
工程師通常會把這些做成「Document Properties」,
然後 Automation 在跑 Job 時,先把這些參數填好,再匯出。
範例:在 Job 裡設定參數
-
P_START_DATE = 2025-01-01 -
P_END_DATE = 2025-02-01 -
P_OUTPUT_ROOT = \\fileserver\share\reports
重要提醒:輸出路徑不要用 C:\ 或 D:\
Automation 在 Server 上跑,所以:
-
C:\report\...是 Server 的 C 槽 -
D:\report\...是 Server 的 D 槽
不一定存在,也常沒有寫入權限。
最穩的是用公司檔案伺服器的 UNC 路徑:
-
\\fileserver\share\report-output\...
並確保 Spotfire Server 的服務帳號有寫入權限。
什麼情況一定需要 Script?(例如拆多個 CSV)
如果你的需求是:
-
依某個欄位(例如 Device / Lot)拆成多個檔案
-
動態組 SQL
-
逐筆迴圈匯出
這些通常超過 Automation 的內建能力,會需要 Script 來做迴圈與資料處理。
示意程式碼:迴圈匯出多檔(僅概念)
# 示意:從資料表取出分類清單,再逐一匯出成多個檔案
categories = get_unique_values("DATA_TABLE", "CATEGORY_COL")
for c in categories:
filtered_rows = select_rows("DATA_TABLE", "CATEGORY_COL", c)
export_csv(filtered_rows, r"\\server\share\output\{}.csv".format(safe_name(c)))
常見錯誤總整理(新手最常踩的坑)
1) 用本機路徑開 DXP
❌ D:\...\report.dxp
✅ 應改存到 Library:/Shared/.../report.dxp
2) 輸出到本機 C:\ 或 D:\
❌ C:\export\...
✅ 改用 UNC:\\fileserver\share\...
3) 以為 Job Builder 開了就會跑
❌ 沒加 Tasks
✅ 必須 Open → Set Properties → Export → Close
4) 找不到 Register Script
✅ 多半是企業環境停用 scripting
✅ 可以先用「不含 script 的 export 排程」跑起來
✅ 需要拆檔再請管理員/同事協助開功能
結語:Spotfire 排程的關鍵不是程式,而是「跑在哪裡」
Spotfire 的 Automation Services 常被誤會成「在你電腦幫你點報表」。
但工程師的理解是:
它是一個「伺服器端的自動化機器人」
它只能看到 Server 能看到的檔案、資料與路徑。
所以只要你掌握三個原則:
-
DXP 放 Library
-
輸出走 UNC
-
Job 用 Tasks 串起來
你就能把報表排程跑得又穩又可維護。
留言
張貼留言