🖥️讓完全不懂程式的人也聽得懂:Spotfire IronPython 資料處理流程完整解析

 

前言:為什麼需要 Spotfire IronPython?

在企業日常資料分析中,常常需要:

  • 合併不同資料表

  • 依條件更新資料

  • 做統計運算(平均、標準差、分組)

  • 自動產生報表

如果靠人工操作,不但慢、容易出錯,也無法每天固定自動執行。

TIBCO Spotfire 中,我們能利用 IronPython 寫腳本讓這些流程全自動化。

但對不熟悉程式的讀者來說,「一大串程式碼到底在做什麼?」
這篇文章將用 軟體工程師講給完全不了解程式的人聽的方式,帶你看懂這類程式碼。


一、Spotfire IronPython 程式到底長什麼樣?

下面是一段已完全「匿名化」與「安全改寫」的程式碼示例(不含任何私密資料):

from Spotfire.Dxp.Data import DataValueCursor, DataFlowBuilder from Spotfire.Dxp.Data.Transformations import PivotTransformation from Spotfire.Dxp.Application.Visuals import Visualization # 找頁面 def get_page(title): for p in Document.Pages: if p.Title.upper().startswith(title.upper()): return p raise Exception("找不到指定頁面") # 找圖表 def get_visual(page, title): for v in page.Visuals: if v.Title.upper().startswith(title.upper()): return v.As[Visualization]() raise Exception("找不到視覺物件") # 取得欄位的所有唯一值 def get_unique_values(table_name, column_name): tbl = Document.Data.Tables[table_name] cursor = DataValueCursor.Create(tbl.Columns[column_name]) values = set() for row in tbl.GetRows(cursor): values.add(cursor.CurrentValue) return list(values) print("程式啟動")

這段程式碼是「經過大幅改寫的示例」,與你實際使用的完全不同,但邏輯相似,足夠用來教學。


二、用「白話文」帶你看懂每個功能

下面我會用「工程師講給完全不懂電腦的人」方式解釋。


1. 為什麼要 import(匯入)這些東西?

from Spotfire.Dxp.Data import DataValueCursor, DataFlowBuilder

這像是「把工具箱準備好」。

  • DataValueCursor:拿來逐列讀資料

  • DataFlowBuilder:讓 Spotfire 做資料轉換(像 Excel PowerQuery)

就像你做 DIY,需要先把螺絲起子、切割刀拿出來。


2. 定義 get_page:幫你找到某一頁

def get_page(title): for p in Document.Pages: if p.Title.upper().startswith(title.upper()): return p

這就像說:「在文件所有的頁面中,找到標題有某個字眼的那一頁」。

例如:

  • 你說「找『銷售』頁面」

  • Spotfire 就在所有頁面裡找標題開頭是「銷售」的那一頁


3. 定義 get_visual:找到圖表或表格

def get_visual(page, title): for v in page.Visuals: if v.Title.upper().startswith(title.upper()): return v.As[Visualization]()

這動作就像:

  • 進到某一頁

  • 找出名字開頭符合的圖表

就像你說:

「在銷售分析頁找出那個名叫“地區分析”的圖表」



4. get_unique_values:取得欄位中的「不重複值」

def get_unique_values(table_name, column_name): tbl = Document.Data.Tables[table_name] cursor = DataValueCursor.Create(tbl.Columns[column_name]) values = set() for row in tbl.GetRows(cursor): values.add(cursor.CurrentValue) return list(values)

例如資料表「訂單」有欄位「城市」,內容可能是:

台北 新竹 台北 台南 台北

這個函式會取出:

["台北", "新竹", "台南"]

也就是「不重複的城市清單」。


三、Spotfire IronPython 常見用途(白話說明)

1. 自動更新資料來源

許多資料來自資料庫,你不希望每次開檔案都重新按「重新整理」。

程式能幫你:

  • 自動連線

  • 自動更新欄位

  • 自動替換資料


2. 自動合併表格

像 Excel VLOOKUP / XLOOKUP 一樣,但由程式自動完成。

例如:

  • A 表有「產品編號、品名」

  • B 表有「產品編號、銷量」

你能讓程式:「依產品編號把 B 表的資料補到 A 表」。


3. 自動做統計(平均、標準差…)

像:

  • 平均值

  • 中位數

  • 標準差

  • 四分位數

  • 總和

  • 計數

全部都能以程式運算,並寫回 Spotfire 資料表。


4. 自動更新 UI(圖表欄位、欄位順序)

例如:

  • 自動調整表格欄位順序

  • 自動加入新的統計欄位

  • 自動清除舊欄位

這讓你的分析頁永遠保持最新狀態。


四、把整段程式用一句話解釋

它讓 Spotfire 自動做資料整理、欄位合併、篩選、統計計算,並更新報表,不需要人手動操作。



五、總結:即使你完全不會寫程式,也能看懂 Spotfire 機制

你不需要懂 Python,也不需要懂資料庫,只要知道:

  • Spotfire IronPython 就像「讓分析流程全自動化的小助手」

  • 它能讀資料、整理資料、做統計、更新圖表

  • 讓你的報表每天都能自動更新與計算

留言

這個網誌中的熱門文章

🔍Vue.js 專案錯誤排查:解決 numericFields is not defined 與合併儲存格邏輯最佳化

🔎EF Core 連 Oracle 出現 ORA-00600 [kpp_concatq:2] 的完整排錯指南(含 EF Core ToString/CultureInfo 錯誤)

🛠【ASP.NET Core + Oracle】解決 ORA-00904 "FALSE": 無效的 ID 錯誤與資料欄位動態插入顯示問題