文档首页 / 数据集概述

数据集概述

数据集的五种类型、公共数据集、创建入口、查询行数与超时的全局设置,以及各类型文档索引。

概述

数据集是报表取数的单位:一个数据集定义一份结果集(字段与行),单元格、图表、查询表单的下拉选项都从数据集读取。数据集不保存业务数据本身,运行时才向数据库或接口取数,只有「内置数据集」把数据存放在报表定义里。

赛特数据现有五种数据集类型(后端枚举 DatasetType):

类型 界面名称 数据来源 文档
sql SQL数据集 数据连接 + SQL 或存储过程 SQL 数据集
api API数据集 HTTP 接口(GET/POST) API 数据集
builtin 内置数据集 手工录入或粘贴的数据 内置数据集
derived 派生数据集 其他数据集的关联、筛选、汇总,或脚本 派生数据集
staged 运行时注入数据集 宿主系统在运行时推送的数据 运行时注入数据集

五种数据集类型汇入数据集,供单元格、图表与查询表单读取

存储过程不是独立类型,而是 SQL 数据集的一种写法,见 存储过程数据集。同样,没有独立的「脚本数据集」类型,脚本能力体现在三处:派生数据集的「脚本处理生成」、SQL 与 API 数据集的「后处理脚本」,以及 SQL 中的 #{}、${} 表达式,见 后处理脚本与计算字段。

功能入口

模板数据集

在报表设计器的数据集面板中,有「模板数据集」与「公共数据集」两个标签页。「模板数据集」只属于当前报表模板。

新建:点击拆分按钮「新建SQL数据集」,下拉菜单有「SQL数据集」「内置数据集」「API数据集」「派生数据集」「运行时注入数据集」。

数据集节点的右键菜单:

菜单项 作用
编辑 打开对应类型的编辑对话框
复制 复制数据集
转为 SQL 数据集… 把内置数据集改为 SQL 数据源
恢复为内置数据集 转换后恢复
生成明细表 用该数据集的字段生成明细表
删除 删除数据集

公共数据集

在「系统」菜单的「公共数据集」页面统一维护,供多张报表引用。见 公共数据集。

操作步骤

  1. 先在「系统 > 数据连接」建好连接,见 数据源配置。
  2. 打开报表设计器,在数据集面板点击「新建SQL数据集」,选择类型。
  3. 填写数据集内容,点击「数据预览」,确认字段与数据正确,见 数据集预览与调试。
  4. 点击「确定」保存。保存 SQL 数据集时系统会用 1 行的限制实际执行一次 SQL 来识别字段,因此 SQL 有语法错误时会在保存时报错。
  5. 在单元格中绑定数据集字段,见 单元格绑定与扩展。

属性说明

通用能力

各类型编辑对话框共有的能力:

能力 适用类型 说明
数据集名称 全部 报表内唯一,引用时使用
报表参数 SQL、API、派生 数据集中引用的 $参数名 会自动登记为报表参数,见 数据集参数
后处理脚本 SQL、API 查询后、过滤前对结果集做脚本处理
计算字段 SQL、API、内置、派生、运行时注入 最多 10 个,按行计算

查询行数与超时

SQL 数据集执行有行数上限和超时。取值按下列顺序确定:数据集自己填写的值优先,未填写则使用系统全局设置。

全局设置位于「系统 > 系统设置」的「报表」标签页「报表运行」面板:

设置项 取值范围 说明
输出每条SQL日志 开启 / 关闭(推荐) 配置键 app.report.run.sql.console.enabled。开启后日志含查询参数
SQL单次查询行数限制 界面 5000–100000 配置键 app.report.run.sql.query-row-limit,代码内默认 30000
SQL查询超时(秒) 5–3600 配置键 app.report.run.sql.query-timeout-seconds,默认 60

数据集自身的覆盖值:「查询行数限制」5000–200000,「查询超时(秒)」5–3600,超出范围时执行报错「SQL单次查询行数限制超出允许范围」或「SQL查询超时时间超出允许范围」。数据大屏对超时另有更短的上限。

SQL 结果超过行数上限时不会截断,而是报错「SQL查询结果超过最大行数限制(N行),请优化查询条件或联系管理员调整限制」。非 SQL 数据集(API、内置、派生、运行时注入)的行数限制由配置键 app.report.run.dataset.row-limit 控制,缺省与 SQL 的限制相同,超过时同样报错。

示例

一份典型的医院门诊报表使用三个数据集:

数据集名称 类型 内容
ds_visit SQL数据集 按日期和科室查询门诊量
ds_dept SQL数据集 科室列表,供查询表单的下拉框使用
ds_target 内置数据集 各科室月度目标值,手工录入

需要把门诊量与目标值放在同一张表里比较时,再新建一个派生数据集,把 ds_visit 与 ds_target 按科室关联,见 派生数据集。

注意事项

注意:目前编辑器中没有数据集级别的缓存选项,每次报表执行都会重新取数。代码里只有关于共享数据集缓存的待办注释,未实现。

注意:数据集的权限跟随所在功能:设计器里的数据集随报表访问权限,公共数据集页面与数据连接页面需要系统权限 datasource。数据集管理接口接受 datasource 或 report-design。

提示:数据量大的明细查询应在 SQL 里加条件过滤,不要依赖行数上限。

相关文档

联系我们

请填写您的信息,我们将在 1 个工作日内与您联系。