在客户入库、订单质检与跨系统对接中,业务表经常混入位数不对的手机号、金额为负的冲红行,以及姓名等必填项为空的脏记录。质检既不能只留下「看起来干净」的行,也不能把问题行悄悄删掉。
如果采用传统手工方式,分析师往往先筛一遍合格样本另存,再反向筛一遍异常样本,两次操作口径容易不一致;复盘时还缺少一列可追溯的「异常原因」,下游只能凭经验猜这一行为什么被拦下。
DT-Bot 的 「数据校验」 算子专为解决此类按「怎样算不合格」把一张表拆成合格表与异常表的问题而设计。源表只读、一行不丢;异常表会多一列「异常原因」。多条规则默认「任一命中即异常」,两张新表行数加起来等于源表行数。
一、 核心能力与适用场景
「数据校验」算子聚焦于双路分流 + 异常原因留痕,覆盖以下四大核心能力:
| 核心能力 | 解决什么业务问题 | 典型业务场景 |
|---|---|---|
| 长度不合格 | 按字段长度判定不合格,例如不是 N 位。空串长度按 0。 | 入库前拦脏:手机号不是 11 位的进异常,其余进合格。 |
| 比较不合格 | 按数值或文本比较判定不合格,例如金额小于 0。 | 对账:金额小于 0 的进异常,非负金额进合格。 |
| 必填为空 | 空白和空单元格都算空,空则进异常。 | 姓名为空的进异常,已填姓名的进合格。 |
| 多条规则(默认或者) | 多条不合格规则并列,默认任一命中即异常;可分别指定两路表名。 | 手机号不是 11 位,或者金额小于 0,进异常,其余进合格。 |
二、 边界指南:它与相近算子有何区别?
在构建数据工作流时,理解算子之间的职责边界至关重要:
| 比较维度 | 「数据校验」算子 | 「筛选器」算子 | 「表格拆分」算子 | 「行操作」算子 | 「数据脱敏」算子 |
|---|---|---|---|---|---|
| 主要定位 | 按不合格规则拆合格表 + 异常表 | 只抽出符合条件的行,只要一张表 | 按门店 / 渠道等拆成很多张 | 改单元格、去空格 | 遮盖手机号等敏感值 |
| 输出机制 | 源表只读,写出两张新表;异常表带「异常原因」 | 源表只读,写出一张新表 | 源表只读,写出多张新表 | 就地更新单元格 | 就地或另存,改写单元格显示 |
| 典型动作 | 长度、比较、必填、多规则或者分流 | 比较、包含、为空、提取重复行 | 按列值、日期、行数拆堆 | 字符清洗、替换 | 掩码、截断、哈希 |
| 如何选择 | “合格和异常都要留档,异常还要写原因” | “只要大额订单一张表做专项” | “按门店拆成很多张分表” | “把姓名前后空格清掉” | “手机号不能明文给下游” |
三、 提示词编写规范与公式
「数据校验」算子支持自然语言直接表达,建议遵循以下标准的三要素编写公式:
【目标表】 + 【不合格规则】 + 【两路结果名(可选)】
1. 目标表表达
- 单表精准点名:明确校验哪一张表,例如
校验 “客户登记” :...; - 默认当前流转表:若提示词中未显式提及表名,算子将默认继承上一节点连线流入的数据表。
2. 不合格规则表达
- 长度:
手机号不是 11 位的进异常; - 比较:
金额小于 0 的进异常; - 必填:
姓名为空的进异常(空白和空单元格都算空); - 多条规则:默认「或者」——任一命中即进异常,例如
手机号不是 11 位,或者金额小于 0。
3. 结果名(可选)
- 不写结果名:合格表、异常表分别为「源表名_合格」「源表名_异常」;
- 两路都点名:例如
合格输出 “客户合格”,异常输出 “客户异常”; - 只点一个结果名、又没有说合格 / 异常两路:会当成筛选器,本节点应拒绝。
示例:
校验 “客户登记” :手机号不是 11 位的进异常,其余进合格。
对应三段:
- 表:客户登记
- 不合格:手机号长度不是 11
- 结果:默认 客户登记_合格、客户登记_异常
四、 核心功能与图解实战
以下结合真实企业数据场景,展示「数据校验」在不同需求下的处理效果:
场景 1:长度不合格(手机号不是 11 位)
业务背景:客户入库前要拦位数不对的手机号。11 位的进合格底稿;不是 11 位(含空串,长度按 0)的进异常表,并写明原因,源登记表不得改写。
【处理前:客户登记】
| 客户编码 | 姓名 | 手机号 |
|---|---|---|
| C01 | 华为 | 13812345678 |
| C02 | 阿里 | 1380000 |
| C03 | 腾讯 | (空) |
【执行提示词】
校验 “客户登记” :手机号不是 11 位的进异常,其余进合格。
【处理后:客户登记_合格】
| 客户编码 | 姓名 | 手机号 | 分流说明 |
|---|---|---|---|
| C01 | 华为 | 13812345678 | 长度 11,进入合格 |
【处理后:客户登记_异常】
| 客户编码 | 姓名 | 手机号 | 异常原因 |
|---|---|---|---|
| C02 | 阿里 | 1380000 | 手机号不是 11 位 |
| C03 | 腾讯 | (空) | 手机号不是 11 位(空串长度按 0) |
逻辑详解:合格侧只有 C01;异常侧为 C02、C03,并带「异常原因」。源表「客户登记」仍是 3 行。本条未点名的字段(如姓名是否为空)不参与判定。
场景 2:比较不合格(金额小于 0)
业务背景:订单质检要把冲红负金额拦进异常,零元与正数进入合格,供后续对账。
【处理前:订单质检】
| 订单号 | 金额 |
|---|---|
| O1 | 100 |
| O2 | -8 |
| O3 | 50 |
【执行提示词】
校验 “订单质检” :金额小于 0 的进异常。
【处理后:订单质检_合格】
| 订单号 | 金额 | 分流说明 |
|---|---|---|
| O1 | 100 | 100 不小于 0,进入合格 |
| O3 | 50 | 50 不小于 0,进入合格 |
【处理后:订单质检_异常】
| 订单号 | 金额 | 异常原因 |
|---|---|---|
| O2 | -8 | 金额小于 0 |
逻辑详解:合格:O1、O3。异常:O2。边界值 0 不算「小于 0」。源表只读;两路行数之和等于源表行数。
场景 3:必填为空(姓名不得空)
业务背景:客户登记要求姓名必填。空白和空单元格都算空,空则进异常,已填姓名的进合格。
【处理前:客户登记】
| 客户编码 | 姓名 | 手机号 |
|---|---|---|
| C01 | 华为 | 13812345678 |
| C02 | 阿里 | 1380000 |
| C03 | (空) | 13811112222 |
【执行提示词】
校验 “客户登记” :姓名为空的进异常。
【处理后:客户登记_合格】
| 客户编码 | 姓名 | 手机号 | 分流说明 |
|---|---|---|---|
| C01 | 华为 | 13812345678 | 姓名已填,进入合格 |
| C02 | 阿里 | 1380000 | 姓名已填,进入合格 |
【处理后:客户登记_异常】
| 客户编码 | 姓名 | 手机号 | 异常原因 |
|---|---|---|---|
| C03 | (空) | 13811112222 | 姓名为空 |
逻辑详解:空白和空单元格都算空。本条只校验姓名,不因手机号位数把 C02 打进异常。源表只读。
场景 4:多条规则(默认或者,自定义两路表名)
业务背景:入库要同时拦「手机号不是 11 位」和「金额小于 0」。任一命中即异常;两路表名要写成业务可识别的「客户合格 / 客户异常」。
【处理前:客户登记】
| 客户编码 | 姓名 | 手机号 | 金额 |
|---|---|---|---|
| C01 | 华为 | 13812345678 | 100 |
| C02 | 阿里 | 1380000 | 50 |
| C03 | 腾讯 | (空) | -8 |
【执行提示词】
校验 “客户登记” :手机号不是 11 位,或者金额小于 0,进异常,其余进合格。合格输出 “客户合格”,异常输出 “客户异常”。
【处理后:客户合格】
| 客户编码 | 姓名 | 手机号 | 金额 | 分流说明 |
|---|---|---|---|---|
| C01 | 华为 | 13812345678 | 100 | 两条规则均未命中 |
【处理后:客户异常】
| 客户编码 | 姓名 | 手机号 | 金额 | 异常原因 |
|---|---|---|---|---|
| C02 | 阿里 | 1380000 | 50 | 手机号不是 11 位 |
| C03 | 腾讯 | (空) | -8 | 手机号不是 11 位;金额小于 0 |
逻辑详解:任一规则命中即进异常。两张新表行数加起来等于源表行数(1 + 2 = 3)。源表「客户登记」不被改写。
五、 常见问题与操作贴士(FAQ)
Q1:为什么执行后会多出两张表,而源表一行都没少?
答:本算子默认源表只读、一行不丢。命中不合格规则的行走异常表,其余走合格表;异常表会多一列「异常原因」。不写结果名时,两路分别为「源表名_合格」「源表名_异常」。若您只要一张筛出结果、不要异常归档,请使用「筛选器」。
Q2:只写了一个结果名,没有说合格 / 异常两路,会怎样?
答:本节点应拒绝。只点一个结果名、又没有说合格 / 异常两路,语义上会当成「筛选器」。请同时写清两路,或明确「进异常,其余进合格」。
Q3:多条规则是「并且」还是「或者」?空串长度怎么算?
答:多条规则默认「或者」——任一命中即异常。空串长度按 0,因此「手机号不是 11 位」会把空手机号打进异常。空白和空单元格在必填规则里都算空。
Q4:数据校验会改单元格或遮盖手机号吗?
答:不会。本节点只决定每一行走合格还是异常,并在异常表写「异常原因」。去空格、改单元格请用「行操作」;遮盖手机号请用「数据脱敏」。按门店拆成很多张请用「表格拆分」。
六、 关联算子导航
- 若只需筛出符合条件的行、只要一张结果表:请参考 数据处理 · 筛选器
- 若需按门店或渠道把一张表拆成很多张:请参考 数据处理 · 表格拆分
- 若需对单元格内部的字符串进行去空格、替换清洗:请参考 数据处理 · 行操作
- 若需遮盖手机号等敏感字段:请参考 数据处理 · 数据脱敏
- 欲下载真实数据表格亲自动手实测:请查阅 数据案例 · 数据校验案例