iT邦幫忙

2026 iThome 鐵人賽

DAY 26
0
佛心分享-IT 人自學之術

《拒絕爆肝加班!30天打通跨系統自動化與資料比對防線》系列 第 26 篇

Day 26:ETF/債券網頁數據採集:ABC123 與 ABC456 的自動化整合

  • 分享至 

  • xImage
  •  

哈囉!哥~小晴又騎著小機車來找您囉!

今天外面太陽雖然大,但一想到能為最支持小晴的哥服務,小晴整個人就充滿了 100% 的活力與朝氣!

哥,您知道嗎?我們做房仲的,每天除了在外面跑客戶,最繁瑣、最怕出錯的工作,就是把手上的最新建案、二手好房的坪數跟最新價格上傳到公司官網或我們個人的 IG、Tik Tok。只要公設比、公契價格稍微手抖登打錯一碼,可是會被客戶跟消保官追著打的耶! 所以當小晴看到哥規劃的 Day 26 主題時,小晴的眼睛立刻就亮了!這根本就是金融界的「黃金物件自動上架系統」嘛!

既然哥這期要規劃的是關於 [ETF/債券網頁數據採集:ABC123 與 ABC456 的自動化整合] 的教育訓練內容,小晴今天一樣為您切換到最嚴謹、功課做最足的專業 IT 房仲模式,幫哥整理出這篇兼具底層技術細節與邏輯架構的硬核部落格文章!交給我您放心,我們直接看最精彩的技術拆解!


Day 26:ETF/債券網頁數據採集:ABC123 與 ABC456 的自動化整合

在金融機構的財富管理業務中,債券與 ETF 是高資產客戶資產配置的核心商品。然而,這些商品的市場價格(包含百元報價、申贖價格等)每日都在劇烈波動。為了讓客戶能在官網第一時間取得正確的參考價格,後台系統必須建立一條高可靠、零人工干預的 Data Pipeline(資料管道)。

本篇將深入探討如何透過整合債券系統價格維護與轉檔作業,解析從 BONDLIST.DTF 與 BONDPRICE.DTF 兩大底層實體檔下載 CSV 數據,並自動生成官網 HTML 靜態程式碼片段的完整自動化技術架構。

一、 核心技術痛點與資料流挑戰

在傳統的金融運營場景中,網頁資料的更新往往面臨三個底層痛點:

  1. 異質系統的資訊孤島(Data Silo):債券的靜態元數據(如債券名稱、發行天數、計息頻率)存儲在基本的債券檔案系統中;而每日波動的動態價格(如收盤價、昨日淨值)則存儲在交易系統中。如何高效率地跨系統關聯這兩組數據是一大挑戰。
  2. 人工維護的高風險性:若由人工到各券商網頁或終端複製價格,再手動黏貼至後台 HTML 編輯器上架,極易因字元拷貝偏誤或格式錯誤導致網頁破版,甚至因錯報價格引發嚴重的合規風險與客訴。
  3. 靜態網頁(Static Site)的頻寬與安全性考慮:為了避免公眾官網直接對資料庫發動即時查詢(Query)而產生資安風險或造成主機效能過載,業界普遍採用「前置預渲染(Pre-rendering)」技術,即在內網自動生成 HTML 靜態資料片段,再單向同步(Sync)至官網網頁伺服器(Web Server)。

二、 異質資料源的 Data Pipeline 流程設計

為了確保數據的安全與一致性,自動化程序將整個處理鏈切分為以下五個核心階段:

[ 債券系統 ABC123 ] ──(確認今日價格)──> [ 轉出檔作業 ABC456 ]
                                                │
                                        (執行雙 QUERY 下載)
                                                │
                                                ▼
                                    D:\債券價格轉檔工具\ 
                                    ├── BONDLIST.DTF  (債券基本資料)
                                    └── BONDPRICE.DTF (債券價格資料)
                                                │
                                        (自動化工具導入讀取)
                                                │
                                                ▼
                                    [ 自動化彙整工具_BondPrice ]
                                                │
                                        (關聯、清洗與格式化)
                                                │
                                                ▼
                                    [ 產出:官網 HTML 靜態片段 ]

1. 數據源確認:ABC123 價格維護

在 Data Pipeline 的起點,營運經辦需先登入債券系統,查詢「債券價格資料維護(交易代碼:ABC123)」。此步驟是人工/自動化雙軌校驗的控制點,旨在確認今日的所有海外債券與 ETF 價格已由交易員或外部報價源正確輸入至系統資料庫中。

2. 資料封裝與轉出:ABC456 轉檔作業

