ETL:源、转换、目标与增量
适用版本:1.0.0。任务 → 新增/编辑 → 插件 ETL。
入口与准备
使用 ADMIN 创建、配置和保存任务;ADMIN 或 OPERATOR 可以执行已发布定义,详细日志和输入输出变量由 ADMIN 查看。资源必须启用并可被执行节点访问。任务公共超时、重试和版本规则见任务,角色动作见权限矩阵。
按配置目标定位
来源 / 类型与资源 · 来源 / 数据库 · 来源 / 文件与格式 · 来源 / 消息队列 · 目标 / 数据库写入 · 目标 / 文件输出 · 数据库增量 · 文件增量 · 消息摄入 · 执行限制 · 映射 · 重试
字段说明
“默认值”指 1.0.0 新建表单的初始值;空表示尚未填写,不表示必填项可以省略。显示条件决定当前分支中是否出现字段。“条件必填”只在对应分支启用时要求填写。转换/校验规则的示例值用于解释填写方式,不能当作运行时缺省值。
来源 / 类型与资源
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 来源类型 | 选择 | DATABASE | 始终 | 来源配置 |
| 资源 | 条件必填 | 空 | 始终 | 来源配置 |
- 来源类型:选择 DATABASE、FILE、KAFKA 或 RABBITMQ,并决定后续来源字段。
- 资源:引用与来源类型匹配的已配置资源,连接和认证来自该资源。
来源 / 数据库
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 查询 SQL | 条件必填 | 空 | 数据库源,或文件 SQL 读取 | 来源配置 |
| 查询提取批量 | 有默认值 | 2000 | 数据库源 | 来源配置 |
| 查询参数(JSON) | 有默认值 | {} | 数据库源,或文件 SQL 读取 | 来源配置 |
| 前置 SQL 数组(JSON) | 有默认值 | [] | 数据库源 | 来源配置 |
- 查询 SQL:定义数据库查询或文件暂存后的 SQL 查询;值参数使用命名绑定。
- 查询提取批量:范围 1–100000
- 查询参数(JSON):提供命名 SQL 参数的 JSON 值;单一变量占位符可保留值类型。
- 前置 SQL 数组(JSON):在来源数据库读取前依次执行准备 SQL。
来源 / 文件与格式
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 文件路径 | 条件必填 | 空 | 文件源 | 来源配置 |
| 文件格式 | 选择 | CSV | 文件源 | 来源配置 |
| 读取方式 | 选择 | DIRECT | 文件源 | 来源配置 |
| 字符编码 | 条件必填 | UTF-8 | 文件源 | 来源配置 |
| 分隔符 | 有默认值 | , | CSV/TXT | 来源配置 |
| 引号 | 有默认值 | " | CSV/TXT | 来源配置 |
| 转义符 | 有默认值 | " | CSV/TXT | 来源配置 |
| 首行为表头 | 有默认值 | true | CSV/TXT/EXCEL | 来源配置 |
| 跳过行数 | 有默认值 | 0 | CSV/TXT | 来源配置 |
| 表头行号 | 有默认值 | 0 | EXCEL | 来源配置 |
| 起始行号 | 可选 | 空 | EXCEL | 来源配置 |
| 工作表名称 | 可选 | 空 | EXCEL 单工作表 | 来源配置 |
| 工作表序号 | 可选 | 空 | EXCEL 单工作表 | 来源配置 |
| 正则读取模式 | 选择 | SINGLE_LINE | REGEX | 来源配置 |
| 内容正则 | 条件必填 | 空 | REGEX | 来源配置 |
| 块起始正则 | 可选 | 空 | REGEX + BLOCK | 来源配置 |
| 块结束正则 | 可选 | 空 | REGEX + BLOCK | 来源配置 |
| 每块最大行数 | 有默认值 | 10000 | REGEX | 来源配置 |
| 每块最大字符数 | 有默认值 | 4194304 | REGEX | 来源配置 |
| 正则字段映射(JSON) | REGEX 条件必填,至少一项 | [] | REGEX | 来源配置 |
| 暂存表名 | 有默认值 | SOURCE_DATA | 文件 SQL 读取 | 来源配置 |
| 暂存列名 | 可选 | 空 | 文件 SQL 读取 | 来源配置 |
| 多工作表配置(JSON) | 有默认值 | [] | EXCEL + SQL 读取,多工作表 | 来源配置 |
- 文件路径:在文件资源范围内指定读取路径。
- 文件格式:选择文件解析格式,并决定可用读取方式。
- 读取方式:直接读取文件记录,或先暂存后执行 SQL。
- 字符编码:指定文本文件解码字符集。
- 分隔符:指定 CSV/TXT 字段分隔符。
- 引号:指定带分隔符等特殊内容的字段引号。
- 转义符:指定引号内特殊字符的转义字符。
- 首行为表头:控制是否从表头取得字段名称。
- 跳过行数:范围 0–2147483647
- 表头行号:范围 0–2147483647
- 起始行号:范围 0–2147483647
- 工作表名称:按名称选择单个 Excel 工作表。
- 工作表序号:范围 0–2147483647
- 正则读取模式:选择逐行匹配或按块读取后匹配。
- 内容正则:从文本行或文本块中提取匹配组。
- 块起始正则:标识一个待解析文本块的起始位置。
- 块结束正则:标识一个待解析文本块的结束位置。
- 每块最大行数:范围 1–1000000
- 每块最大字符数:范围 1–67108864
- 正则字段映射(JSON):将正则匹配组映射为记录字段,可设置未匹配默认值。
- 暂存表名:指定文件 SQL 读取使用的暂存表名称。
- 暂存列名:显式指定暂存列名称;未填写时按文件解析结果取得。
- 多工作表配置(JSON):为多个 Excel 工作表分别指定工作表选择、表头与暂存表。
来源 / 消息队列
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| Topic(主题) | 条件必填 | 空 | Kafka 源 | 来源配置 |
| 消费组 | 条件必填 | 空 | Kafka 源 | 来源配置 |
| 队列名称 | 条件必填 | 空 | RabbitMQ 源 | 来源配置 |
| 首次消费位置 | 选择 | EARLIEST | Kafka 源 | 来源配置 |
| 预取数量(条) | 有默认值 | 100 | RabbitMQ 源 | 来源配置 |
- Topic(主题):读取消息的 Kafka 主题。
- 消费组:用于保存 Kafka 消费进度的消费组。
- 队列名称:读取消息的 RabbitMQ 队列。
- 首次消费位置:仅在消费组没有已提交位置时选择起始位置。
- 预取数量(条):范围 1–1000
目标 / 数据库写入
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 目标类型 | 选择 | DATABASE | 始终;消息源仅 DATABASE | 目标配置 |
| 资源 | 条件必填 | 空 | 始终 | 目标配置 |
| Schema(可选) | 可选 | 空 | DATABASE | 目标配置 |
| 目标表 | 条件必填 | 空 | DATABASE | 目标配置 |
| 写入方式 | 选择 | UPSERT | DATABASE;消息源仅 UPSERT/INSERT_ONLY | 目标配置 |
| 逻辑键 | UPSERT/INSERT_ONLY/UPDATE_ONLY 条件必填 | 空 | DATABASE | 目标配置 |
| 字段映射方式 | 选择 | AUTO | 始终 | 目标配置 |
| 排除来源字段(可选) | 可选 | 空 | AUTO 映射 | 目标配置 |
| 事务范围 | 选择 | RUN | 非消息源 + DATABASE;消息源固定 BATCH | 目标配置 |
| 空值策略 | 选择 | KEEP_TARGET | DATABASE | 目标配置 |
| 按列空值策略(JSON) | 有默认值 | {} | DATABASE | 目标配置 |
| 记录保护(JSON) | 有默认值 | null | DATABASE | 目标配置 |
| SCD2 配置(JSON) | 有默认值 | null | DATABASE + SCD2 | 目标配置 |
| 前置 SQL 数组(JSON) | 有默认值 | [] | 非消息源 + DATABASE | 目标配置 |
| 后置 SQL 数组(JSON) | 有默认值 | [] | 非消息源 + DATABASE | 目标配置 |
- 目标类型:选择写入数据库或文件;消息来源仅允许数据库目标。
- 资源:引用目标数据库或文件资源。
- Schema(可选):指定目标表所在的 Schema。
- 目标表:指定写入的目标表。
- 写入方式:选择追加、插入、更新、合并或 SCD2 写入语义。
- 逻辑键:填写用于识别目标记录的目标列名。
- 字段映射方式:选择自动同名映射或手工字段映射。
- 排除来源字段(可选):在自动映射中排除指定来源字段。
- 事务范围:控制按整次运行或按写入批次提交事务。
- 空值策略:设置来源空值保留或覆盖目标值的默认策略。
- 按列空值策略(JSON):按目标列覆盖默认空值策略。
- 记录保护(JSON):按目标记录中的字段和值配置写入保护。
- SCD2 配置(JSON):配置业务键、变化比较和历史有效期字段。
- 前置 SQL 数组(JSON):在目标写入前执行准备 SQL;消息和文件增量有额外限制。
- 后置 SQL 数组(JSON):在目标写入后执行收尾 SQL;消息和文件增量有额外限制。
目标 / 文件输出
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 文件路径 | 条件必填 | 空 | FILE | 目标配置 |
| 字符编码 | 条件必填 | UTF-8 | FILE | 目标配置 |
| 分隔符 | 有默认值 | , | FILE | 目标配置 |
| 引号 | 有默认值 | " | FILE | 目标配置 |
| 首行为表头 | 有默认值 | true | FILE | 目标配置 |
| 文件已存在时 | 选择 | FAIL | FILE | 目标配置 |
| 空数据输出 | 选择 | CREATE_WITH_HEADER | FILE | 目标配置 |
- 文件路径:在目标文件资源范围内指定输出路径。
- 字符编码:指定输出文本文件的字符集。
- 分隔符:指定输出文件的字段分隔符。
- 引号:指定输出字段的引号字符。
- 首行为表头:控制输出文件是否包含表头。
- 文件已存在时:目标文件已存在时选择失败、覆盖或跳过。
- 空数据输出:无数据时选择带表头文件、空文件或不创建文件。
数据库增量
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 启用增量 | 有默认值 | false | 非消息源 | 增量检查点 |
| 检查点键 | 条件必填 | etl-v1 | 启用增量 | 增量检查点 |
| 标记类型 | 选择 | LONG | 启用增量 | 增量检查点 |
| 初始标记 | 条件必填 | 0 | 启用增量 | 增量检查点 |
| 标记字段 | 条件必填 | 空 | 数据库增量 | 增量检查点 |
| 上界查询 SQL | 条件必填 | 空 | 数据库增量 | 增量检查点 |
| 同值排序字段 | 可选 | 空 | 数据库增量 | 增量检查点 |
| 排序初始值(JSON 数组) | 有默认值 | [] | 数据库增量 | 增量检查点 |
| 允许越过无效记录推进 | 有默认值 | false | 数据库增量 | 增量检查点 |
- 启用增量:开启基于数据库水位或文件标记的增量处理;不用于消息源。
- 检查点键:标识需要持续复用的增量检查点。
- 标记类型:选择比较数据库水位或文件标记的类型。
- 初始标记:尚无检查点时使用的起始水位。
- 标记字段:来源结果中用于推进数据库检查点的字段。
- 上界查询 SQL:在本次读取前查询稳定的水位上界。
- 同值排序字段:按顺序指定相同水位值下的稳定排序字段。
- 排序初始值(JSON 数组):提供与同值排序字段一一对应的初始值。
- 允许越过无效记录推进:允许检查点越过被过滤的无效记录,可能使其不再自动重读。
文件增量
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 标记位置 | 选择 | NAME | 文件增量 | 文件增量 |
| 匹配方式 | 选择 | TEMPLATE | 文件增量 | 文件增量 |
| 匹配表达式 | 条件必填 | orders_{mark}_*.csv | 文件增量 | 文件增量 |
| 源标记格式(可选) | 可选 | 空 | 文件增量 + DATE/TIMESTAMP | 文件增量 |
| 解析时区 | 有默认值 | UTC | 文件增量 + DATE/TIMESTAMP | 文件增量 |
| 选择方式 | 选择 | STRICT | 文件增量 | 文件增量 |
| 回看范围 | 条件必填 | 2 | 文件增量 + LOOKBACK | 文件增量 |
| 指定下界 | 条件必填 | 空 | 文件增量 + LOWER_BOUND | 文件增量 |
| 上界(可选) | 可选 | 空 | 文件增量 | 文件增量 |
| 已完成文件内容变更时 | 选择 | FAIL | 文件增量 | 文件增量 |
| 递归扫描目录 | 有默认值 | false | 文件增量 | 文件增量 |
| 最大扫描深度 | 有默认值 | 8 | 文件增量 | 文件增量 |
| 最大扫描条目数 | 有默认值 | 10000 | 文件增量 | 文件增量 |
| 单次最大文件数 | 有默认值 | 1000 | 文件增量 | 文件增量 |
| 文件总量上限(字节) | 有默认值 | 1073741824 | 文件增量 | 文件增量 |
| 稳定时间(秒) | 有默认值 | 60 | 文件增量 | 文件增量 |
| 完成标识后缀(可选) | 可选 | 空 | 文件增量 | 文件增量 |
- 标记位置:从文件名或相对路径中提取增量标记。
- 匹配方式:选择模板或正则表达式匹配标记。
- 匹配表达式:匹配文件并提取标记;模板使用 {mark}。
- 源标记格式(可选):指定日期或时间戳标记在源文件中的格式。
- 解析时区:解析日期时间标记时使用的时区。
- 选择方式:选择严格推进、回看窗口或指定下界。
- 回看范围:配置需要重新考虑的标记回看范围。
- 指定下界:显式设置文件标记选择下界。
- 上界(可选):可选限制本次处理的文件标记上界。
- 已完成文件内容变更时:已完成文件内容变化时选择失败或重新处理。
- 递归扫描目录:开启后在限制范围内递归查找文件。
- 最大扫描深度:范围 0–32
- 最大扫描条目数:范围 1–100000
- 单次最大文件数:范围 1–10000
- 文件总量上限(字节):范围 1–107374182400
- 稳定时间(秒):范围 0–604800
- 完成标识后缀(可选):仅处理具有对应完成标识文件的源文件。
消息摄入
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 单次消息数(条) | 有默认值 | 10000 | Kafka/RabbitMQ 源 | 消息读取 |
| 接收窗口(秒) | 有默认值 | 60 | Kafka/RabbitMQ 源 | 消息读取 |
| 连续空闲等待(秒) | 有默认值 | 5 | Kafka/RabbitMQ 源 | 消息读取 |
| 处理批量(条) | 有默认值 | 100 | Kafka/RabbitMQ 源 | 消息读取 |
| 不满批提交间隔(毫秒) | 有默认值 | 1000 | Kafka/RabbitMQ 源 | 消息读取 |
| 单条消息上限(字节) | 有默认值 | 1048576 | Kafka/RabbitMQ 源 | 消息读取 |
| 解压后上限(字节) | 有默认值 | 8388608 | Kafka/RabbitMQ 源 | 消息读取 |
| 累计载荷上限(字节) | 有默认值 | 1073741824 | Kafka/RabbitMQ 源 | 消息读取 |
| 接收缓冲上限(字节) | 有默认值 | 33554432 | Kafka/RabbitMQ 源 | 消息读取 |
| JSON 嵌套深度上限 | 有默认值 | 32 | Kafka/RabbitMQ 源 | 消息读取 |
- 单次消息数(条):范围 1–10000000
- 接收窗口(秒):范围 1–3600
- 连续空闲等待(秒):范围 1–300
- 处理批量(条):范围 1–1000
- 不满批提交间隔(毫秒):范围 100–10000
- 单条消息上限(字节):范围 1024–16777216
- 解压后上限(字节):范围 1024–67108864
- 累计载荷上限(字节):范围 1024–107374182400
- 接收缓冲上限(字节):范围 1024–268435456
- JSON 嵌套深度上限:范围 1–100
执行限制
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 读取批量 | 有默认值 | 2000 | 高级执行限制 | 执行限制 |
| 写入批量 | 有默认值 | 1000 | 高级执行限制 | 执行限制 |
| 查询超时(秒) | 有默认值 | 300 | 高级执行限制 | 执行限制 |
| 最大记录数 | 有默认值 | 10000000 | 高级执行限制 | 执行限制 |
| 单文件上限(字节) | 有默认值 | 1073741824 | 高级执行限制 | 执行限制 |
| 展开文本字符上限 | 有默认值 | 268435456 | 高级执行限制 | 执行限制 |
| Excel 单元格上限 | 有默认值 | 50000000 | 高级执行限制 | 执行限制 |
| 暂存单元格上限 | 有默认值 | 50000000 | 高级执行限制 | 执行限制 |
| 每条记录字段上限 | 有默认值 | 1000 | 高级执行限制 | 执行限制 |
| 单字段字符上限 | 有默认值 | 1048576 | 高级执行限制 | 执行限制 |
| Excel 工作表上限 | 有默认值 | 100 | 高级执行限制 | 执行限制 |
- 读取批量:范围 1–100000
- 写入批量:范围 1–100000
- 查询超时(秒):范围 1–86400
- 最大记录数:范围 1–9223372036854775807
- 单文件上限(字节):范围 1–9223372036854775807
- 展开文本字符上限:范围 1–9223372036854775807
- Excel 单元格上限:范围 1–9223372036854775807
- 暂存单元格上限:范围 1–9223372036854775807
- 每条记录字段上限:范围 1–10000
- 单字段字符上限:范围 1–16777216
- Excel 工作表上限:范围 1–10000
映射
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 字段映射 | MANUAL 至少一项;AUTO 可选 | 空映射 | 始终 | 当前任务版本 |
- 字段映射:技术配置为目标列→来源字段;逻辑键填写目标列。
重试
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 允许非幂等写入重试 | APPEND 且配置任务重试时须显式允许 | false | 非消息源 | 当前任务版本 |
- 允许非幂等写入重试:显式允许追加写入等非幂等操作重试。
转换 / 字段映射
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 规则参数 | 按规则填写 | 见下方规则示例 | 规则类型 FIELD_MAPPING | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 规则参数 | {"order_id":"id"} |
示例是新增规则时的预填内容,不是运行时缺省;请替换为实际业务字段。
转换 / 默认值
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 规则参数 | 按规则填写 | 见下方规则示例 | 规则类型 DEFAULT_VALUE | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 规则参数 | {"status":"NEW"} |
示例是新增规则时的预填内容;按字段需要配置实际默认值。
转换 / 去除首尾空白
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 字段列表 | 必填 | 见下方规则示例 | 规则类型 TRIM | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 字段列表 | ["name"] |
转换 / 值替换
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 处理字段 | 必填 | 见下方规则示例 | 规则类型 REPLACE | 当前任务版本 |
| 替换对照 | 可选 | 见下方规则示例 | 规则类型 REPLACE | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 处理字段 | status |
| 替换对照 | {"old":"new"} |
转换 / 日期格式转换
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 处理字段 | 必填 | 见下方规则示例 | 规则类型 DATE_FORMAT | 当前任务版本 |
| 原日期格式 | 必填 | 见下方规则示例 | 规则类型 DATE_FORMAT | 当前任务版本 |
| 目标日期格式 | 必填 | 见下方规则示例 | 规则类型 DATE_FORMAT | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 处理字段 | created_at |
| 原日期格式 | yyyyMMdd |
| 目标日期格式 | yyyy-MM-dd |
转换 / 类型转换
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 处理字段 | 必填 | 见下方规则示例 | 规则类型 TYPE_CONVERT | 当前任务版本 |
| 目标数据类型 | 必填 | 见下方规则示例 | 规则类型 TYPE_CONVERT | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 处理字段 | amount |
| 目标数据类型 | DECIMAL |
转换 / 数值计算与精度
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 处理字段 | 必填 | 见下方规则示例 | 规则类型 NUMBER_SCALE | 当前任务版本 |
| 乘数 | 可选 | 见下方规则示例 | 规则类型 NUMBER_SCALE | 当前任务版本 |
| 除数 | 可选 | 见下方规则示例 | 规则类型 NUMBER_SCALE | 当前任务版本 |
| 加数 | 可选 | 见下方规则示例 | 规则类型 NUMBER_SCALE | 当前任务版本 |
| 小数位数 | 可选 | 见下方规则示例 | 规则类型 NUMBER_SCALE | 当前任务版本 |
| 舍入方式 | 可选 | 见下方规则示例 | 规则类型 NUMBER_SCALE | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 处理字段 | amount |
| 乘数 | 留空(不配置此项) |
| 除数 | 100 |
| 加数 | 留空(不配置此项) |
| 小数位数 | 2 |
| 舍入方式 | HALF_UP |
可选数值留空表示不配置,不填写null。除数不能为0;scale须为-1至1000的整数。
转换 / 表达式
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 目标列 | 必填 | 见下方规则示例 | 规则类型 EXPRESSION | 当前任务版本 |
| 计算或判定表达式 | 必填 | 见下方规则示例 | 规则类型 EXPRESSION | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 目标列 | total |
| 计算或判定表达式 | price * quantity |
转换 / 数据库查找
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 资源 | 必填 | 见下方规则示例 | 规则类型 LOOKUP | 当前任务版本 |
| 查询 SQL | 必填 | 见下方规则示例 | 规则类型 LOOKUP | 当前任务版本 |
| 查询超时(秒) | 可选 | 见下方规则示例 | 规则类型 LOOKUP | 当前任务版本 |
| 消息提交批量 | 可选 | 见下方规则示例 | 规则类型 LOOKUP | 当前任务版本 |
| 关联来源字段 | 必填 | 见下方规则示例 | 规则类型 LOOKUP | 当前任务版本 |
| 回填目标字段 | 必填 | 见下方规则示例 | 规则类型 LOOKUP | 当前任务版本 |
| 查询键列 | 必填 | 见下方规则示例 | 规则类型 LOOKUP | 当前任务版本 |
| 查询值列 | 必填 | 见下方规则示例 | 规则类型 LOOKUP | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 资源 | 选择本环境已启用的查询数据库资源 |
| 查询 SQL | SELECT code, name FROM lookup_table WHERE code IN (:keys) |
| 查询超时(秒) | 留空(不配置此项) |
| 消息提交批量 | 留空(不配置此项) |
| 关联来源字段 | code |
| 回填目标字段 | name |
| 查询键列 | code |
| 查询值列 | name |
选择自己的已启用查询资源并准备lookup_table的code/name列。查询使用:keys。这里的“消息提交批量”实际控制查询键批量(1–2000);查询超时1–86400秒,二者可留空。
转换 / 去重
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 字段列表 | 必填 | 见下方规则示例 | 规则类型 DEDUPLICATE | 当前任务版本 |
| 最大去重键数 | 可选 | 见下方规则示例 | 规则类型 DEDUPLICATE | 当前任务版本 |
| 保留策略 | 可选 | 见下方规则示例 | 规则类型 DEDUPLICATE | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 字段列表 | ["id"] |
| 最大去重键数 | 1000000 |
| 保留策略 | FIRST |
校验 / 必填校验
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 字段列表 | 必填 | 见下方规则示例 | 规则类型 REQUIRED | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 字段列表 | ["id"] |
校验 / 正则校验
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 处理字段 | 必填 | 见下方规则示例 | 规则类型 REGEX | 当前任务版本 |
| 内容正则 | 必填 | 见下方规则示例 | 规则类型 REGEX | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 处理字段 | code |
| 内容正则 | ^[A-Z]+$ |
校验 / 范围校验
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 处理字段 | 必填 | 见下方规则示例 | 规则类型 RANGE | 当前任务版本 |
| 最小值(含) | 可选 | 见下方规则示例 | 规则类型 RANGE | 当前任务版本 |
| 最大值(含) | 可选 | 见下方规则示例 | 规则类型 RANGE | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 处理字段 | amount |
| 最小值(含) | 0 |
| 最大值(含) | 留空(不配置此项) |
min/max至少填写一项;没有上界或下界时省略对应项,不填null。
校验 / 枚举校验
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 处理字段 | 必填 | 见下方规则示例 | 规则类型 ENUM | 当前任务版本 |
| 允许值列表 | 必填 | 见下方规则示例 | 规则类型 ENUM | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 处理字段 | status |
| 允许值列表 | ["NEW","DONE"] |
校验 / 条件校验
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 计算或判定表达式 | 必填 | 见下方规则示例 | 规则类型 CONDITION | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 计算或判定表达式 | amount >= 0 |
校验 / SQL 校验
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 资源 | 必填 | 见下方规则示例 | 规则类型 SQL | 当前任务版本 |
| 查询 SQL | 必填 | 见下方规则示例 | 规则类型 SQL | 当前任务版本 |
| 查询超时(秒) | 可选 | 见下方规则示例 | 规则类型 SQL | 当前任务版本 |
| 消息提交批量 | 可选 | 见下方规则示例 | 规则类型 SQL | 当前任务版本 |
| 校验范围 | 必填 | 见下方规则示例 | 规则类型 SQL | 当前任务版本 |
| 处理字段 | FIELD 时必填 | 见下方规则示例 | 规则类型 SQL,mode=FIELD | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 资源 | 选择本环境已启用的查询数据库资源 |
| 查询 SQL | SELECT id FROM orders WHERE id IN (:keys) |
| 查询超时(秒) | 留空(不配置此项) |
| 消息提交批量 | 留空(不配置此项) |
| 校验范围 | FIELD |
| 处理字段 | id |
选择自己的已启用查询资源,并准备orders.id。FIELD模式必须填写处理字段,查询必须含:keys;GLOBAL模式不填处理字段。查询批量1–2000、超时1–86400秒;可留空,不填null。
校验 / 外键存在校验
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 资源 | 必填 | 见下方规则示例 | 规则类型 FOREIGN_KEY | 当前任务版本 |
| 查询 SQL | 必填 | 见下方规则示例 | 规则类型 FOREIGN_KEY | 当前任务版本 |
| 查询超时(秒) | 可选 | 见下方规则示例 | 规则类型 FOREIGN_KEY | 当前任务版本 |
| 消息提交批量 | 可选 | 见下方规则示例 | 规则类型 FOREIGN_KEY | 当前任务版本 |
| 处理字段 | 必填 | 见下方规则示例 | 规则类型 FOREIGN_KEY | 当前任务版本 |
规则填写示例(请按业务数据修改):
| 字段 | 示例值 |
|---|---|
| 资源 | 选择本环境已启用的查询数据库资源 |
| 查询 SQL | SELECT id FROM customers WHERE id IN (:keys) |
| 查询超时(秒) | 留空(不配置此项) |
| 消息提交批量 | 留空(不配置此项) |
| 处理字段 | customer_id |
选择自己的已启用查询资源,准备customers.id,并让来源记录包含customer_id。查询必须含:keys。查询批量1–2000、超时1–86400秒;可留空,不填null。
目标高级 / 记录保护
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 保护字段 | 启用后必填 | 未预填;按所选配置填写 | 启用 protection | 当前任务版本 |
| 受保护值列表 | 启用后必填 | 未预填;按所选配置填写 | 启用 protection | 当前任务版本 |
| 遇到保护记录时 | 可选 | 未预填;按所选配置填写 | 启用 protection | 当前任务版本 |
- 保护字段:目标表中用于判定记录是否受保护的列。
- 受保护值列表:该列命中任一列表值时将记录判定为受保护。
- 遇到保护记录时:遇到受保护记录时跳过或使任务失败。
目标高级 / SCD2 历史版本
| 字段 | 是否必填 | 默认值 | 显示条件 | 作用范围 |
|---|---|---|---|---|
| 业务键(目标列) | 启用后必填 | 未预填;按所选配置填写 | SCD2 | 当前任务版本 |
| 比较字段(目标列) | 启用后必填 | 未预填;按所选配置填写 | SCD2 | 当前任务版本 |
| 生效时间来源字段 | 启用后必填 | 未预填;按所选配置填写 | SCD2 | 当前任务版本 |
| 有效期起始列 | 启用后必填 | 未预填;按所选配置填写 | SCD2 | 当前任务版本 |
| 有效期结束列 | 启用后必填 | 未预填;按所选配置填写 | SCD2 | 当前任务版本 |
| 当前版本标记列 | 可选 | 未预填;按所选配置填写 | SCD2 | 当前任务版本 |
| 当前版本值 | 可选 | 未预填;按所选配置填写 | SCD2 | 当前任务版本 |
| 历史版本值 | 可选 | 未预填;按所选配置填写 | SCD2 | 当前任务版本 |
| 时间粒度 | 可选 | 未预填;按所选配置填写 | SCD2 | 当前任务版本 |
- 业务键(目标列):用于识别同一业务实体的目标列。
- 比较字段(目标列):用于判断业务内容是否变化的目标列;界面要求至少一项。
- 生效时间来源字段:提供新历史版本生效时间的来源记录字段。
- 有效期起始列:存储历史版本生效时间的目标列。
- 有效期结束列:存储历史版本失效时间的目标列。
- 当前版本标记列:可选目标列,用于标记当前和历史版本。
- 当前版本值:写入当前版本标记列的值。
- 历史版本值:写入历史版本标记列的值。
- 时间粒度:选择按天或时间戳比较和保存有效期。
使用边界
- 文件源 SQLITE/MDB 只能 SQL 读取;REGEX 只能 DIRECT;EXCEL 多工作表配置不能与单工作表名称/序号同时配置。
- 数据库增量 SQL 必须有 :etlLastWatermark、:etlUpperWatermark;启用排序字段后绑定 :etlLastTie1 等。必须保持查询排序与水位/同值排序一致。
- 消息源使用 broker 进度,不使用普通增量;只允许 DATABASE 目标,UPSERT/INSERT_ONLY,BATCH 事务;禁止前后 SQL、DEDUPLICATE 和 FILTER 校验策略。
- 文件增量不支持 DEDUPLICATE 和目标前后 SQL;检查点提交与目标副作用存在边界。
- 目标手工映射至少一项,逻辑键为目标列;AUTO 排除字段不能同时出现在自定义映射。
- SCD2 需业务键、比较字段、生效值来源、有效期始末列;当前标记列可选。
- ETL 的消息配置内部格式版本为 2,不等于产品发布版本,产品仍为 1.0.0。
- 在界面中配置SCD2时,比较字段至少填写一项。
表单初始值与兼容补值
下面的后端值仅用于解释导入或旧配置缺少该键时的补值。按教程新建任务时,请明确选择表单值,不能把兼容补值当作推荐配置。
| 字段 | 新建表单 | 缺键时后端补值 |
|---|---|---|
| 写入方式 | UPSERT | APPEND |
| 字段映射方式 | AUTO | MANUAL |
| 事务范围 | RUN | BATCH |
| 标记类型 | LONG | STRING |
| 允许越过无效记录推进 | false | true |
典型配置:三行订单 UPSERT 到独立目标
按下表填写界面,资源名称需替换为自己的已启用资源。这是配置说明,不是可直接导入的 JSON。完整数据准备与执行步骤见本节末尾教程。
先按教程创建两个数据库连接;来源orders为三行、金额600,目标已建同结构空表并保留id主键。
| 配置项 | 填写内容 |
|---|---|
| 来源类型 | DATABASE |
| 来源资源 | 本教程源数据库资源 |
| 查询 SQL | 见下方代码 |
| 目标类型 | DATABASE |
| 目标资源 | 本教程目标数据库资源 |
| 目标表 | orders |
| 写入方式 | UPSERT |
| 逻辑键 | ["id"] |
| 字段映射方式 | MANUAL |
| 字段映射 | {"id":"id","amount":"amount","updated_at":"updated_at"} |
| 启用增量 | false |
查询 SQL:
SELECT id,amount,updated_at FROM orders ORDER BY id
预期结果: 目标表 3 行、金额总和 600,重复执行不增加行数。
跟做完整教程。保存定义后再手动执行;实例状态与业务结果分别核对。
真实界面
技术字段对照
以下键名用于导入配置、接口或排障。规则中的 [] 表示集合元素;不需要把这些键名填入界面标签。
| 类别 / 字段 | 技术键名 |
|---|---|
| 来源 / Topic(主题) | source.topic |
| 来源 / 消费组 | source.groupId |
| 来源 / 队列名称 | source.queue |
| 来源 / 首次消费位置 | source.initialPosition |
| 来源 / 预取数量(条) | source.prefetch |
| 来源 / 来源类型 | source.type |
| 来源 / 资源 | source.resourceId |
| 来源 / 查询 SQL | source.sql |
| 来源 / 文件路径 | source.path |
| 来源 / 文件格式 | source.format |
| 来源 / 读取方式 | source.readMode |
| 来源 / 字符编码 | source.charset |
| 来源 / 分隔符 | source.delimiter |
| 来源 / 引号 | source.quote |
| 来源 / 转义符 | source.escape |
| 来源 / 首行为表头 | source.header |
| 来源 / 跳过行数 | source.skipLines |
| 来源 / 表头行号 | source.headerRow |
| 来源 / 起始行号 | source.startRow |
| 来源 / 工作表名称 | source.sheetName |
| 来源 / 工作表序号 | source.sheetIndex |
| 来源 / 正则读取模式 | source.regexMode |
| 来源 / 内容正则 | source.pattern |
| 来源 / 块起始正则 | source.blockStart |
| 来源 / 块结束正则 | source.blockEnd |
| 来源 / 每块最大行数 | source.maxBlockLines |
| 来源 / 每块最大字符数 | source.maxBlockChars |
| 来源 / 正则字段映射(JSON) | source.regexFields |
| 来源 / 暂存表名 | source.stagingTable |
| 来源 / 暂存列名 | source.stagingColumns |
| 来源 / 多工作表配置(JSON) | source.sheets |
| 来源 / 查询提取批量 | source.fetchSize |
| 来源 / 查询参数(JSON) | source.parameters |
| 来源 / 前置 SQL 数组(JSON) | source.beforeSql |
| 目标 / 目标类型 | target.type |
| 目标 / 资源 | target.resourceId |
| 目标 / Schema(可选) | target.schema |
| 目标 / 目标表 | target.table |
| 目标 / 写入方式 | target.mode |
| 目标 / 逻辑键 | target.logicalKeys |
| 目标 / 字段映射方式 | target.mappingMode |
| 目标 / 排除来源字段(可选) | target.excludedFields |
| 目标 / 事务范围 | target.transactionScope |
| 目标 / 空值策略 | target.nullPolicy |
| 目标 / 按列空值策略(JSON) | target.columnNullPolicies |
| 目标 / 记录保护(JSON) | target.protection |
| 目标 / SCD2 配置(JSON) | target.scd2 |
| 目标 / 前置 SQL 数组(JSON) | target.beforeSql |
| 目标 / 后置 SQL 数组(JSON) | target.afterSql |
| 目标 / 文件路径 | target.path |
| 目标 / 字符编码 | target.charset |
| 目标 / 分隔符 | target.delimiter |
| 目标 / 引号 | target.quote |
| 目标 / 首行为表头 | target.header |
| 目标 / 文件已存在时 | target.existingFilePolicy |
| 目标 / 空数据输出 | target.emptyFilePolicy |
| 数据库增量 / 启用增量 | incremental.enabled |
| 数据库增量 / 检查点键 | incremental.checkpointKey |
| 数据库增量 / 标记类型 | incremental.watermarkType |
| 数据库增量 / 初始标记 | incremental.initialWatermark |
| 数据库增量 / 标记字段 | incremental.watermarkField |
| 数据库增量 / 上界查询 SQL | incremental.upperBoundSql |
| 数据库增量 / 同值排序字段 | incremental.tieBreakerFields |
| 数据库增量 / 排序初始值(JSON 数组) | incremental.initialTieBreakerValues |
| 数据库增量 / 允许越过无效记录推进 | incremental.allowCheckpointPastInvalidRecords |
| 文件增量 / 标记位置 | incremental.file.markerLocation |
| 文件增量 / 匹配方式 | incremental.file.matchMode |
| 文件增量 / 匹配表达式 | incremental.file.expression |
| 文件增量 / 源标记格式(可选) | incremental.file.markerFormat |
| 文件增量 / 解析时区 | incremental.file.zoneId |
| 文件增量 / 选择方式 | incremental.file.selectionMode |
| 文件增量 / 回看范围 | incremental.file.lookback |
| 文件增量 / 指定下界 | incremental.file.lowerBound |
| 文件增量 / 上界(可选) | incremental.file.upperBound |
| 文件增量 / 已完成文件内容变更时 | incremental.file.changedFilePolicy |
| 文件增量 / 递归扫描目录 | incremental.file.recursive |
| 文件增量 / 最大扫描深度 | incremental.file.maxDepth |
| 文件增量 / 最大扫描条目数 | incremental.file.maxScanEntries |
| 文件增量 / 单次最大文件数 | incremental.file.maxFiles |
| 文件增量 / 文件总量上限(字节) | incremental.file.maxTotalBytes |
| 文件增量 / 稳定时间(秒) | incremental.file.stableAgeSeconds |
| 文件增量 / 完成标识后缀(可选) | incremental.file.readySuffix |
| 消息摄入 / 单次消息数(条) | message.maxMessages |
| 消息摄入 / 接收窗口(秒) | message.intakeSeconds |
| 消息摄入 / 连续空闲等待(秒) | message.idleSeconds |
| 消息摄入 / 处理批量(条) | message.batchSize |
| 消息摄入 / 不满批提交间隔(毫秒) | message.flushIntervalMillis |
| 消息摄入 / 单条消息上限(字节) | message.maxMessageBytes |
| 消息摄入 / 解压后上限(字节) | message.maxExpandedBytes |
| 消息摄入 / 累计载荷上限(字节) | message.maxTotalBytes |
| 消息摄入 / 接收缓冲上限(字节) | message.maxBufferBytes |
| 消息摄入 / JSON 嵌套深度上限 | message.maxJsonDepth |
| 执行限制 / 读取批量 | execution.readBatchSize |
| 执行限制 / 写入批量 | execution.writeBatchSize |
| 执行限制 / 查询超时(秒) | execution.queryTimeoutSeconds |
| 执行限制 / 最大记录数 | execution.maxRecords |
| 执行限制 / 单文件上限(字节) | execution.maxFileBytes |
| 执行限制 / 展开文本字符上限 | execution.maxExpandedTextChars |
| 执行限制 / Excel 单元格上限 | execution.maxExcelCells |
| 执行限制 / 暂存单元格上限 | execution.maxStagingCells |
| 执行限制 / 每条记录字段上限 | execution.maxRecordFields |
| 执行限制 / 单字段字符上限 | execution.maxTextFieldChars |
| 执行限制 / Excel 工作表上限 | execution.maxExcelSheets |
| 映射 / 字段映射 | target.columns |
| 重试 / 允许非幂等写入重试 | allowNonIdempotentRetry |
| 转换 / 字段映射 / 规则参数 | transforms[].properties |
| 转换 / 默认值 / 规则参数 | transforms[].properties |
| 转换 / 去除首尾空白 / 字段列表 | transforms[].properties.fields |
| 转换 / 值替换 / 处理字段 | transforms[].properties.field |
| 转换 / 值替换 / 替换对照 | transforms[].properties.replace |
| 转换 / 日期格式转换 / 处理字段 | transforms[].properties.field |
| 转换 / 日期格式转换 / 原日期格式 | transforms[].properties.source |
| 转换 / 日期格式转换 / 目标日期格式 | transforms[].properties.target |
| 转换 / 类型转换 / 处理字段 | transforms[].properties.field |
| 转换 / 类型转换 / 目标数据类型 | transforms[].properties.target |
| 转换 / 数值计算与精度 / 处理字段 | transforms[].properties.field |
| 转换 / 数值计算与精度 / 乘数 | transforms[].properties.multiply |
| 转换 / 数值计算与精度 / 除数 | transforms[].properties.divide |
| 转换 / 数值计算与精度 / 加数 | transforms[].properties.add |
| 转换 / 数值计算与精度 / 小数位数 | transforms[].properties.scale |
| 转换 / 数值计算与精度 / 舍入方式 | transforms[].properties.roundingMode |
| 转换 / 表达式 / 目标列 | transforms[].properties.target |
| 转换 / 表达式 / 计算或判定表达式 | transforms[].properties.expression |
| 转换 / 数据库查找 / 资源 | transforms[].properties.resourceId |
| 转换 / 数据库查找 / 查询 SQL | transforms[].properties.sql |
| 转换 / 数据库查找 / 查询超时(秒) | transforms[].properties.queryTimeoutSeconds |
| 转换 / 数据库查找 / 消息提交批量 | transforms[].properties.batchSize |
| 转换 / 数据库查找 / 关联来源字段 | transforms[].properties.sourceField |
| 转换 / 数据库查找 / 回填目标字段 | transforms[].properties.targetField |
| 转换 / 数据库查找 / 查询键列 | transforms[].properties.keyColumn |
| 转换 / 数据库查找 / 查询值列 | transforms[].properties.valueColumn |
| 转换 / 去重 / 字段列表 | transforms[].properties.fields |
| 转换 / 去重 / 最大去重键数 | transforms[].properties.maxKeys |
| 转换 / 去重 / 保留策略 | transforms[].properties.keep |
| 校验 / 必填校验 / 字段列表 | validations[].properties.fields |
| 校验 / 正则校验 / 处理字段 | validations[].properties.field |
| 校验 / 正则校验 / 内容正则 | validations[].properties.pattern |
| 校验 / 范围校验 / 处理字段 | validations[].properties.field |
| 校验 / 范围校验 / 最小值(含) | validations[].properties.min |
| 校验 / 范围校验 / 最大值(含) | validations[].properties.max |
| 校验 / 枚举校验 / 处理字段 | validations[].properties.field |
| 校验 / 枚举校验 / 允许值列表 | validations[].properties.values |
| 校验 / 条件校验 / 计算或判定表达式 | validations[].properties.expression |
| 校验 / SQL 校验 / 资源 | validations[].properties.resourceId |
| 校验 / SQL 校验 / 查询 SQL | validations[].properties.sql |
| 校验 / SQL 校验 / 查询超时(秒) | validations[].properties.queryTimeoutSeconds |
| 校验 / SQL 校验 / 消息提交批量 | validations[].properties.batchSize |
| 校验 / SQL 校验 / 校验范围 | validations[].properties.mode |
| 校验 / SQL 校验 / 处理字段 | validations[].properties.field |
| 校验 / 外键存在校验 / 资源 | validations[].properties.resourceId |
| 校验 / 外键存在校验 / 查询 SQL | validations[].properties.sql |
| 校验 / 外键存在校验 / 查询超时(秒) | validations[].properties.queryTimeoutSeconds |
| 校验 / 外键存在校验 / 消息提交批量 | validations[].properties.batchSize |
| 校验 / 外键存在校验 / 处理字段 | validations[].properties.field |
| 目标高级 / protection / 保护字段 | target.protection.column |
| 目标高级 / protection / 受保护值列表 | target.protection.protectedValues |
| 目标高级 / protection / 遇到保护记录时 | target.protection.onProtected |
| 目标高级 / scd2 / 业务键(目标列) | target.scd2.businessKeys |
| 目标高级 / scd2 / 比较字段(目标列) | target.scd2.compareFields |
| 目标高级 / scd2 / 生效时间来源字段 | target.scd2.effectiveValueField |
| 目标高级 / scd2 / 有效期起始列 | target.scd2.validFromColumn |
| 目标高级 / scd2 / 有效期结束列 | target.scd2.validToColumn |
| 目标高级 / scd2 / 当前版本标记列 | target.scd2.currentFlagColumn |
| 目标高级 / scd2 / 当前版本值 | target.scd2.currentValue |
| 目标高级 / scd2 / 历史版本值 | target.scd2.historyValue |
| 目标高级 / scd2 / 时间粒度 | target.scd2.granularity |

