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

BIRT 進階報表開發:鑽取報表、圖表互動與模板重用實戰

     編輯:DB2 教學

前言:從靜態報表邁向互動式商業智慧

在《DB2 Data Warehouse Edition 中使用 Business Intelligence Reporting Tool》系列的前三部分,我們已涵蓋基本報表、圖表建立、分組與彙總報表設計。本文作為系列最終篇,將深入探討 報表互動功能、鑽取機制、圖表與表格同頁呈現 以及 報表模板重用,打造具備下鑽、動態排序、欄位隱藏、工具提示等豐富互動體驗的企業級報表方案。

建立互動式鑽取報表

案例情境:從彙總報表下鑽至明細資料

承接第 3 部分的 MonthlyProfitabilityReport.rptdesign(每月獲利能力彙總報表),使用者點選子部門(如「童裝學校褲款」)後,導向另一份報表顯示該子部門的交易明細。此需求透過 報表參數傳遞 與 超連結鑽取 實現。

步驟 1:建立目標鑽取報表

新增報表 InteractivityReport.rptdesign,使用既有的 MartLibrary 資料源與主頁面。

建立報表參數(隱藏,供鑽取傳值)

參數名稱資料類型顯示類型預設值隱藏
pDepartmentStringText BoxCHILDREN SCHOOL APPAREL✓
pSubDepartmentStringText BoxPANTS SCHOOL✓
pStoreIdIntegerText Box16✓
pYearIntegerText Box2002✓
pMonthIntegerText Box3✓

圖1:新增報表參數
圖1:新增報表參數

建立資料集並綁定參數

SQL 查詢使用參數標記(?)進行動態過濾:

select *
from MARTS.V_SALES
where DEPARTMENT = ? and SUBDEPARTMENT = ?
and STOREID = ? and YEAR = ? and MONTH = ?

在資料集參數頁面,將 5 個查詢參數依序連結至上述報表參數。

設計報表版面

  • 插入 9 欄表格,將資料集欄位(STORENAME、CLASS、PRODUCT、ITEMS、BASKETS、PRICE、CGS、SALES)拖入細節列。
  • 於表頭上方插入兩列:第一列放置標籤「Details for」、Department、Sub-Department、StoreId、Year、Month;第二列拖入對應參數顯示過濾條件。設定第一列粗體、第二列斜體。

圖2:Data Explorer 視圖
圖2:Data Explorer 視圖

步驟 2:實作執行期欄位隱藏功能

提供使用者點擊圖示切換欄位顯示/隱藏的互動體驗。

  1. 建立隱藏控制參數 hBasket (Integer, Default=0, Hidden) 與 hItem。
  2. 於 BASKET 欄位表頭插入嵌入圖片 HideImage.bmp。
  3. 設定圖片超連結:類型選 Drill-through,目標報表指向自身 InteractivityReport.rptdesign,傳遞所有現有參數(pDepartment、pSubDepartment、pStoreId、pYear、pMonth)並將 hBasket=1。
  4. 選中 BASKET 整欄,在 Visibility 設定運算式:params["hBasket"]!=0。
  5. 重複上述步驟處理 ITEMS 欄位(參數 hItem),並同步更新 BASKET 圖片超連結加入 hItem 參數傳遞,確保狀態保持。

圖3:超連結設定
圖3:超連結設定
圖4:啟用隱藏運算式
圖4:啟用隱藏運算式

步驟 3:加入動態排序功能

  1. 建立排序參數 sStoreName、sClass、sProduct (String, Hidden, Default=對應欄位名)。
  2. 於 STORENAME、CLASS、PRODUCT 表頭插入 Sort.bmp 圖片。
  3. 設定圖片超連結 Drill-through 至自身,傳遞所有參數,並將對應排序參數設為欄位名(如 sStoreName='STORENAME')。
  4. 在表格 Sorting 標籤新增三個排序鍵:row[params["sStoreName"]]、row[params["sClass"]]、row[params["sProduct"]],皆升序。
  5. 同步更新隱藏欄位圖片超連結,加入三個排序參數傳遞,保持排序狀態。

圖5:排序互動設定
圖5:排序互動設定
圖6:排序鍵設定
圖6:排序鍵設定

步驟 4:套用樣式與完成鑽取報表

復用 MonthlyProfitabilityReport 的標題樣式與交替列底色,設定表格置中、分頁間隔 25。最終版面如下:

圖7:報表版面
圖7:報表版面

將彙總報表連結至鑽取報表

開啟 MonthlyProfitabilityReport.rptdesign,於 SUBDEPARTMENT 細節欄位設定超連結:

  • 類型:Drill-through
  • 目標:InteractivityReport.rptdesign
  • 參數對應:pDepartment → DEPARTMENT、pSubDepartment → SUBDEPARTMENT、pStoreId → params["pStoreId"]、pYear → params["pYear"]、pMonth → params["pMonth"]
  • 目標視窗:Same Window,格式 HTML

圖8:新增互動超連結
圖8:新增互動超連結
圖9:互動超連結參數對應
圖9:互動超連結參數對應

