複雜報表設計之動態報表

需求說明

如上圖所示,可以需選擇不同的分組維度進行數據分析,例如類別、供應商維度;
可以通過用戶輸入的參數值進行數據動態過濾,例如傳入不同供應商、類別的值進行數據查詢過濾;
可以選擇要顯示的附加字段數據;
同時要求顯示有排名(每個分組內的數據從大到小顯示)、佔比(產品佔該分組維度總訂購量的百分比)。

製作過程:

1. 數據準備

此示例使用腳本數據集完成數據的準備工作,此處使用腳本數據集是處於對組內排名需求的考慮,完整腳本配置如下圖所示:

其中,
A1:使用 connect 函數連接 demo 數據源
A2:使用 query 函數進行數據的過濾查詢
A3:使用 group 和 sort 函數實現組內排序效果,即排名結果

2. 主報表製作

其中,
A2:=if(arg1==“供應商 ID”,ds1.group( 供應商 ID:1),ds1.group(類別 ID:1)) 實現動態分組效果
B2:=ds1.sum(訂購量) B 列爲隱藏列,用於佔比的分母值計算
C2:=&D2 排名效果實現,此處使用組內序號的配置即可,數據集準備的數據中已完成排名計算
D2:=ds1.select(產品 ID) 明細數據的展現,跟隨 A2 不同的分組維度顯示產品明細
E2:=ds1. 訂購量 同一個數據集的 select 函數後面跟隨取值表達式,不需要再使用 select 函數取數
F2:=if(B2==0,“-”,E2/B2) 佔比的實現是除法,準備好分子和分母的數據即可,此處使用 if 對分母爲 0 的數據做了特殊處理,顯示爲“-”
G1:=split(arg4,“,”) 對傳入要附件顯示的列名進行拆分,需要設置 G1 單元格的擴展方式爲橫向擴展
G2:=ds1.field(G1) 使用 field 函數對該字段進行取數顯示

主表設計完成,保存報表,例如保存名稱爲:kehu1.rpx,我們可以通過設計器的預覽按鈕看下效果:

輸入參數值後,得到如下結果:

3. 參數模板設計

文件–新建報表,設置報表屬性中的報表類型爲:參數模板
繪製上圖所示的表樣
其中,
B2:編輯風格爲下拉列表,並設置 web 變量名爲 arg1

D2:編輯風格爲下拉數據集,並設置 web 變量名爲 arg2


此 ds1 數據集需在參數模板的 報表–數據集中進行定義

F2:編輯風格爲下拉數據集,並設置 web 變量名爲 arg3
B3:編輯風格爲下拉列表,並設置 web 變量名爲 arg4

最後,將參數模板保存爲主表名稱 _arg.rpx,此示例名稱爲 kehu1_arg.rpx

至此,整體效果已完成設置。

發佈了77 篇原創文章 · 獲贊 16 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章