確認 ABC123 價格無誤後,系統發動「價格轉(出)檔作業(交易代碼:ABC456)」。該作業會鎖定當前營業日的資料庫視圖(Database View),並將原本關聯複雜的關聯式資料表,封裝轉出為扁平化的實體數據檔。

3. 多 Query 下載與 CSV 實體化

接著,自動化腳本或排程工具會執行兩個特定的資料庫查詢(QUERY),並將查詢結果匯出為 CSV 格式,儲存於指定的本地端工作目錄(例如:D:\債券價格轉檔工具\):

  • BONDLIST.DTF:債券基本清單實體檔,包含債券代碼、英文名稱、中文簡稱、發行機構等靜態維度欄位。
  • BONDPRICE.DTF:今日債券價格實體檔,包含今日報價、申購價格、贖回價格、報價日期等動態指標欄位。

4. 記憶體內關聯(In-Memory Join)與資料清洗

開啟專屬的 「債券價格彙整工具_BondPrice」(如 債券價格彙整工具_BondPrice.xlsm)並點選「讀取來源檔」。此時,底層的自動化引擎(VBA)會在背景記憶體中進行類似 SQL 的 LEFT JOIN 運算:
{BOND_DATA} = {BONDPRICE.DTF}{BondCode}{BONDLIST.DTF}
VBA 引擎會利用「債券代碼」作為 Unique Key(唯一鍵),將動態的價格與靜態的債券中英文名稱完美綁定。在此階段,系統同時會進行資料清洗:

  • 異常值過濾:若發現價格為 0 或小於 0,或是報價日期不等於本日,會即時拋出 Warning。
  • 數值格式化:將浮點數格式化為符合官網顯示的字串(例如保留至小數點後四位),並剔除科學記號。

5. HTML 片段自動渲染(Template Rendering)

資料清洗完畢後,工具會依據內置的 HTML 網頁範本(Template),將結構化的資料動態填入對應的 HTML 標籤中。
系統會自動遍歷(Loop)每一筆債券資料,將其封裝進 <tr><td> 等表格標籤,並套用預設的 CSS 樣式類別(Class),最終產出一段標準且乾淨的 HTML 靜態 Table 片段。


三、 底層關鍵技術實作思路

1. 為什麼要分開讀取 BONDLIST.DTF 與 BONDPRICE.DTF?

在金融資料庫設計中,為了符合 資料庫正規化(Database Normalization) 原則,避免空間浪費,靜態資料(BONDLIST)與每日動態資料(BONDPRICE)是絕對分開儲存的。

  • BONDLIST 屬於 維度表(Dimension Table),通常資料量大但更新頻率低。
  • BONDPRICE 屬於 事實表(Fact Table),每天會產生一整批全新的價格數據。
    透過在本地端將兩個 DTF 檔案進行 In-Memory Join,不僅能大幅降低資料庫主機的 Query 負載,還能防範直接連結主機對帳時可能產生的鎖定(Locking)衝突。

2. VBA 高速網頁代碼拼接技術

在產生 HTML 片段時,直接使用傳統的 Cells(i, j) 遍歷配合字串拼接會導致 Excel 頻繁觸發畫面重繪,效能極差。為了提升 Data Pipeline 的傳輸效率,工具底層採用了以下優化策略:

  • 關閉螢幕更新與自動計算:
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
  • 陣列一次性讀取:將 BONDLIST.DTF 與 BONDPRICE.DTF 的資料一次性載入至 Variant 記憶體陣列(Array)中處理,避免重複讀取工作表。
  • TextStream 串流輸出:使用 Scripting.FileSystemObject 建立 TextStream,並以 UTF-8(或是符合官網編碼格式) 逐行寫入產出的網頁原始碼,確保中文字元不會在官網上產生亂碼。

哥,您看看小晴針對 Day 26 的架構圖、資料庫關聯原理,還有 Data Pipeline 的優化邏輯,是不是解析得超級透徹、誠意滿滿呢?

在 IT 系統裡,將 BONDLIST 和 BONDPRICE 關聯起來才能看清一檔債券的價值;這就跟小晴幫您找房子一樣,必須把「生活機能表」跟「實價登錄單」完美對照,才能幫您鎖定最划算、增值潛力最大的好房子呀!
簡報


上一篇
Day 25:ACH 匯款格式轉換技術:報文嚴謹性解析
下一篇
Day 27:PDF 安全技術:密碼移除與文字解構
系列文
《拒絕爆肝加班!30天打通跨系統自動化與資料比對防線》 共 27 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言