在对账、抽检与专项分析链路中,分析师经常只要总表里的一部分行:金额过线的大额订单、备注为空的待补录行、客户名称重复出现的核对清单,或相对整列分布明显偏离的测温读数。
如果采用传统手工方式,只能在源表上反复点筛选、隐藏行再另存;空单元格与空串容易被混为一谈,「提取重复行」也常被做成「每个姓名只留一条」,源表一旦被筛瘦,后续复盘就失去完整底稿。
DT-Bot 的 「筛选器」 算子专为解决此类按条件从一张表抽出行、写成一张新表的问题而设计。它支持比较、包含、为空以及提取某列重复 / 不重复的行,也可先收窄条件再判断重复,或按分布公式找出异常行;源表只读,不改单元格、不增删列,工作空间始终保留完整底表。
一、 核心能力与适用场景
「筛选器」算子聚焦于单路抽出目标行并另存新表,覆盖以下五大核心能力:
| 核心能力 | 解决什么业务问题 | 典型业务场景 |
|---|---|---|
| 比较与包含 | 按数值大小、等于 / 不等于、区间、包含 / 不包含、开头或结尾、属于某几个取值筛选;多条件用并且 / 或者。 | 财务只要金额大于 100 的订单去做对账;只要渠道是天猫且备注不为空的行。 |
| 为空 / 不为空 | 按某列是否为空抽出一行不改的子集。 | 抽出备注为空的订单,交给补录岗;或只要备注已填写的加急行。 |
| 提取重复行 | 把某列取值出现超过一次的行全部留下;也可只要只出现一次的不重复行。 | 把客户名称重复出现的行全部提出来核对。注意:去重只留一条不是本节点。 |
| 条件后再提取重复 | 先按业务条件缩小范围,再在子集里判断重复。 | 先留下渠道是天猫的行,再提取其中订单号重复的行。 |
| 按分布公式找异常行 | 找出某列相对整列(或组内)分布的异常行,例如超过均值 2 个标准差、超过均值 2 倍、IQR 之外。 | 测温记录里找出读数相对整列均值超过 2 个标准差的行,只要一张异常清单。 |
二、 边界指南:它与相近算子有何区别?
在构建数据工作流时,理解算子之间的职责边界至关重要:
| 比较维度 | 「筛选器」算子 | 「数据校验」算子 | 「表格拆分」算子 | 「表操作」算子 | 「组内加列」算子 | 「行操作」算子 |
|---|---|---|---|---|---|---|
| 主要定位 | 抽出目标子集,只要一张新表 | 合格与异常两路都留 | 按键 / 粒度拆成很多张 | 就地删行、去重、排序 | 给每一行打分或贴列,行数不变 | 清洗单元格文本 |
| 输出机制 | 源表只读,生成独立新表 | 源表只读,写出合格表 + 异常表 | 源表只读,写出多张新表 | 就地更新原表 | 就地或贴列,一行都不删 | 就地更新原表(单元格级) |
| 典型动作 | 比较、包含、为空、提取重复行、分布异常 | 按不合格规则分流并写异常原因 | 按渠道、季度、行数等拆堆 | 删除作废行、按键去重只留一条 | 计算 z 分、组内排名贴列 | 去空格、替换、正则提取 |
| 如何选择 | “从总订单里挑出大额单,单独拉一张做专项” | “合格和异常都要归档,异常还要写原因” | “按渠道拆成天猫、京东各一张” | “把这表里的作废单直接删了继续往下走” | “只要给每行打 z 分,一行都不删” | “把客户名称里的空格和错字清掉” |
三、 提示词编写规范与公式
「筛选器」算子支持自然语言直接表达,建议遵循以下标准的三要素编写公式:
【源表】 + 【筛选条件】 + 【结果名(可选)】
1. 目标表表达
- 单表精准点名:明确从哪张表筛,例如
从 “订单明细” 筛出金额大于 100 的行; - 默认当前流转表:若提示词中未显式提及表名,算子将默认继承上一节点连线流入的数据表。
2. 条件表达
- 比较:
金额大于 100、等于、不等于、大于等于、小于、区间; - 文本匹配:包含、不包含、以某字开头或结尾、属于或不属于某几个取值;
- 空值:
备注为空、备注不为空; - 重复:
提取姓名重复的行、提取不重复的行; - 叠加:先留下渠道是天猫的行,再提取其中订单号重复的行;多条件用「并且 / 或者」;
- 分布:
读数相对整列均值超过 2 个标准差,也可以写「去掉这些异常行」「超过均值 2 倍」「IQR 之外」。
3. 结果名(可选)
- 不写结果名:新表一般叫「源表名_筛选」;
- 写了结果名:按指定名称输出,例如
输出 “大额订单”。
示例:
从 “订单明细” 筛出金额大于 100 的行,输出 “大额订单”。
对应三段:
- 表:订单明细
- 条件:金额大于 100
- 结果:大额订单
四、 核心功能与图解实战
以下结合真实企业数据场景,展示「筛选器」在不同需求下的处理效果:
场景 1:比较条件(阈值抽出大额订单)
业务背景:财务只要金额大于 100 的订单去做对账,低于阈值的行留在源表里供其他岗位继续使用,不能就地删掉。
【处理前:订单明细】
| 订单号 | 渠道 | 金额 |
|---|---|---|
| O1 | 天猫 | 120 |
| O2 | 京东 | 80 |
| O3 | 天猫 | 50 |
【执行提示词】
从 “订单明细” 筛出金额大于 100 的行。
【处理后:新表(源表只读)】
| 订单号 | 渠道 | 金额 | 筛选依据 |
|---|---|---|---|
| O1 | 天猫 | 120 | 120 > 100,命中比较条件 |
逻辑详解:只有 O1 进入新表;O2(80)、O3(50)不进入。源表「订单明细」仍是 3 行,列结构不变。同一能力也可以写等于、不等于、大于等于、小于、区间、包含、不包含、以某字开头或结尾、属于或不属于某几个取值;多条件用「并且 / 或者」。例如学员表上写「年龄大于 20 并且班级是 2班」,会留下张三两行和王五。
场景 2:某列为空或不为空
业务背景:订单备注有的是空、有的已填「加急」。补录岗只要备注为空的行;加急岗则只要不为空的行。两边都不能改源表。
【处理前:订单明细】
| 订单号 | 备注 |
|---|---|
| O1 | (空) |
| O2 | 加急 |
【执行提示词】
从 “订单明细” 筛出备注为空的行。
【处理后:新表(源表只读)】
| 订单号 | 备注 | 筛选依据 |
|---|---|---|
| O1 | (空) | 备注为空,命中 |
逻辑详解:得到 O1。若筛「备注不为空」则得到 O2。源表行数与单元格均不改写。
场景 3:提取重复行(全部留下,不是去重)
业务背景:学员名单里同一姓名出现多次,教务要把这些重复行全部提出来核对,而不是每个姓名只留一条。
【处理前:学员表】
| 姓名 | 班级 | 年龄 |
|---|---|---|
| 张三 | 2班 | 21 |
| 李四 | 1班 | 18 |
| 张三 | 2班 | 22 |
【执行提示词】
从 “学员表” 提取姓名重复的行。
【处理后:新表(源表只读)】
| 姓名 | 班级 | 年龄 | 筛选依据 |
|---|---|---|---|
| 张三 | 2班 | 21 | 姓名「张三」出现 2 次,两行都留 |
| 张三 | 2班 | 22 | 姓名「张三」出现 2 次,两行都留 |
逻辑详解:张三的两行都会留下。李四只出现一次,不会留下。「提取不重复的行」则只留李四这种只出现一次的。注意:去重、每个姓名只留一条,不是本节点,请使用「表操作」。
场景 4:条件再叠加重复(先收窄再判断)
业务背景:订单明细里多个渠道混排,对账只要天猫侧订单号重复的行;京东即使订单号重复也不在本专项范围内。
【处理前:订单明细】
| 订单号 | 渠道 | 金额 |
|---|---|---|
| O1 | 天猫 | 120 |
| O1 | 天猫 | 30 |
| O2 | 京东 | 80 |
| O2 | 京东 | 40 |
| O3 | 天猫 | 50 |
【执行提示词】
从 “订单明细” 先留下渠道是天猫的行,再提取其中订单号重复的行。
【处理后:新表(源表只读)】
| 订单号 | 渠道 | 金额 | 筛选依据 |
|---|---|---|---|
| O1 | 天猫 | 120 | 先入天猫子集,再因订单号重复留下 |
| O1 | 天猫 | 30 | 与上一行订单号相同,一并留下 |
逻辑详解:先按条件缩小范围(渠道=天猫:O1、O1、O3),再判断重复(O1 出现两次,O3 只一次)。京东侧 O2 即使重复,也不进入本结果。源表只读。
场景 5:按分布公式找异常行(只要一张清单)
业务背景:测温记录里多数读数贴近 10,个别读数冲到 100。质检只要一张「相对整列分布偏离」的清单,不要同时再留一张合格表。
【处理前:测温记录】
| 编号 | 部门 | 读数 |
|---|---|---|
| 1 | 甲 | 10 |
| 2 | 甲 | 10 |
| 3 | 甲 | 100 |
【执行提示词】
从 “测温记录” 找出读数相对整列均值超过 2 个标准差的行。
【处理后:新表(源表只读)】
| 编号 | 部门 | 读数 | 筛选依据 |
|---|---|---|---|
| 3 | 甲 | 100 | 相对整列均值明显偏离,进入异常清单 |
逻辑详解:留下偏离整列分布的那些行(本例为读数 100)。编号 1、2 贴近主体分布,不进入结果。同一能力也可以写「去掉这些异常行」「超过均值 2 倍」「IQR 之外」。只要一张表。合格和异常两路都留,请用「数据校验」。只打 z 分、一行都不删,请用「组内加列」。按行序滚动或先把多表合成一张再筛,不是本节点。
五、 常见问题与操作贴士(FAQ)
Q1:为什么执行「筛选器」后,源表行数没有变少?
答:这是「筛选器」的核心设计机制。它把命中条件的行另存为新表,源表保持只读。不写结果名时,新表一般叫「源表名_筛选」。若您其实想在当前表上直接删掉不符条件的行,请使用「表操作」。
Q2:「提取重复行」和「按姓名去重只留一条」有什么区别?
答:本节点的「提取重复行」会把同一姓名的全部出现行都留下,用于核对冲突;「提取不重复的行」则只留只出现一次的行。若目标是每个姓名只保留一条、其余删掉,请使用「表操作」的按键去重,不要用本节点。
Q3:只要一张结果表,和「数据校验」「表格拆分」该怎么选?
答:
- 只要筛出符合条件的行、只要一张表:用「筛选器」;
- 合格和异常两路都留,且异常要带「异常原因」:用「数据校验」;
- 按渠道、季度等拆成很多张:用「表格拆分」。
Q4:筛选器会改单元格、增删列,或按行序滚动计算吗?
答:不会。本节点不改单元格、不增删列。去空格、替换单元格请用「行操作」。只要给每一行打 z 分、行数不变,请用「组内加列」。按行序滚动或先把多表合成一张再筛,不是本节点。
六、 关联算子导航
- 若需合格与异常两路都留,且异常表要带原因:请参考 数据处理 · 数据校验
- 若需按渠道或日期粒度拆成很多张新表:请参考 数据处理 · 表格拆分
- 若需在当前表上就地删行、去重只留一条或排序:请参考 数据处理 · 表操作
- 若需给每一行打 z 分、一行都不删:请参考 数据统计 · 组内加列
- 若需对单元格内部的字符串进行去空格、替换清洗:请参考 数据处理 · 行操作
- 欲下载真实数据表格亲自动手实测:请查阅 数据案例 · 筛选器案例