預覽彙總報表,點選任一子部門即可下鑽至明細報表,依傳遞參數自動過濾資料。

圖11:最終鑽取報表
圖11:最終鑽取報表(部門:童裝學校、子部門:褲款學校、店別:16、年:2002、月:3)

同一報表中結合圖表與表格

建立多圖表儀表板報表

新增 ChartAndGridGroupReport.rptdesign,使用空白模板,從頭佈局。資料集 ChartAndGridGroupdataset 查詢 MARTS.V_SALES_GROUPED,新增計算欄位 ProfitPerGroup = (row["PROFIT"]/Total.sum(row["PROFIT"]))*100。

版面:2x2 網格容納三個圖表與一個彙總表

  • 銷售圖表 (左上):圓餅圖 2D,Category=GROUP、Slice Size=SALES。啟用分組,標題「Sales」,圖例置底橫向。
  • 獲利圖表 (右上):複製銷售圖表,Slice Size 改為 PROFIT,資料標籤加 $ 前綴,標題「Profits」。
  • 獲利率圖表 (左下):複製銷售圖表,Slice Size 為計算欄位 ProfitPerGroup,標籤加 % 後綴,標題「Profit %」。
  • 彙總表格 (右下):插入表格,建立群組 gGroup 依 GROUP 分組,隱藏細節列,僅顯示群組標題與群組頁腳彙總(ITEMS、PROFIT、SALES、ProfitPerGroup 總和)。

圖12:選擇顯示資料
圖12:選擇顯示資料
圖13:圓餅圖標題設定
圖13:圓餅圖標題設定
圖14:編輯圖表格式
圖14:編輯圖表格式
圖15:圖例版面設定
圖15:圖例版面設定
圖16:資料標籤前綴設定
圖16:資料標籤前綴設定
圖17:表格群組設定
圖17:表格群組設定
圖18:最終版面
圖18:最終版面

調整圖表尺寸與預覽設定

將三個圖表寬高設為 6x4 英吋。若預覽無資料,需調整 Preferences > Report Design > Preview 最大列數為 2147483647。

圖19:圖表與網格成果
圖19:圖表與網格成果
圖20:預覽偏好設定
圖20:預覽偏好設定

為圖表與表格加入鑽取互動

建立報表模板以利重用

將 ChartAndGridGroupReport 發布為範本「Samples Template - Three Charts and One Grid」,後續鑽取報表直接套用此版面。
圖22:發布為範本
圖22:發布為範本

層級 1:群組 → 部門鑽取報表

  1. 使用範本建立 ChartsAndGridDeptReport.rptdesign。
  2. 修改資料集查詢:SELECT RTRIM(DEPARTMENT) AS DEPARTMENT, ITEMS, CGS, SALES, PROFIT FROM MARTS.V_SALES_GROUPED WHERE StoreId=? AND Year=? AND Month=?,計算欄位改為 ProfitPerDept。
  3. 更新三個圖表 Category 為 DEPARTMENT,Slice Size 分別為 SALES、PROFIT、ProfitPerDept。
  4. 重新綁定表格至新資料集,群組改為 gDepartment 依 DEPARTMENT 分組,數據元素改用 Total.sum() 彙總。
  5. 於群組報表 ChartsAndGridGroupReport 中:
    • 表格 GROUP 數據元素設超連結 Drill-through 至部門報表,傳遞 pStoreId、pYear、pMonth、pGroup=row["GROUP"]。
    • 三個圖表啟用 Interactivity:Value Series 設 Mouse Click → URL Redirect 至部門報表,傳遞相同參數,Category Series 加入 pGroup;另加 Mouse Over/Move 顯示 GROUP 工具提示。

圖26:圖表超連結參數設定
圖26:圖表超連結參數設定
圖27:圖表互動事件設定
圖27:圖表互動事件設定
圖28:預覽群組報表
圖28:預覽群組報表
圖29:部門鑽取報表
圖29:部門鑽取報表

層級 2:部門 → 子部門鑽取報表

同邏輯建立 ChartsAndGridSubDeptReport.rptdesign,資料集加入 WHERE Department=?,Category 改為 SUBDEPARTMENT。於部門報表設定表格與圖表超連結傳遞 pDepartment 參數。最終實現三級鑽取:群組 → 部門 → 子部門。
圖33:子部門報表
圖33:子部門報表

系列總結

本系列四部曲完整涵蓋了 BIRT 在 DB2 Data Warehouse Edition 中的應用:

  • 環境建置與基本報表/圖表建立(第 2 部分)
  • 彙總報表、分組報表、紅綠燈、複雜兩遍計算、目錄(第 3 部分)
  • 鑽取報表、動態欄位隱藏/排序、圖表互動、模板重用、多層級鑽取(第 4 部分,本文)

掌握這些技術,即可構建具備豐富互動、多維度下鑽、高度重用元件的企業級報表解決方案,充分發揮 DB2 DWE 與 BIRT 整合的效能優勢。

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