FDL和FineReport組合應用範例

  • 文檔創建者:Roxy
  • 編輯次數:16
  • 最近更新:Nikozhan 于 2025-08-15
  • 1. 概述

    1.1 背景

    某集團長期使用 Finereport 製作報表看板,開發人員小A 在使用程式中發現一些問題:

    • 由於使用 FineReport 直連業務庫,透過複雜sql實現報表取數,導致前端報表展示速度較慢;

    • 不支援跨資料庫取數,因此一直都透過複雜程式程式碼來實現,開發成本高、取數也比較緩慢;

    • 報表資料集無法被引用和聯動,無法進行資料集的複用。

    本文主要介紹業務系統資料經過FDL處理落庫後,FineReport呼叫該資料進行報表開發的全流程,透過FDL+FR的組合方案解決以上三個問題。

    1.2 思路

    透過 FineDataLink 對需要複雜 SQL、跨資料庫聯動等的資料進行處理並匯出到應用資料庫;

    然後直接使用處理好的資料進行 FineReport 報表開發;

    使用 FineDataLink 視覺化的操作介面和方便的功能,簡化 FineReport 資料加工和處理步驟,提升看板的前端展示速度,同時資料集可以進行復用,提高報表開發速度。

    2. 實現方法

    2.1 場景說明

    FRDemo 資料庫中存放着「S訂單」、「S訂單明細」、「銷售明細」、「FD_年度資產分類表」四張表。

    現在希望對這些資料進行處理並用處理好的資料進行報表展示。

    資料表處理要求問題
    「S訂單」、「S訂單明細」跨資料庫聯動原先只能透過複雜的程式程式碼實現
    「銷售明細」欄轉列處理SQL 較複雜,開發時間較長
    「FD_年度資產分類表」複雜的SQLSQL 較複雜,開發時間較長,且報表資料集前端展示載入時間較長

    2.2 方案說明

    1)將複雜sql處理、跨庫聯動等步驟放在 FineDataLink 中進行,對資料庫 FRDemo 中存在資料表進行如下操作:

    • 將 FRDemo 資料庫中的「S訂單」和FDLDemo資料庫中的「S訂單明細」資料透過「訂單ID」主鍵聯動後,匯出到FDLDemo應用庫;

    • 將 FRDemo 資料庫中的 「銷售明細」進行欄轉列後,根據業務要求按照不同維度進行統計,並匯出到FDLDemo應用庫;

    • 將 FRDemo 資料庫中的「FD_年度資產分類表」進行復雜 SQL 處理後匯出到 FDLDemo 應用庫;

    2)在  FineDataLink  中,透過將三個任務設定統一的調度週期進行管理,保證該資料定時更新到 FDLDemo 應用庫;

    3)使用 Finereport 設計器連結 FDLDemo 應用庫,使用簡單SQL語句進行取數後,製作報表。

    3. 操作步驟

    3.1 跨資料庫聯動

    將 FRDemo 業務庫中的「S訂單」和 FDLDemo 資料庫中的「S訂單明細」資料透過「訂單ID」主鍵聯動後,落庫到 FDLDemo 應用庫中。

    1)建立 ETL 任務命名為「跨庫聯動」,使用資料轉換,將FRDemo 業務庫中的「S訂單」和 FDLDemo 資料庫中的「S訂單明細」資料取出,便於後續進行資料聯動,如下圖所示:

    2)新增「資料聯動」算子,將兩個資料表輸入算子連結至資料聯動,進行跨庫聯動製作新的資料表,設定連結方式和連結欄位,如下圖所示:

    點選預覽即可查看跨資料庫聯動後的資料表,如下圖所示:

    3)對聯動好的資料表進行欄位設定,比如去掉重複的合併依據「訂單ID1」等等,如下圖所示:

    4)將製作好的跨資料庫取數資料表命名為「dingdanxiangxi」並匯出到「FDLDemo」資料庫中,如下圖所示:

    3.2 資料欄轉列

    將 FRDemo 資料庫中的 「銷售明細」進欄轉列後,根據業務要求按照不同維度進行統計,並匯出到 FDLDemo 資料庫。

    欄轉列希望實現的效果對比如下圖所示:

    1)建立 ETL 任務命名為「資料欄轉列」,使用資料轉換,將FRDemo 業務庫中的「銷售明細」取出,便於後續進行列轉欄處理,如下圖所示:

    2)對「銷售明細」資料進行欄轉列,將二維表地區銷售資料轉為一維表,如下圖所示:

    3)此時希望對已經欄轉列的資料繼續進行處理,計算每個城市的總銷售金額,可以使用Spark SQL,編寫 SQL 語句,如下圖所示:

    得到每個城市的總銷售金額,點選「資料預覽」,如下圖所示:

    4)將處理好的資料命名為「sum_xs」並匯出到 FDLDemo 資料庫中,如下圖所示:

    3.3 複雜 sql 查詢

    將 FRDemo 資料庫中的「FD_年度資產分類表」進行復雜 SQL 處理後匯出到 FDLDemo 應用庫,以此減輕設計器直接取數造成的載入緩慢問題。

    1)建立 ETL 任務,新增資料同步,在資料來源中新增較複雜的 SQL 語句進行取數,如下圖所示:

    2)將查詢好的資料命名為「zichanbiao」,匯出至 FDLDemo 資料庫中,如下圖所示:

    3.4 設定調度週期管理任務

    三個任務均設計完成,此時希望能定時進行資料更新,就需要設計調度週期,對任務進行管理。

    設計思路:

    1)建立 ETL 任務命名為「FDL&FR組合應用」,新增呼叫任務,命名為跨庫聯動,即呼叫了操作步驟中跨資料庫聯動的任務,如下圖所示:

    同理,對資料欄轉列和複雜查詢同樣設定調傭任務,如下圖所示:

    2)新增訊息通知,設定若三個任務執行失敗,則通知某個任務執行失敗,如下圖所示:

    ${prepose.failedInfo} 為內建參數,詳情參見:內建參數

    3)使用遠端將三個任務與失敗執行的訊息通知相連,設定在任務執行失敗時,執行「訊息通知-失敗執行」,如下圖所示:

    3)同理,設定任務執行成功時的訊息通知,如下圖所示:

    ${prepose.successInfo}為內建參數,詳情參見:內建參數

    4)設定任務的執行頻率,如下圖所示:

    3.5 執行任務

    設定完成後,即可儲存並運作任務,如下圖所示:

    3.6 FineReport 直接取數製作報表

    使用 FineReport 設計器連結 FDLDemo 資料庫,取出跨庫聯動資料表「dingdanxiangxi」、欄轉列資料表「sum_xs」、複雜查詢資料表「zichanbiao」,如下圖所示:

    截圖為dingdanxiangxi,其他資料表同理。

    製作報表,如下圖所示:

    4. 效果查看

    FineDataLink 中的資料處理程式,詳情參見:https://demo.finedatalink.com/ 「FineDataLink&FineBI組合方案」。

    報表範本參見:销售库存周转.frm



    附件列表


    主題: 資料同步專題
    已經是第一篇
    已經是最後一篇
    • 有幫助
    • 沒幫助
    • 只是瀏覽
    • 评价文档,奖励 1 ~ 100 随机 F 豆!