首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

報表開發實戰:集算報表讀取 JSON 與 HTTP 數據源全流程(含層次結構)

     編輯:DB2 教學

報表開發實戰:集算報表讀取 JSON 與 HTTP 數據源全流程(含層次結構)

JSON 作為輕量級數據交換格式,廣泛用於 API 響應、配置文件、日志存儲。集算報表 (RaqReport) 通過內置集算器腳本 (SPL) 原生支持 JSON 文件讀取、解析、計算,並無縫對接 HTTP 數據源。本文通過兩個完整案例:學生成績排名 (平坦 JSON) 和 訂單-明細主從報表 (層次 JSON),演示腳本開發、數據集配置、報表模板設計全流程。

一、案例 1:平坦 JSON 數據源 - 學生成績排名

1. 數據樣本 (score.json)

[
  {"class":"Class One","id":1,"name":"Emily","subject":"English","score":84},
  {"class":"Class One","id":1,"name":"Emily","subject":"Math","score":77},
  ...
  {"class":"Class One","id":7,"name":"Nicholas","subject":"PE","score":60}
]

2. 集算器腳本 (p1.dfx)

A1 = json(file("score.json").read()).import@j()  // 讀取並解析為序表
A2 = A1.groups(id; name, class, sum(score):total) // 按學生 ID 分組求總分
A3 = A2.sort(-total)                              // 總分降序
A4 = A3.new(class, name, total)                   // 選取輸出字段
return A4

關鍵函數:json() 解析、import@j() 轉序表、groups() 分組聚合、sort() 排序、new() 投影。

3. 報表模板設計

  • 數據集類型:**集算器**,調用 p1.dfx (路徑相對於配置的 dfx 主目錄)。
  • 表達式直接引用返回字段:{class}, {name}, {total}。
  • 設置分組/排序/頁眉頁腳,生成專業排名報表。

報表樣式 數據集配置 表達式編輯

4. 腳本數據集替代方案

若腳本不復用,可直接在報表中使用 **腳本數據集**,分步編寫 SPL,語法一致,可直接引用報表參數/數據源,減少文件維護。

腳本數據集

二、案例 2:層次 JSON 數據源 - 訂單主從報表

1. 數據樣本 (orders.json)

[
  {"OrderID":"10248","OrderDetails":[{"OrderID":"10248","ProductID":"5","UnitPrice":12,"Discount":0,"Quantity":1}],
   "CustomerID":"VINET","ShippedDate":"2000-07-16","RequiredDate":"1996-08-01","Freight":32.38},
  {"OrderID":"10325","OrderDetails":[{"OrderID":"10325","ProductID":"31","UnitPrice":10,"Discount":0,"Quantity":4},
                                     {"OrderID":"10325","ProductID":"72","UnitPrice":27.8,"Discount":0,"Quantity":40}],
   "CustomerID":"KOENE","ShippedDate":"1996-10-14","RequiredDate":"1996-10-23","Freight":64.86}
  ...
]

特點:頂層數組元素為訂單對象,包含嵌套數組 OrderDetails 明細。

2. 集算器腳本 (p2.dfx)

A1 = json(file("orders.json").read()).import@j()  // 直接解析為層次序表
return A1

神奇之處:集算器自動識別嵌套結構,生成**層次數據集** (父子行集),報表原生支持層次數據集的主從帶表展示。

3. 報表模板設計

  • 數據集調用 p2.dfx,識別為層次數據集。
  • 主表帶:綁定訂單字段 (OrderID, CustomerID, Freight...)。
  • 從表帶:綁定明細字段 (ProductID, UnitPrice, Quantity...),設置 Detail 屬性關聯父帶。
    主從報表樣式 層次數據集 帶表綁定

三、擴展:HTTP 遠程 JSON 數據源

若 JSON 來自 HTTP API (如 Servlet、REST 端點),腳本只需修改第一行:

A1 = json(httpfile("https://192.168.1.101:6001/demo/Servlet?action=4&name=report1", "GBK").read()).import@j()

httpfile() 支持任意 HTTP 端點,返回文本/JSON/XML/CSV/Excel 均可後續處理。參數化 URL 可實現動態查詢。

HTTP 文件讀取

四、總結

集算報表通過 **SPL 腳本 + 原生 JSON/HTTP 支持 + 層次數據集**,將「數據獲取 → 解析 → 計算 → 展示」鏈路極大簡化:

  • 無需中間 ETL 表、無需自定義代碼解析 JSON。
  • 層次 JSON 直接映射主從報表,零代碼處理嵌套結構。
  • 腳本可視化調試、可復用、可參數化,支撐敏捷報表開發。

這體現了現代報表工具**多源異構數據集成**的核心價值:以計算引擎統一異構數據訪問,讓報表開發聚焦於業務邏輯與呈現。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved