本文介紹如何通過FineReport串連AnalyticDB MySQL版並進行報表管理。
前提條件
- 瞭解FineReport與AnalyticDB MySQL版之間的相容性,請參見相容性概覽。
- 安裝MySQL JDBC驅動。
- 安裝FineReport。如果您是第一次安裝FineReport,需要安裝MySQL伺服器(例如阿里雲RDS MySQL),用於匯入FineReport的中繼資料,FineReport提供了兩種資料連結方式:
- 方式一:在資料決策系統中進行串連,請參見JDBC串連資料庫。
- 方式二:在設計器中進行串連,mysql5.x版本可參考MySQL資料連線,mysql8.x版本可參考MySQL8資料連線外掛程式。
- 如果您需要通過外網串連AnalyticDB MySQL版叢集,請參見申請和釋放公網地址。
串連AnalyticDB
- 開啟FineReport,在功能表列中單擊 。
- 在定義資料連線頁面進行參數配置。
參數 說明 資料庫 選擇MySQL。 磁碟機 選擇MySQL jdbc驅動。 URL AnalyticDB MySQL版叢集的串連地址,格式為: jdbc:mysql://hostname:port
。hostname
:叢集的外網地址或者VPC地址。port
:3306。
使用者名稱 AnalyticDB MySQL版叢集中建立的帳號: - 高許可權帳號。
- 普通帳號。
密碼 帳號對應的密碼。 - 完成上述參數配置後,單擊測試連接測試連通性,測試通過後單擊確定,串連至AnalyticDB MySQL版叢集。
添加表
串連AnalyticDB建立資料集:資料集通過SQL查詢語句從已經建立串連的資料庫中取數,將資料以二維表的形式儲存並顯示在資料集管理面板處。
- 資料集管理面板選擇模板資料集,單擊上方的+。
- 在彈出的下拉式清單中,選擇資料庫查詢。
- 在彈出的資料庫查詢對話方塊中,找到AnalyticDB對應的資料來源和對應表,寫入資料查詢語句,建立資料集ds1。如下樣本,查詢
select * from demo_sales
,查詢並取出demo_sales表中的所有資料。 - 通過彙總查詢選出彙總的資料集。如建立資料集
ds2
,寫入資料庫查詢語句SELECT 門店名稱,SUM(銷售額) AS 銷售總量 FROM demo_sales GROUP BY 門店名稱
,查詢並取出每個門店的銷售總量資訊。 - 單擊確定,在資料集管理面板查看取出的資料。
樣本
在報表中通過表格和柱狀圖展示按照商品種類和合約種類分組,每個付款種類下的最大合約銷量,以及總銷售量。報表效果如下圖:
- 下載樣本資料“合約銷售總表”demo_contract。
- 在AnalyticDB MySQL版中建表。
- 找一列資料分布均勻的列做分布鍵,一列時間類型做分區鍵。請參考表結構設計。
- 觀察到合約銷售總表中的幾列資料,按合約編號分布較隨機,因此用合約編號做分區鍵。建表語句如下:
Create Table `demo_contract` ( `contract_id` varchar, `customer_id` varchar, `contract_type` varchar, `amount` bigint, `payment_type` varchar, `register_time` date, `purchase_amount` int, `create_time` timestamp, `product_type` smallint, `paid` tinyint, primary key (`contract_id`) ) DISTRIBUTE BY HASH(`contract_id`) INDEX_ALL='Y' STORAGE_POLICY='COLD'
- 建好表後,通過kettle把下載到本地的Excel匯入AnalyticDB MySQL版。
- kettle使用文檔請參見通過Kettle匯入至數倉版。
- 匯入完成後,執行
select count(*) from demo_contract
,可以看到有668條資料。
下面利用匯入的資料來產生demo報表:
- FineReport中匯入資料。擷取按照商品種類和合約種類分組,每個付款種類下的最大合約銷量,以及總銷售量。匯入兩張表d1和d2。
- d1按照商品種類、合約種類、付款種類分組,取每組銷量最大值:
select product_type, payment_type, contract_type, max(purchase_amount) as max_amount from demo_contract group by product_type, payment_type, contract_type having max_amount>0
- d2按照商品種類、合約種類分組,算出所有付款種類的銷量總和:
- d1按照商品種類、合約種類、付款種類分組,取每組銷量最大值:
- 表格設計:
- 標題:合并A1~D2儲存格,寫入報表標題「合約銷售概況」,設定標題為15號字型,字型加粗並置中。
- 儲存格斜線:在一個儲存格中用斜線分隔顯示三個標題欄位資訊,合并A3、B3儲存格,右擊合并後的儲存格,單擊 。系統會彈出一個斜線編輯的對話方塊,在文本編輯框寫入標題欄位資訊: 付款種類 | 合約種類 | 商品種類,可以通過添加空格來調整文字的位置。
- 資料繫結:
- 將資料集中的資料列拖入到對應儲存格中。
- C5儲存格用於計算每個產品各自的總銷量,所以要對C4儲存格求和,選中C5儲存格,單擊上方快捷按鈕中的插入公式,在彈出的公式編輯框中輸入公式SUM(C4)。
- D5儲存格用於統計所有產品的總銷量,所以要對D4儲存格求和,同理,在D5儲存格插入公式 SUM(D4)。
- 屬性設定:
- 選中C3儲存格,讓產品欄位的資料在表格中橫向擴充,右邊屬性面板選擇 。
- 選中C4儲存格,由於A4、B4、C3儲存格的擴充已經確定了唯一的銷量值,故C4儲存格無需擴充,擴充方向為不擴充。C5和D5儲存格也都要設定擴充方向為不擴充。
- 多資料集關聯:當報表中存在不同資料集的資料時,需要通過添加資料過濾條件,建立起不同資料集之間的聯絡。
這張報表的資料來源於兩個不同的資料集ds1和ds2,商品種類、合約種類欄位是這兩個資料集共有的欄位,使用這個欄位建立起他們之間的聯絡。選中並雙擊D4儲存格,彈出資料列對話方塊,選擇過濾。給儲存格添加一個普通條件,將ds2與ds1的商品種類、合約種類兩個欄位進行綁定,實現兩個資料集之間的關聯。
- 圖表設計:
- 合并A7~D15儲存格,選擇功能表列 。選擇 ,單擊確定。
- 選中圖表,在右邊屬性面板選擇說明 分類名、系列名、值在設定的時候必須要有等號,否則儲存格會被作為字串處理 ,設定直條圖的資料。資料來源:儲存格資料;分類名:=B4;系列名:=C3;值:=C4。
- 報表預覽:報表必須先儲存才能預覽,單擊儲存儲存報表,單擊預覽,選擇分頁預覽,即可在瀏覽器中查看報表。
相關文檔
FineReport和FineBI的區別:FineReport和FineBI的區別。
FineReport和FineBI在操作中有一些相似性,FineBI常見問題參考:BI使用問題匯總。
FineReport新手FAQ:設計器問題匯總。
FineReport報表設計參考:報表應用學習路徑。