JSON 数据集插件

  • 文档创建者:doreen0813
  • 编辑次数:8次
  • 最近更新:Wendy123456 于 2020-10-15
  • 1. 概述

    1.1 版本

     FineBI 版本JAR 包版本 插件版本 新增功能
    5.02018-10-24V9.3.1-
    5.12020-01-15V9.3.1-
    5.12020-04-03V9.3.7提供在平台的使用入口,无需借助FineReport设计器使用

    1.2 应用场景

    随着 JavaScript 的流行,JSON 格式的数据也被越来越广泛的使用,但是由于 JSON 格式的灵活性,把这类数据结构和其他数据一起分析的时候,就会面临结构不统一导致无法分析的问题,在 FineBI 中没有办法直接使用,需要安装插件,本文详细介绍如何使用 JSON 数据集。 

    1.3 功能简介

    JSON 数据集插件可对 JSON 格式的数据进行处理,方便在 FineBI 中使用。

    2. 插件介绍

    2.1 安装插件

    插件下载请点击:JSON 数据集插件

    安装插件方法请参见:插件管理

    2.2  使用入口

    2.2.1 插件版本为 V9.3.7 及之后

    以管理员身份进入数据决策系统,点击「管理系统>数据连接>数据连接管理>新建数据连接>所有」,可添加 JSON 数据连接,如下图所示:

    3.png

    2.2.2 插件版本为 V9.3.7 之前

    1)FineBI 远程连接 FineReport 设计器

    FineBI 安装插件后,参考 远程连接 FineReport 设计器 在设计器中远程连接 FineBI 。

    2)设计器添加 JSON 数据集

    连接成功后,进入设计器的服务器>定义数据连接,添加 JSON 数据连接,如下图所示:

    详情参见:创建JSON数据连接 

    1582862097304723.png

    3. JSON 数据集

    3.1 定义 JSON 数据连接

    1)以管理员身份进入数据决策系统,点击「管理系统>数据连接>数据连接管理>新建数据连接>所有」,可添加 JSON 数据连接,如下图所示:

    3.png

    2)点击「JSON」,配置JSON数据连接。如下图所示:

    注:JSON 数据连接配置保存后,选中数据连接,点击右侧1602742773127145.png按钮,可修改数据连接名称。

    1602742417138321.png

    设置项的详细说明如下表所示:

       设置项 说明本文示例
    地址地址可以支持参数,和数据集一样,注意提供一个默认参数供设计的时候查询用http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json
    用户名密码输入用户名和密码进行认证,不需要认证就不填写-
    请求类型  GET 模式和 POST 模式的参数传递方式不一样,GET 是拼接到 URL 上,POST 是放到 HTTP 请求体中,并且 POST 模式的参数需要自己添加GET
    缓存有效期默认缓存时间为 0 ,表示不启用,且支持集群,可以有效的提升 JSON 数据集的效率
    注:V9.3.3 版本插件支持
    -
    普通参数普通参数即放在 Body 中的,通常说的 GET 和 POST 即普通参数-
    头参数头参数即放在 Head 里面的。常用不变的量一般都是走 header, 因为每次请求都带 header-
    编码  如果文件是非 UTF-8 编码的,就需要在原始编码这一栏选择对应的编码,否则无法正确的解析文本信息
    UTF-8

    需注意以下几点:

    • V9.3.3 版本的插件,脚本引擎支持自主选择 JavaScript V8 或者 Java(默认),在无法支持 JavaScript V8 的机器上自动使用 Java 版本的脚本引擎。

    • 添加参数类型取决于用户服务器需要接收什么类型的参数。

    • 建议用户获取参数时使用 .json 文件而不是单纯的接口。

    3.2 新建 JSON 数据集

    点击「服务器数据集>JSON数据集」,数据集名称为「JSON数据集」,选择创建的JSON数据连接,输入查询语句$.store.book[*],点击「保存」按钮即可。如下图所示:

    9.png

    设置项介绍如下表所示:

    设置项说明本文示例
    数据集名称用户可自定义,不可为空JSON数据集
    数据连接名称选择已创建的 JSON 数据连接本文 3.1 节定义的JSON数据连接
    键排序

    是指对获取出来的列名做排序。默认即为不开启

    默认
    预读排名先遍历所有的数据,把列名获取出来,可用于 JSON 结构不整齐的情况,会稍微的降低效率。默认即为不开启默认
    查询语句

    输入查询语句

    $.store.book[*]

    查询出书店中所有的书信息,查询结果如下图所示:

    10.png

    注:$.store.book[*] 是 JSON 的固定引用方式,代表取出 store 下 book 的全部数据

    $.store.book[*].category 

    取出 category 列的数据,查询结果如下图所示:

    11.png

    $.store.book[?(@.price<10)]

    取出价格小于 10 的书籍,查询结果如下图所示:

    12.png

    3.3 传参方式介绍

    三种传参方式区别如下表所示:

    模式传递方式
    GET拼接到 URL 上
    POST_FORM需要传的是 key-value,可以添加动态参数
    POST_RAW只要 value 就可以了,可以添加动态参数

    传参方式具体介绍请参见:JSON 数据集插件 的2.6节内容。

    4. JSON 程序数据集

    使用 JavaScript 脚本,将 JSON 对象转换为二维表。这种方式可以解决所有不能直接用 JSON 数据集的场景,可以根据用户自己的数据结构定制脚本,从而实现和报表的对接。

    注: 新建和使用 JSON 程序数据集,需要使用 2019-04-03 及以后版本的 JAR 包,插件需要更新到 9.2.3 及以后版本。

    4.1 新建 JSON 程序数据集

    以管理员身份进入数据决策系统,点击「管理系统>数据连接>服务器数据集>JSON程序数据集」,数据集名称为「JSON程序数据集」,选择创建的 JSON 数据连接,输入脚本语句,点击「保存」按钮即可。如下图所示:

    13.png

    4.2 取出所有语句

    获取所有书籍的数据,脚本语句如下所示:

    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))

    脚本中内置函数和变量的说明如下表所示:

     内置函数和变量  含义
      $  表示 JSON 内容的对象
      unique(array)  将数组进行去重,主要用于列名处理
      console.log(info)  输出调试信息,会在日志文件中输出 INFO 级别的信息
      console.error(err)  输出错误级别的信息,会在日志文件中输出 ERROR 级别的信息
      merge(table, column)  合并数据集的内容和列名对象
      books.forEach
      JS 遍历数组方法

    查询出的数据如下图所示:

    1602747348420207.png

    4.3 条件取数

    取出价格小于 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));

    查询出的数据如下图所示:

    1602747513777013.png

    4.4 取出其中某一列

    取出所有书籍的作者集合,脚本语句如下所示:

    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);

    查询出的数据如下图所示:

    1602747629857846.png

    5. 使用JSON数据集/程序数据集

    1)以管理员身份进入数据决策系统,添加数据库表

    2)点击「服务器数据集」,可添加已创建的JSON数据集/程序数据集,如下图所示:

    17.png

    注:此处 JSON 数据若包含多种数据类型,则在前端使用中可能会有报错,建议尽量将数据处理成数据类型一致使用。  

    附件列表


    主题: 连接到数据
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!