文档首页 / 派生数据集

派生数据集

基于已有数据集做关联、筛选、排序、分组汇总或脚本处理,生成新的数据集;含配置项与运行时行为。

概述

派生数据集以模板内已有的数据集作为「数据源」,在报表引擎内存里做关联、筛选、排序、投影与分组汇总,生成一份新数据集。它不访问数据库,适合把 SQL 数据集与内置数据集(如目标值)合并对比。

生成方式有两种:「界面化配置」和「脚本处理生成」(这是脚本能力的入口之一)。

功能入口

「新建SQL数据集」拆分按钮 >「派生数据集」,打开「编辑派生数据集」,在「配置」标签页操作。预览提示:「当前版本预览仅支持模板内数据集」。

操作步骤

界面化配置

  1. 填「数据集名称」,「生成方式」选「界面化配置」。
  2. 在「数据源」列表点击「添加数据源」,为每个源数据集设置「别名」「源数据集」以及必需或可空。界面化配置目前最多使用两个数据源。
  3. 在「关联设置」选择左侧数据源、「关联类型」、右侧数据源,并设置关联条件(左字段 = 右字段)。
  4. 需要时配置「筛选设置」「排序设置」。
  5. 在投影字段中确定输出字段,可点「从源字段导入」「智能补全」「添加字段」。
  6. 需要汇总时设置「分组与汇总」。
  7. 预览后保存。

脚本处理生成

  1. 「生成方式」选「脚本处理生成」,添加数据源。
  2. 编写脚本,必须非空(默认 return [])。
  3. 配置结果字段定义并预览。

属性说明

基础信息

属性 说明 取值/默认值
数据集名称 数据集名称 必填
生成方式 「界面化配置」或「脚本处理生成」 界面化配置
预览行数 预览及运行时的结果行数上限 1–5000,默认 100
超时(ms) 超时配置 1000–300000,默认 15000

预览行数如果设置了值,运行时也会按它截断结果。「超时(ms)」在后端只被解析保存,检索源码没有发现其被用于执行控制,请不要依赖它。

关联类型

界面文案 含义
仅保留两侧都匹配的数据 INNER
保留左侧全部数据 LEFT
保留右侧全部数据 RIGHT
两侧全部保留 FULL

关联条件有两个开关:大小写「区分大小写」或「忽略大小写」(默认忽略),空值处理「NULL=空」或「NULL不相等」(默认 NULL=空)。关联按嵌套循环执行,数据量大时会慢。

筛选、排序、投影

项 说明
筛选设置 表达式,字段写作 别名.字段,例如 orders.amount > 100 && customers.level == 'VIP'
排序设置 选择数据源、字段与「升序」「降序」
投影字段 输出字段、显示名、来源别名、来源字段、数据转换(表达式模板)、类型
DISTINCT 「DISTINCT」去重或「保留重复」

分组与汇总

每个字段选择角色:「仅明细」「分组键」「参与汇总」。汇总方式有首条、求和、平均值、计数、最小值、最大值。存在汇总的同时又有「仅明细」字段时,保存报错。

脚本模式

脚本返回值支持 QueryResult、RecordSet、List<Map>、Map。脚本内可使用:

函数 说明
rawDataset(名称) 返回指定数据集的原始完整结果(全部行)
rawDataset(名称, 字段) 返回该字段所有行的值列表
dataset(名称[, 字段]) 读取数据集,定义在报表函数中
$参数名 报表参数

示例

把科室门诊量(SQL 数据集 ds_visit,字段 dept_code、visit_cnt)与目标值(内置数据集 ds_target,字段 dept_code、target)关联:

配置 值
数据源 别名 v = ds_visit;别名 t = ds_target
关联类型 保留左侧全部数据
关联条件 v.dept_code = t.dept_code
投影字段 dept_code(来源 v.dept_code)、visit_cnt(来源 v.visit_cnt)、target(来源 t.target)
筛选设置 v.visit_cnt > 0

预览得到每个有门诊量的科室及其目标值,没有目标的科室 target 为空。之后可在报表中直接用 visit_cnt / target 计算完成率。

脚本模式的最简示例:

return rawDataset('ds_visit')

注意事项

注意:派生数据集读取的是源数据集的原始完整结果,源数据集的行数限制仍然生效。

注意:派生数据集受非 SQL 数据集行数限制,超过时报错。

提示:能在 SQL 里关联的,优先在 SQL 里关联,数据库比内存嵌套循环更快;派生数据集适合跨数据源合并。

相关文档

联系我们

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