全部產品
Search
文件中心

AnalyticDB:FineReport

更新時間:Jul 06, 2024

本文介紹如何通過FineReport串連AnalyticDB MySQL版並進行報表管理。

前提條件

  • 瞭解FineReport與AnalyticDB MySQL版之間的相容性,請參見相容性概覽
  • 安裝MySQL JDBC驅動。
  • 安裝FineReport。如果您是第一次安裝FineReport,需要安裝MySQL伺服器(例如阿里雲RDS MySQL),用於匯入FineReport的中繼資料,FineReport提供了兩種資料連結方式:
  • 如果您需要通過外網串連AnalyticDB MySQL版叢集,請參見申請和釋放公網地址

串連AnalyticDB

  1. 開啟FineReport,在功能表列中單擊伺服器 > 定義資料連線
  2. 定義資料連線頁面進行參數配置。
    配置串連參數
    參數說明
    資料庫選擇MySQL
    磁碟機選擇MySQL jdbc驅動
    URLAnalyticDB MySQL版叢集的串連地址,格式為:jdbc:mysql://hostname:port
    • hostname:叢集的外網地址或者VPC地址。
    • port:3306。
    使用者名稱AnalyticDB MySQL版叢集中建立的帳號:
    • 高許可權帳號。
    • 普通帳號。
    密碼帳號對應的密碼。
  3. 完成上述參數配置後,單擊測試連接測試連通性,測試通過後單擊確定,串連至AnalyticDB MySQL版叢集。

添加表

串連AnalyticDB建立資料集:資料集通過SQL查詢語句從已經建立串連的資料庫中取數,將資料以二維表的形式儲存並顯示在資料集管理面板處。
  1. 資料集管理面板選擇模板資料集,單擊上方的+221040803
  2. 在彈出的下拉式清單中,選擇資料庫查詢2
  3. 在彈出的資料庫查詢對話方塊中,找到AnalyticDB對應的資料來源和對應表,寫入資料查詢語句,建立資料集ds1。如下樣本,查詢select * from demo_sales,查詢並取出demo_sales表中的所有資料。2021040802
  4. 通過彙總查詢選出彙總的資料集。如建立資料集ds2,寫入資料庫查詢語句SELECT 門店名稱,SUM(銷售額) AS 銷售總量 FROM demo_sales GROUP BY 門店名稱,查詢並取出每個門店的銷售總量資訊。
  5. 單擊確定,在資料集管理面板查看取出的資料。

樣本

在報表中通過表格和柱狀圖展示按照商品種類和合約種類分組,每個付款種類下的最大合約銷量,以及總銷售量。報表效果如下圖:

2021040804
  1. 下載樣本資料“合約銷售總表”demo_contract
  2. AnalyticDB MySQL版中建表。
    1. 找一列資料分布均勻的列做分布鍵,一列時間類型做分區鍵。請參考表結構設計
    2. 觀察到合約銷售總表中的幾列資料,按合約編號分布較隨機,因此用合約編號做分區鍵。建表語句如下:
      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'
  3. 建好表後,通過kettle把下載到本地的Excel匯入AnalyticDB MySQL版
    1. kettle使用文檔請參見通過Kettle匯入至數倉版
    2. 匯入完成後,執行select count(*) from demo_contract,可以看到有668條資料。
下面利用匯入的資料來產生demo報表:
  1. FineReport中匯入資料。擷取按照商品種類和合約種類分組,每個付款種類下的最大合約銷量,以及總銷售量。匯入兩張表d1和d2。
    1. 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
    2. d2按照商品種類、合約種類分組,算出所有付款種類的銷量總和:20210408052021040806
  2. 表格設計:
    1. 標題:合并A1~D2儲存格,寫入報表標題「合約銷售概況」,設定標題為15號字型,字型加粗並置中。
    2. 儲存格斜線:在一個儲存格中用斜線分隔顯示三個標題欄位資訊,合并A3、B3儲存格,右擊合并後的儲存格,單擊儲存格元素 > 插入斜線。系統會彈出一個斜線編輯的對話方塊,在文本編輯框寫入標題欄位資訊: 付款種類 | 合約種類 | 商品種類,可以通過添加空格來調整文字的位置。20210408072021040808
  3. 資料繫結:
    1. 將資料集中的資料列拖入到對應儲存格中。
    2. C5儲存格用於計算每個產品各自的總銷量,所以要對C4儲存格求和,選中C5儲存格,單擊上方快捷按鈕中的插入公式,在彈出的公式編輯框中輸入公式SUM(C4)。
    3. D5儲存格用於統計所有產品的總銷量,所以要對D4儲存格求和,同理,在D5儲存格插入公式 SUM(D4)。2021040809
  4. 屬性設定:
    1. 選中C3儲存格,讓產品欄位的資料在表格中橫向擴充,右邊屬性面板選擇儲存格屬性 > 擴充 > 基本 > 擴充方向 > 橫向
    2. 選中C4儲存格,由於A4、B4、C3儲存格的擴充已經確定了唯一的銷量值,故C4儲存格無需擴充,擴充方向為不擴充。C5和D5儲存格也都要設定擴充方向為不擴充。2021040811
  5. 多資料集關聯:當報表中存在不同資料集的資料時,需要通過添加資料過濾條件,建立起不同資料集之間的聯絡。

    這張報表的資料來源於兩個不同的資料集ds1和ds2,商品種類、合約種類欄位是這兩個資料集共有的欄位,使用這個欄位建立起他們之間的聯絡。選中並雙擊D4儲存格,彈出資料列對話方塊,選擇過濾。給儲存格添加一個普通條件,將ds2與ds1的商品種類、合約種類兩個欄位進行綁定,實現兩個資料集之間的關聯。

    20210408122021040813
  6. 圖表設計:
    1. 合并A7~D15儲存格,選擇功能表列插入 > 儲存格元素 > 插入圖表。選擇直條圖 > 直條圖,單擊確定2021040814
    2. 選中圖表,在右邊屬性面板選擇儲存格元素 > 資料,設定直條圖的資料。資料來源:儲存格資料;分類名:=B4;系列名:=C3;值:=C4。
      說明 分類名、系列名、值在設定的時候必須要有等號,否則儲存格會被作為字串處理
      2021040815
  7. 報表預覽:報表必須先儲存才能預覽,單擊儲存儲存報表,單擊預覽,選擇分頁預覽,即可在瀏覽器中查看報表。

相關文檔

FineReport和FineBI的區別:FineReport和FineBI的區別

FineReport和FineBI在操作中有一些相似性,FineBI常見問題參考:BI使用問題匯總

FineReport新手FAQ:設計器問題匯總

FineReport報表設計參考:報表應用學習路徑