反饋已提交
網絡繁忙
随着 JavaScript 的流行,JSON 格式的數據也被越來越廣泛的使用。使用 JSON 數據集插件可以将 JSON 格式的數據轉變爲報表中可以使用的數據表。
JSON 查詢的詳細語法規則參見文檔:JsonPath
注:JsonPath語法内寫參數的方法,與普通數據集一緻。
本文不做介紹
使用 FineDataLink 產品 中的「JSON 解析」算子實現
需要提前學習 JSON 查詢的語法
創建 JSON 數據集後,輸入查詢語句,取出數據
「JSON 解析」算子中,無需輸入查詢語句,直接可視化選擇節點即可
點擊下載插件:JSON數據集
插件安裝方式,可參考A11-18伺服器-插件管理。
安裝插件後,設計器菜單欄選擇服務器>定義數據連接,新建一個 JSON 數據連接,命名爲 JSON 。
輸入鏈接地址http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json,并按如下圖所示配置好其他設置項,點擊「确定」。如下圖所示:
注:請求地址返回的文本信息,只要是 JSON 格式的文本即可。
設置項的詳細說明如下圖所示:
用於輸入json文本的請求地址(支持 HTTP 和非自簽名 SSL 證書的 HTTPS)
地址支持參數,和數據集一樣,注意提供一個默認參數供設計的時候查詢用;
地址支持除報表函數和單元格計算以外的所有公式;
注:建議用戶獲取參數時使用單純的接口鏈接,「 .json 文件」形式不能傳參。
用於設置緩存的有效期,單位毫秒,默認爲0,表示不緩存;
設置緩存時間後,将在首次連接後進行緩存(支持集群),緩存有效期内讀取的結果均爲緩存内容,不随請求接口數據變化而變化
請求類型默認爲 GET,可修改爲 POST_FROM 及 POST_RAW ,關於請求類型的介紹可參見本文 3.3 節。
普通參數即放在 Body 中的,通常說的 GET 和 POST 即普通參數
普通參數支持參數的增删改,并可通過刷新按鈕直接刷新出請求地址中設置的參數(此時将用刷新出的參數覆蓋原有的參數設置)
頭參數即放在 Header 中,常用不變的量一般都是走 header, 因爲每次請求都帶 header
請求頭參數僅支持手動增删改,公式支持除報表函數和單元格計算以外的所有公式
注1:V9.3.3 版本的插件,腳本引擎支持自主選擇 JavaScript V8 或者 Java(默認),在無法支持 JavaScript V8 的機器上自動使用 Java 版本的腳本引擎。
注2:添加參數類型取決於用戶服務器需要接收什麽類型的參數。
設計器新建 JSON 數據集,如下圖所示:
點擊新建好的 JSON 數據集編輯按鈕,輸入查詢語句,即可獲取到 JSON 中的數據。查詢語句欄輸入$.store.book[*],查詢出書店中所有的書信息,如下圖所示:
注:$.store.book[*] 是 JSON 的固定引用方式,代表取出 store 下 book 的全部數據。
點擊「預覽」按鈕,查看取出來的 JSON 數據。
鍵排序:是指對獲取出來的列名做排序,默認即爲不開啟(如果是不完整的json結構,需要同時開啟預讀列名才有效)
預讀列名:先遍曆所有的數據,把列名獲取出來,可用於 JSON 結構不整齊的情況,會稍微的降低效率。默認即爲不開啟。
查詢語句欄輸入$.store.book[*].category,取出 category 列的數據。
點擊預覽按鈕,查看取出來的 JSON 數據。
查詢語句欄輸入$.store.book[?(@.price<10)]取出價格小於 10 的書籍。
注1:鍵值對順序不一緻可能造成數據錯亂,可以開啟預讀列名。
注2:已完成模板參見下面的 JSON 數據集示例1.cpt。
傳參方式區别
注1:建議用戶獲取參數時地址使用單純的接口鏈接,「 .json 」文件形式不支持傳參。
注2:在決策報表中,如果希望JSON數據連接和控件聯動,必須在JSON數據集中添加和JSON數據連接中同名的參數(即使用不上這個參數)。
注3:JSON數據集傳參,參數值必須爲固定值,而不可以是另一個參數,例如fine_username等。
創建 json 連接,請求類型選擇「GET」,在 json 文本的請求地址後面加上添加參數,如下圖所示:
添加「json」數據集,輸入查詢語句,返回參數 book 對應的數據
由於 POST_RAW 傳參需要手動指定參數,所以在請求頭參數中,設置 Content-Type 爲 application/json ,表示客戶端告訴服務器實際發送的數據類型爲 JSON 格式。
創建 JSON 數據連接,請求類型選擇「POST_RAW」。在地址處輸入對應的 json 文本接口鏈接。如下圖所示:
預覽時,返回參數 book 對應的數據,如下圖所示:
使用動态參數時,通過 ${} 進行動态傳參,點擊刷新按鈕進行參數配置:
使用 JavaScript 腳本,将 JSON 對象轉換爲二維表。這種方式可以解決所有不能直接用 JSON 數據集的場景,可以根據用戶自己的數據結構定制腳本,從而實現和報表的對接。
注: 新建和使用 JSON 程序數據集,設計器需要使用 2019-03-13 及以後版本的 JAR 包,插件需要更新到 9.2.3 及以後版本。
設計器中新建 JSON 程序數據集,如下圖所示:
點擊新建好的 JSON 數據集編輯按鈕,輸入下圖中的腳本代碼,即可獲取所有書籍的數據。
腳本代碼:
var books = $.store.book;var rowCount = books.length;console.log("列數爲:" + rowCount);var table = [];var column = [];books.forEach(function(value, index) { var row = []; for (var key in value) { row.push(value[key]); column.push(key); } console.log("該列共有" + row.length + "欄"); table.push(row);});return merge(table, unique(column))
腳本編輯框中如下腳本代碼,取出價格小於 10 的書籍數據。
var books = $.store.book;var rowCount = books.length;var table = [];var column = [];books.forEach(function(value, index) { var row = []; if (value.price < 10) { for (var key in value) { row.push(value[key]); column.push(key); } table.push(row); }}); return merge(table, unique(column));
腳本編輯框中如下腳本代碼,取出所有書籍的作者集合。
var books = $.store.book;var rowCount = books.length;var table = [];var column = ["author"];books.forEach(function(value, index) { var row = []; row.push(value.author); table.push(row);}); return merge(table, column);
注:已完成模板參見下面的 JSON數據集示例2.cpt。
JSON數據集示例1.cpt:
JSON數據集示例2.cpt:
注:PC 及其移動端效果一緻,可依據實際需求選擇對應的數據集。
點擊下載模板:
JSON資料集範例1.cpt
JSON資料集範例2.cpt
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
反馈已提交
网络繁忙