FineReport接收並使用資料服務發佈的資料

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

    1.1 應用場景

    使用者為保證資料安全,不希望直接將資料倉儲帳號開發給第三方使用,且擁有 FineDataLink 作為資料中台,想使用「資料服務」功能,統一分發資料給第三方使用,同時想要使用 FineReport 直接接收資料製作看板。

    1.2 實現思路

    方案一:使用JSON 資料集插件在報表設計器或決策平台安裝插件,接收資料服務 API 資料並製作看板。

    方案二:使用資料工廠資料集插件在報表設計器或決策平台安裝插件,接收資料服務 API 資料並製作看板

    1.3 預期效果

    報表直接接收並使用發佈的 API 資料製作篩選看板,如下圖所示:

    2. 資料服務發佈資料

    2.1 建立訂單資訊全表API

    建立步驟詳情參見:發佈API概述

    使用資料服務,建立 API 訂單資訊全表,使用 demo 平台 demo1 資料庫中的 Arri_DWD_OrderDetailsAll 資料表。

    輸入API名稱、描述、請求方式、API 地址等資訊,選擇資料源和編寫sql語句,請求參數配置將參數設定為允許為空,且預設值為空。

    本範例要求為:可根據貨主地區、貨主省份動態傳回對應資料,兩個參數都為空則傳回全部,任意一個參數可為空。

    對應 SQL 如下:

    SELECT * FROM `demo1`.`Arri_DWD_OrderDetailsAll` 
    WHERE 1=1 AND 
      CASE 
        WHEN "${area}" != "" AND "${province}" != "" THEN 貨主地區 IN ('${area}') AND 貨主省份 IN ('${province}')
        WHEN "${area}" = "" AND "${province}" != "" THEN 貨主省份 IN ('${province}')
        WHEN "${area}" != "" AND "${province}" = "" THEN 貨主地區 IN ('${area}')
        ELSE 1=1
      END;

    配置完成後可透過查詢預覽功能,動態輸入不同情況下的參數傳遞情況,驗證是否可正常傳回資料。


    2.2 建立訂單匯總表

    整體操作步驟與本文 2.1 節相同, SQL 如下:

    SELECT * FROM `demo1`.`Arri_DWS_OrderSummary`
    WHERE 1=1 AND 
      CASE 
        WHEN "${area}" != "" AND "${province}" != "" THEN 貨主地區 IN ('${area}') AND 貨主省份 IN ('${province}')
        WHEN "${area}" = "" AND "${province}" != "" THEN 貨主省份 IN ('${province}')
        WHEN "${area}" != "" AND "${province}" = "" THEN 貨主地區 IN ('${area}')
        ELSE 1=1
      END;


    3. 方案一:JSON資料集接收資料

    3.1 安裝JSON資料集插件

    在FineReport 設計器或者決策平台的插件管理,安裝JSON 資料集插件

    設計器插件安裝方法參照 設計器插件管理

    伺服器安裝插件方法參照 伺服器插件管理

    3.2 配置資料連結

    由於報表需要對接「訂單資訊全表」api和「訂單匯總表」api,使用其發佈的 API 資料,共2個api,所以需要定義2個資料連結,配置程式均一致,僅URL地址不同。

    這裏已配置連結「訂單資訊全表」api 為例。

    在設計器中,選擇伺服器>定義資料連結,建立 Json,如下圖所示:

    配置本文第二章發佈的 API「訂單資訊全表」,如下圖所示:

    配置項
    內容說明
    URL地址訂單明細全表:https://demo.finedatalink.com/service/publish/cff763e1-f97a-4c5f-a35e-db9e94f9e277/order_detail?area=${a}&province=${b}

    url地址可從資料服務對應的 API 任務重直接複製,複製後手動在原地址後連接兩個參數,該參數來源於api配置的參數值。

    帳號/密碼由於資料服務功能僅支援摘要簽章認證和在請求頭中傳遞的 Token-APPCode ,因此不需要輸入帳號密碼
    普通參數a和b兩個參數,分別對應 API 內的area(貨主地區)和province(貨主省份)2個參數:
    • a:if(len($a1)==0,,$a1)

    • b:if(len($b1)==0,,$b1)

    其中

    a1為報表內元件名,用於後續後續報表製作,接收貨主地區的值

    b1為報表內元件名,用於後續後續報表製作,接收貨主省份的值

    請求頭參數

    若在資料服務發佈的 API 設定了Token-APPCode,則需要填寫,例如Authorization:AppCode 725742ee-0fdb-4e7b-a1d1-723b97dcfcd6

    appcode可從資料服務應用內複製

    「訂單匯總表」API 也使用相同的步驟建立「資料連結」,URL 以及請求參數如下所示:

    配置項
    內容說明
    URL地址

    https://demo.finedatalink.com/service/publish/cff763e1-f97a-4c5f-a35e-db9e94f9e277/order_sum?area=${a}&province=${b}


    url地址可從資料服務對應的 API 任務重直接複製,複製後手動在原地址後連接兩個參數,該參數來源於api配置的參數值。



    帳號/密碼由於資料服務功能僅支援摘要簽章認證和在請求頭中傳遞的 Token-APPCode ,因此不需要輸入帳號密碼
    普通參數a和b兩個參數,分別對應 API 內的area(貨主地區)和province(貨主省份)2個參數:
    • a:if(len($a1)==0,,$a1)

    • b:if(len($b1)==0,,$b1)

    其中

    a1為報表內元件名,用於後續後續報表製作,接收貨主地區的值

    b1為報表內元件名,用於後續後續報表製作,接收貨主省份的值

    3.3 建立JSON資料集

    在設計器中建立一個空白cpt,命名為「FR銷售訂單看板-json資料集」

    選擇範本>範本資料集,並建立json資料集,選擇對應的json資料連結,查詢語句寫:$.data,點選預覽即可查看和傳回資料。

    (由於 FineDataLink 資料服務api和 FineReport 資料連結處配置的是參數為空傳回全部,此時預覽資料為全部資料)

    同理對「訂單匯總表」資料連結建立「Json資料集」,如下圖所示:

    3.4 使用資料製作報表看板

    製作參數面板的「貨主地區」和「貨主省份」聯動,參考:公式實現下拉複選框參數聯動

    在報表設計介面,點選範本資料集>建立>內建資料集,定義好貨主地區和貨主省份的對應關係,如下圖所示:

    設定「貨主地區」元件:編輯參數面板,拖入下拉複選框元件,設定元件名稱為 a1,並設定元件資料字典,選擇上一步建立的內建資料集的貨主地區欄位,如下圖所示:

    設定元件回傳值,類型選擇字串,分隔符用',',起始符和結束符填空

    設定「貨主省份」元件:編輯參數面板,拖入下拉複選框元件,設定元件名稱為 b1,並設定元件資料字典,選擇公式,公式為:if(len($a1)=0,area_province.select(貨主省份),eval("area_province.select(貨主省份,inarray(貨主地區,['"+joinarray($a1,"','")+"'])>0)")),如下圖所示:

    注:此處的area_province 為上文建立的地區和省份聯動內建資料集。

    設定元件回傳值,類型選擇字串,分隔符用',',起始符和結束符填空,如下圖所示:

    分別將「訂單明細全表」和「訂單匯總表」2個資料集資料拖入2個sheet,用於前端展現,如下圖所示:

    3.5 效果查看

    然後即可設定報表樣式,並預覽,如下圖所示:

    4. 方案二:資料工廠資料集插件

    4.1 安裝資料工廠資料集插件

    在FineReport 設計器或者決策平台的插件管理,安裝資料工廠資料集

    設計器插件安裝方法參照 設計器插件管理

    伺服器安裝插件方法參照 伺服器插件管理

    4.2 配置資料連結

    這裏以配置連結「訂單資訊全表」api 為例。在設計器中建立一個空白cpt,命名為「FR銷售訂單看板-json資料集」。

    選擇左側範本資料集>建立>資料工廠,進行如下配置:

    配置項
    類型內容說明
    裝載方式http

    {

        url:"https://demo.finedatalink.com/service/publish/cff763e1-f97a-4c5f-a35e-db9e94f9e277/order_detail

    ?area=${a}&province=${b}",

        type:"GET",

        charset:"UTF-8",

        header:{

    Authorization:"AppCode 725742ee-0fdb-4e7b-a1d1-723b97dcfcd6"

    }

    }



    a:if(len($a1)==0,,$a1)

    b:if(len($b1)==0,,$b1)

    a1為報表內元件名,用於後續後續報表製作,接收貨主地區的值

    b1為報表內元件名,用於後續後續報表製作,接收貨主省份的值

    注:若資料服務發佈的 API 沒有 AppCode,則可不填寫請求頭參數。

    解析方式json{
        dataPath:"$.data"
    }

    4.3 使用資料製作報表看板

    步驟與 3.4 節類似,不再贅述。

    5. 範本下載

    附件列表


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