潤乾集算報表除支援傳統關係型資料庫,還原生支援 TXT、Excel、JSON、HTTP、Hadoop、MongoDB 等多樣性數據源。本文通過「股票交易記錄查詢」案例,演示小/大文本文件的不同處理策略。
需求:按月存儲股票數據(如 stock_record_200901.txt),單文件較小,可一次性載入內存。查詢指定日期、股票代碼的收盤價。
date、codeA1 = file("stock_record_" + string(date, "yyyyMM") + ".txt").import@t() // 全量導入A2 = A1.select(tradingDate == date && code == code) // 過濾A3 = A2 // 返回結果集

date、codep1.dfx

若腳本無復用需求,可直接在報表內使用「腳本數據集」,語法一致,減少維護兩個檔案的成本。

需求升級:查詢跨月份的多文件數據,總量超過內存,需採用外存計算。
A1:根據日期範圍生成月份列表,確定涉及文件A2 = A1.conj@x( file(...).cursor@t() ):建立多文件游標並合併(@x 合併游標,不讀數據)A3 = A2.select(...):游標上過濾,仍返回游標A4 = A3.fetch():取數返回報表

| 維度 | 小文件(import) | 大文件(cursor) |
|---|---|---|
| 記憶體佔用 | 全量載入 | 僅引用,流式讀取 |
| 適用場景 | 單文件 < 內存 | 多文件、超大文件 |
| 性能特點 | 極快,適合即時查詢 | 避免 OOM,支援無限大數據 |
潤乾報表內外存雙模式,靈活應對各類文本數據源報表需求。