随着 JavaScript 的流行,JSON 格式的数据也被越来越广泛的使用,但是由于 JSON 格式的灵活性,把这类数据结构和其他数据一起分析的时候,就会面临结构不统一导致无法分析的问题,在 FineBI 需要安装插件,本文详细介绍如何使用 JSON 数据集。
JSON 数据集插件可对 JSON 格式的数据进行处理,方便在 FineBI 中使用。
插件下载请点击:JSON 数据集插件
安装插件方法请参见:插件管理
3. JSON 数据集
1)以管理员身份进入数据决策系统,点击「管理系统>数据连接>数据连接管理>新建数据连接>所有」,可添加 JSON 数据连接,如下图所示:
2)点击「JSON」,配置JSON数据连接。如下图所示:
注:JSON 数据连接配置保存后,选中数据连接,点击右侧按钮,可修改数据连接名称。
设置项的详细说明如下表所示:
地址可以支持参数,和数据集一样,注意提供一个默认参数供设计的时候查询用
注:支持 HTTP 和非自签名 SSL 证书的 HTTPS
需注意以下几点:
V9.3.3 版本的插件,脚本引擎支持自主选择 JavaScript V8 或者 Java(默认),在无法支持 JavaScript V8 的机器上自动使用 Java 版本的脚本引擎。
添加参数类型取决于用户服务器需要接收什么类型的参数。
建议用户获取参数时使用 .json 文件而不是单纯的接口。
点击「服务器数据集>JSON数据集」,数据集名称为「JSON数据集」,选择创建的 JSON 数据连接,输入查询语句$.store.book[*],点击「保存」按钮即可。如下图所示:
设置项介绍如下表所示:
是指对获取出来的列名做排序。默认即为不开启
输入查询语句
$.store.book[*]
查询出书店中所有的书信息,查询结果如下图所示:
注:$.store.book[*] 是 JSON 的固定引用方式,代表取出 store 下 book 的全部数据
$.store.book[*].category
取出 category 列的数据,查询结果如下图所示:
$.store.book[?(@.price<10)]
取出价格小于 10 的书籍,查询结果如下图所示:
三种传参方式区别如下表所示:
传参方式具体介绍请参见:JSON 数据集插件 的 2.3 节内容。
使用 JavaScript 脚本,将 JSON 对象转换为二维表。这种方式可以解决所有不能直接用 JSON 数据集的场景,可以根据用户自己的数据结构定制脚本,从而实现和报表的对接。
注: 新建和使用 JSON 程序数据集,需要使用 2019-04-03 及以后版本的 JAR 包,插件需要更新到 9.2.3 及以后版本。
以管理员身份进入数据决策系统,点击「管理系统>数据连接>服务器数据集>JSON程序数据集」,数据集名称为「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);
1)以管理员身份进入数据决策系统,添加数据库表
2)点击「服务器数据集」,可添加已创建的JSON数据集/程序数据集,如下图所示:
注:此处 JSON 数据若包含多种数据类型,则在前端使用中可能会有报错,建议尽量将数据处理成数据类型一致使用。
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉
Submitted successfully
Network busy