本文介紹如何通過FineReport串連AnalyticDB for MySQL並進行報表管理。
前提條件
瞭解FineReport與AnalyticDB for MySQL之間的相容性,請參見相容性概覽。
安裝MySQL JDBC驅動。
安裝FineReport。如果您是第一次安裝FineReport,需要安裝MySQL伺服器(例如阿里雲RDS MySQL),用於匯入FineReport的中繼資料,FineReport提供了兩種資料連結方式:
方式一:在資料決策系統中進行串連,請參見JDBC串連資料庫。
方式二:在設計器中進行串連,mysql5.x版本可參考MySQL資料連線,mysql8.x版本可參考MySQL8資料連線外掛程式。
如果您需要通過外網串連AnalyticDB for MySQL叢集,請參見申請和釋放公網地址。
串連AnalyticDB
開啟FineReport,在功能表列中單擊 。
在定義資料連線頁面進行參數配置。
參數
說明
資料庫
選擇MySQL。
磁碟機
選擇MySQL jdbc驅動。
URL
AnalyticDB for MySQL叢集的串連地址,格式為:
jdbc:mysql://hostname:port
。hostname
:叢集的外網地址或者VPC地址。port
:3306。
使用者名稱
AnalyticDB for MySQL叢集中建立的帳號:
高許可權帳號。
普通帳號。
密碼
帳號對應的密碼。
完成上述參數配置後,單擊測試連接測試連通性,測試通過後單擊確定,串連至AnalyticDB for MySQL叢集。
添加表
串連AnalyticDB建立資料集:資料集通過SQL查詢語句從已經建立串連的資料庫中取數,將資料以二維表的形式儲存並顯示在資料集管理面板處。
資料集管理面板選擇模板資料集,單擊上方的+。
在彈出的下拉式清單中,選擇資料庫查詢。
在彈出的資料庫查詢對話方塊中,找到AnalyticDB對應的資料來源和對應表,寫入資料查詢語句,建立資料集ds1。如下樣本,查詢
select * from demo_sales
,查詢並取出demo_sales表中的所有資料。通過彙總查詢選出彙總的資料集。如建立資料集
ds2
,寫入資料庫查詢語句SELECT 門店名稱,SUM(銷售額) AS 銷售總量 FROM demo_sales GROUP BY 門店名稱
,查詢並取出每個門店的銷售總量資訊。單擊確定,在資料集管理面板查看取出的資料。
樣本
在報表中通過表格和柱狀圖展示按照商品種類和合約種類分組,每個付款種類下的最大合約銷量,以及總銷售量。報表效果如下圖:
下載樣本資料“合約銷售總表”demo_contract。
在AnalyticDB for 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`) ) DISTRIBUTED BY HASH(`contract_id`) INDEX_ALL='Y' STORAGE_POLICY='COLD'
建好表後,通過kettle把下載到本地的Excel匯入AnalyticDB for 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按照商品種類、合約種類分組,算出所有付款種類的銷量總和:
表格設計:
標題:合并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報表設計參考:報表應用學習路徑。