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「訂單資訊全表」,如下圖所示:
「訂單匯總表」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個參數:
| 其中 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 節類似,不再贅述。