🐬【教學】Spotfire 執行按鈕報錯「The name is already used」完整排查與修復指南(含腳本示例)
摘要
本文以淺顯方式說明:在 TIBCO Spotfire 點擊自訂按鈕(例如 Run Rpt)後,出現錯誤
Could not execute script 'runrpt': The name 'FT_YIELD_RPT' is not a valid table name since the name is already used.該如何快速定位問題與修復。文內提供三種安全做法(取代資料、先刪後建、自動避開撞名),並補充「資料來源帳密要求」常見排查清單,幫你從零搞懂發生原因與處理邏輯。
你遇到的狀況(白話版)
-
開啟 DXP 後按下 Text Area 的按鈕(例如:Run Rpt)。
-
Spotfire 執行內嵌腳本(通常是 IronPython 或 Data Function)去產生/更新一張報表資料表。
-
第一次可能成功,但第二次就跳錯:「這個表名已被使用」。
-
另外,有時開檔會跳出「請輸入資料來源帳密」的視窗,帳密看起來正確卻連不上。
為何會報「name already used」?
在 Spotfire 裡,每張資料表
名稱不可重複。
如果腳本每次都用
CreateDataTable("FT_YIELD_RPT", ...)
或資料函數輸出固定表名,就會在文件已存在同名表時失敗。
一句話:你正在「再建立一次同名表」,所以撞名。
三種修法(依建議順序)
A. 推薦:保留視覺與欄位設定,改用「取代資料」
重點: 不要重建表,改為 ReplaceData,讓同名表「原位換資料」。
(示例:改良後的 IronPython 範例,已匿名化)
優點
-
保留視覺化設定、計算欄位、標籤、篩選、關聯。
-
執行速度與使用者體驗佳。
B. 簡單粗暴:先刪同名,再新建
如果這張表只給該報表用、刪除不會影響其它圖表,就可直接移除再新建。
注意
-
可能需要重接關聯或重設視覺標籤(視你的 DXP 設計而定)。
C. 需要歷史快照?自動避開撞名(加尾碼)
如果你的需求是「每次產生一張新快照表」,那就不要固定表名,自動加數字尾碼。
如果是 Data Function(R / TERR / Python)產生的表
-
開啟 Edit ▸ Data Function Properties…
-
在 Output Parameters 把輸出表設定為:Replace existing(或是把輸出表名改為不重複)。
-
確定資料函數每次執行不會硬要「新增同名表」。
兩段快速自我檢查腳本
1) 目前文件有哪些資料表?
2) 按鈕綁的腳本在哪?
-
右鍵 Text Area → Edit HTML → Edit Script…
-
找到
runrpt或相關腳本,檢查是否有CreateDataTable("FT_YIELD_RPT", ...)或資料函數輸出的表名剛好一樣。
額外加碼:開檔時一直跳「請輸入資料來源帳密」怎麼辦?
這通常不是「登入 Spotfire」出錯,而是 DXP 裡的資料來源連線需要認證或連不到。以下是手順級檢查清單:
-
找出連的是誰
Data ▸ Data Table Properties ▸ 選表 ▸ Source/Settings → 確認連線類型(SQL/Oracle/ODBC/檔案)、Server、Database、認證方式。 -
帳號格式
-
Windows/AD:試
DOMAIN\user或user@domain。 -
純資料庫帳號:只填帳號,不加網域。
-
-
同機測試連線
-
SQL Server:
sqlcmd -S <server>,<port> -U <user> -P <password> -Q "SELECT 1" -
Oracle:
tnsping <TNS>→sqlplus <user>/<password>@<TNS>
-
-
認證方式吻合
-
連線設定若從「Windows/SSO」換成「Database/SQL Authentication」,原本能用的 AD 帳號會失效(反之亦然)。
-
於連線頁按 Test Connection。
-
-
驅動/位元數正確
-
Spotfire 64-bit → 驅動與 DSN 需 64-bit。
-
Oracle 要有對應版本 Client,
TNS_ADMIN指向正確tnsnames.ora。
-
-
網路/VPN/防火牆
-
ping <server>、Test-NetConnection <server> -Port <port>檢查可達性。
-
-
帳號鎖定/密碼過期
-
請 DBA 查登入日誌,排除被鎖或密碼過期。
-
-
Information Link 認證策略
-
Tools ▸ Information Designer → 該 Data Source 是否被設為 Prompt user;如能用 SSO/Trusted,改成不跳視窗。
-
常見問答(FAQ)
Q1:我想保留所有儀表板格式與計算欄,哪個做法最好?
A:ReplaceData。它只換資料,不動視覺設定。
Q2:我想「每次」產生一份報表快照怎麼辦?
A:用「自動加尾碼」避開撞名,並把快照日期或批次號塞進尾碼,方便管理。
Q3:按下按鈕就跳要帳密視窗,能不能別每次都輸入?
A:可在資料連線裡設定
Save password(注意公司資安政策)或採用
SSO/Trusted
方式;若是排程,建議在伺服器端用固定服務帳號執行。
結語
這個錯誤的本質其實很單純:同名表被重建。
把「新增」改為「取代」,或在確定不影響的情況下「先刪再建」,就能優雅地解決。再搭配上方的資料來源連線檢查清單,你的
Spotfire 報表按鈕就能穩定跑起來。
下載小抄(Check List)
-
用腳本列出目前所有資料表名稱
-
檢查
runrpt是否使用CreateDataTable固定表名 -
優先改為 ReplaceData
-
如需快照 → 自動加尾碼
-
Data Function 輸出設為 Replace existing
-
連線帳密/認證方式/驅動/網路逐項測試
留言
張貼留言