数据源设置

多种数据源支持

数据源设置决定“数据从哪里来、请求需要什么参数、返回哪些字段”。建议按以下顺序配置:

  1. 选择数据源类型并填写连接或服务信息。
  2. 定义入参,必要时把入参注入到全局作用域变量。
  3. 定义出参,确保字段名和接口或 SQL 实际返回值一致。
  4. 使用数据集预览检查数据结构和示例值。
  5. 把字段拖入单元格,设置扩展方向后进行报表预览。
数据源 适用场景 配置重点
低代码服务中心 服务已经在低代码平台登记 服务分类、服务、方法、出入参
HTTP 请求 直接调用 GET 或 POST 接口 请求地址、请求方式、请求头脚本、出参过滤器
RPC 已知 RPC 服务名和方法名 服务名、方法名、出入参、出参过滤器
数据库查询 使用已维护的 JDBC 连接执行 SQL 数据库连接、SQL、查询参数、预览行数
全局数据集 多张报表复用同一数据集 全局定义、报表内引用、变更影响范围
关联数据集 按条件合并多个已有数据集 来源数据集、合并条件、字段冲突
树数据集 将 ID/父 ID 数据转为层级字段 原始数据集、当前 ID、父 ID、生成层级

验证方法:数据集预览中应能看到与出参定义一致的列名和数据类型。预览失败时,先检查数据源本身,再检查入参默认值或作用域注入,最后检查出参过滤器。

常见问题:数据集预览成功但报表为空,通常不是连接问题,而是字段尚未绑定、字段名不一致、扩展方向为“不扩展”,或过滤条件把数据全部过滤掉。

设计器左下角是报表数据集配置区,可以支持多类型的数据源,例如低代码服务中心、Http请求、Rpc框架标准请求、数据库查询。根据需要的出入参进行配置,在配置出入参的时候,值的类型可以是string、number、boolean,还可以是复杂类型object、array,如果是复杂类型,可以继续添加子项。

当我们配置了数据集后,可以使用数据集中的出参字段生成报表内容,而不只是填入静态数据,我们可以通过拖拽的形式将数据集出参字段与单元格元数据进行绑定,用来生成动态报表。

设计器报表数据集配置区

低代码服务中心

数据源类型选择服务中心后,下拉框展示的是低代码平台配置的一些服务方法(一个方法我们可以理解为一个接口),我们可以根据当前报表需要的数据去选择服务分类、服务和方法。

HTTP 请求

HTTP 数据源支持 GET 和 POST。请求地址和请求方式为基础配置;接口需要额外请求头时,点击“请求头设置”,脚本必须返回一个对象,例如:

return {
  "Content-Type": "application/json",
  "Authorization": "Bearer your-token"
};

接口返回结构与报表需要的数据结构不一致时,使用“出参过滤器”。过滤器中通过 $$result 访问原始返回值,并返回真正用于出参映射的数据。例如接口返回 { body: { items: [...] } }:

return $$result.body.items;

验证方法:先在出参中定义一至两个真实字段,再预览数据。若预览为空,分别检查请求地址、请求方式、请求头脚本是否返回对象,以及过滤器路径是否与实际返回结构一致。

注意:过滤器修改了后续出参映射所看到的根节点。设置过滤器后,出参字段应按照过滤后的结构定义,而不是继续按照原始响应定义。

数据源类型选择Http请求之后,根据要调用的接口信息,填入请求地址跟请求方式,请求方式为POST请求或GET请求。

如果需要设置额外的请求头,可以点击请求头脚本按钮,在弹出的编辑器中配置,如下图所示:

配置完脚本之后点击确定,在预览的时候会根据配置的请求地址发送请求,在这个请求头中会带有请求头脚本中配置的信息,如下图所示:

RPC 框架标准请求

数据源类型选择RPC之后,根据要调用的接口信息,输入服务名跟方法名。

数据库查询

定义数据库连接

数据库查询首先需要在顶部菜单定义数据库连接。

数据库连接的完整字段和验证步骤见“全局设置 → 定义数据库连接”。

配置数据集

配置查询

数据库查询可以配置多个数据集。选择数据源类型为数据库查询后,进入新增模式,依次输入名称(仅可输入字母和数字,作为数据集的名称)、 选择数据库连接(在顶部菜单中已定义)、 并编写SQL查询语句。

