VeryReport · 帮助文档

数据清洗快速入门

以「销售订单区域汇总」为例,完成数据输入、清洗加工、聚合与写回目标表的轻量 ETL 全流程:新建任务、画布设计、预览校验、发布运行。

本文以销售订单清洗汇总为例,讲解 VeryReport 数据清洗(轻量 ETL):从源表读入、筛选与加工、聚合后写回目标表。无需手写 SQL,通过画布拖拽完成。

范围说明:数据清洗(轻量 ETL)位于「数据中心 → 数据清洗」(/data/etl),用于对数据源表或数据集做可视化加工,结果写回数据库表。与数据集(建模/语义层)、自助取数(拖拽导出)、Vera 问数(自然语言查数)是不同模块。能力依据《数据清洗设计》文档。

1. 功能概述

数据清洗是「数据源 → 数据集 → 分析可视化」链路中的加工环节。设计器采用 DAG(有向无环图)画布:节点间以内存行数据(List<Map>)传递,拓扑排序后逐节点执行。任务定义存于 bi_etl_job.definition_json,运行记录存于 bi_etl_run_log,并与资源树(resource_type=ETL)统一管理。

阶段说明入口
准备数据配置数据源或数据集数据中心 → 数据源 / 数据集
新建任务创建清洗任务并进入设计器数据清洗 → 新建
画布设计拖拽节点、连线、配置ETL 设计器
预览校验节点预览 + DAG 校验设计器工具栏 / 节点右键
发布运行保存发布、手动或周期运行保存并发布 / 运行

2. 能达到的目标

2.1 预期效果(本示例)

3. 操作步骤

3.1 准备数据源

  1. 数据中心 → 数据源 配置 JDBC 连接(MySQL、Oracle 等)。
  2. 确认源库存在业务表(如 orders),且目标库可写入汇总表(如 region_summary)。

3.2 新建清洗任务

  1. 进入 数据中心 → 数据清洗/data/etl)。
  2. 左侧资源树选择文件夹,点击 新建 → 清洗任务,或在列表页点击新建。
  3. 系统创建任务并跳转 ETL 设计器/data/etl/design/{jobId})。
  4. 顶部双击可修改任务名称,如「销售订单区域汇总」。

3.3 搭建画布(三栏设计器)

设计器布局:左侧节点面板中央 Vue Flow 画布右侧配置面板

节点分类作用
数据输入输入从数据源表或数据集读取
清洗加工预处理筛选、计算字段、类型转换、合并拆分等
关联转换多表 JOIN(内/左/右/全连接)
合并转换多路上游 UNION 合并
聚合转换分组 + SUM/AVG/COUNT 等汇总
转置转换行转列 / 列转行(宽表 ↔ 长表)
数据输出输出写入已有表或新建表

本示例最小链路:

数据输入(orders) → 清洗加工(筛选+计算) → 聚合(按区域) → 数据输出(region_summary)

步骤 A:添加「数据输入」节点

  1. 从左侧面板拖入 数据输入 到画布。
  2. 右侧配置:
    • 输入类型选 数据源表(或数据集);
    • 选择数据源与表名 orders
    • 勾选需要的字段(如 order_id、region、amount、order_date)。
  3. 点击 预览 查看前 100 行样例数据。

步骤 B:添加「清洗加工」节点

  1. 拖入 清洗加工,将输入节点连线到清洗节点。
  2. 在右侧「加工操作」中依次添加:
    • 筛选:字段 amount,运算符 >,值 0;
    • 计算字段:total_with_tax = amount * 1.13;
    • (可选)类型转换:amount → 数值类型。
  3. 保存配置后预览,确认加工结果正确。
操作说明示例
FILTER行筛选订单金额 > 0
CALC_FIELD计算字段amount * 1.13 → total_with_tax
TYPE_CAST类型转换字符串转数值
VALUE_REPLACE值替换空值 → 未知
RENAME_FIELD重命名字段user_id → 用户ID
REMOVE_FIELD删除字段去掉冗余列
COPY_FIELD复制字段复制一列作备份
CONCAT_FIELD合并字段姓 + 名 → 全名
SPLIT_FIELD拆分字段地址按分隔符拆分
GROUP_ASSIGN分组赋值按规则给新字段赋值

步骤 C:添加「聚合」与「数据输出」

  1. 拖入 聚合 节点并连线:
    • 分组字段:region(区域);
    • 汇总指标:amount → SUM,别名 sales_total。
  2. 拖入 数据输出 并连线到聚合节点:
    • 输出类型:已有表新建表
    • 选择目标数据源与表名 region_summary
    • 写入模式选 覆盖(OVERWRITE)追加(APPEND)
写入模式说明
OVERWRITE先清空目标表再写入(覆盖)
APPEND追加写入,主键冲突会报错
UPSERT当前版本等同 APPEND

3.4 校验、保存与发布

  1. 画布必须包含至少一个数据输入和一个数据输出,且节点间有连线、无环路;顶部徽章会提示配置错误数量。
  2. 点击 保存 写入 definition_json
  3. 配置无误后点 保存并发布,任务状态变为「已发布」。
  4. (可选)点 占位符管理 配置 ${region}${yyyyMMdd} 等动态参数,用于表名或筛选值。

3.5 运行任务

  1. 在设计器或列表页点击 运行;若配置了占位符,可通过「带参数运行」临时覆盖。
  2. 运行中状态显示为「运行中」,可点 终止 中途停止。
  3. 完成后查看「运行成功 / 失败」状态;打开 运行历史 查看每次输入/输出行数与执行日志。
  4. 通过 运行配置(⋮ 更多菜单)设置周期调度:手动 / 每日 / 每周 / 每月。

4. 占位符(可选)

占位符用于按天/按租户动态替换表名或条件值,常见写法:

占位符说明
${yyyyMMdd}当天日期,如 20260710
${yyyy-MM-dd}当天日期带横线
${yyyyMMdd-1}昨天
${region}用户自定义键值(在占位符管理中配置)
${jobId} / ${runId}系统注入,不可修改

生效字段包括:输入/输出表名,清洗节点的筛选值、表达式、替换值等。

5. 使用限制与注意事项

限制项建议值说明
数据输入节点最多 5 个多源关联/合并时使用
数据输出节点仅 1 个每个任务一个落库目标
单节点字段数最多 200 个过多字段影响性能
执行模式内存执行大数据量建议控制输入范围或分批

6. 权限说明

权限点能力
data:etl:view查看任务与运行记录
data:etl:create新建任务 / 文件夹
data:etl:edit编辑画布、发布、调度配置
data:etl:delete删除 / 软删除任务
data:etl:execute手动运行、终止运行

使用数据集作为输入时,还需具备对应数据集的 USE 权限。

上一篇新建数据集下一篇数据填报概述