注:左栏支持搜索数据库中的表,双击表名可将其填入SQL编辑框中

定义参数

此处可定义数据库入参,入参可作为SQL语句中的查询条件参数。

说明:参数结构见“出入参数据集”;需要让检索控件或表达式修改入参时,使用“值类型 → 变量注入”绑定全局作用域变量。

一些配置举例:

${} 里面支持 js表达式的语法

1. 基本用法
SELECT * FROM hi_sys_app WHERE cd = '${cd}'

2. 条件判断用法
SELECT * FROM hi_sys_app WHERE 1=1 ${cd.length>0? "AND cd ='"+cd+"'":""}
//当cd不为空,加上AND cd ='cd'的条件,否则不加

3. 当name参数是array,转换为sql的IN条件用法
SELECT * FROM hi_sys_app WHERE name IN (${name.map(v=>"'"+v+"'").join(",")})
//name是一个数组["张三","李四"], 然后转换成 name IN ('张三','李四')
//同样由于name是数组,也支持 name.length>0 的条件判断

4. 当需要根据条件去写不同的sql的时候,可以参考
${ true
  ? `SELECT * FROM hi_sys_app WHERE cd = '`+ cd+`'`
  : `SELECT * FROM hi_sys_app`
}
SQL 配置

点击配置定义,在这里可以定义:

sql超时时间 (指的是最多允许该sql执行的时间)

查询数量(指的是最多允许sql返回的查询数量,如果sql返回的查询数量超过了定义数量,则会报错)

预览查询数据

可点击“预览”按钮预览SQL查询数据(如有参数,将使用参数定义中的默认值作为SQL参数值),默认预览200行数据(支持手动修改)。

全局数据集

什么是全局数据集

全局数据集是指报表在全局范围内定义和存储的数据集合,具有以下特点:

  1. 集中管理:数据集定义保存在全局,而非单个报表中
  2. 共享使用:可以被多个报表共同调用
  3. 统一维护:只需在维护处修改一次,所有引用该数据集的报表都会自动更新

全局数据集配置

(1)在报表顶部全局设置中打开,选择全局数据集

(2)增加、编辑全局数据集。配置方式与“数据库查询 → 配置数据集”一致,需要选择连接、定义参数、编写 SQL 并完成预览。

(3)保存后可以直接在报表中使用(使用方式跟数据集的使用方式一样)

注:全局数据集在报表搜索栏的下拉组件中、在报表中的字典配置中都可以使用

关联数据集

什么是关联数据集

关联数据集就是将两个或多个数据集关联起来,形成一个合集。

  1. 相同字段合并:如A、B数据集中都有 name字段,会合并
  2. 不同字段扩展:如A数据集有 name字段,B数据集中有sex字段,关联后的数据集为 name, sex 字段
  3. 数据合并:如A数据集10条数据,B数据集5条数据,合并后为15条数据

关联数据集配置

(1)报表设计器左侧面板数据集配置中打开,选择关联数据集

(2)报表设计器左侧面板数据集配置中打开,选择关联数据集

  数据集可选择 数据库查询数据集 和 全局数据集

比如:

1)选择:选择ds1 和 ds2的数据集关联

2)条件:条件公式的含义是满足这个条件,则该数据集会合并到关联数据集中。 图片中满足作用域 options 值为 "ds1"的时候,ds1数据集才会合并到关联数据集中。

(3)关联数据集数据预览

可以查看数据集关联后的数据

树数据集

什么是树数据集

树数据集,就是将数据通过下拉树或者折叠树来显示层级结构,比如说下图的省市区层级结构.

构建树数据集适用的数据表结构

要构建树数据集,需要从一个原始的数据集中去构建生成。

在OwlReport中,这种表结构可以支持构建,包含当前ID和上级ID的数据结构

树数据集配置

(1) 在数据集面板中选择树数据集

(2)树数据集配置界面

如下图:输入树数据集的名称, 选择原始数据集,再选择原始数据集的 当前ID 和父ID的字段

(3)树数据集预览界面

如下图: 生成了树数据集的数据结构,生成了FR_GEN_0, FR_GEN_1, FR_GEN_2 这3个字段。

这3个字段就代表着该树数据集的 3层树结构字段。

树数据集报表配置

树数据集一般都配置成树结构的报表(折叠树)

报表配置可以参考:

树报表示例