财务核算、开票回款时,事实表往往只有商品编码或客户名称,单价、品名、客户编码却在价目表、客户主数据里;同一商品中途调过价时,还要按下单日所在的生效区间取当时单价,不能用现价去算旧订单。
如果靠 Excel 的查找引用或手工对照,精确编码还勉强能做,一遇历史价区间、客户名称多写一个「有」字,公式就会断、对错行,也无法形成可复跑的对账底稿。
DT-Bot 的 「匹配填充」 算子专为解决此类按键从另一张表把字段填过来而设计。它支持精确匹配、区间匹配、名称近似匹配,并可限定仅填充空值。目标表行数不变;写了输出表名则另存新表,不写输出名就在原表加列。
一、 核心能力与适用场景
「匹配填充」算子聚焦于目标表行集合不变、按键补列,覆盖以下四项核心能力:
| 核心能力 | 解决什么业务问题 | 典型业务场景 |
|---|---|---|
| 精确匹配 | 两边键值能对上时,把查找表里的指定列填到目标表。 | 订单只有 SKU,从价目表把单价、品名填过来才能出账。 |
| 区间匹配 | 同一键有多段生效日、失效日,按目标表日期落在哪一段取值。 | 商品中途调价,按下单日落在「生效日~失效日」之间的单价核算旧订单。 |
| 名称近似匹配 | 两边名称不完全一致时,按近似对上后再补编码或属性。 | 订单上的客户名称和主数据差一个字,对上之后补客户编码、入账。 |
| 仅填充空值 | 目标列已有值的行不覆盖,只补空单元格。 | 考勤表部门有的已填、有的为空,只把空的部门从花名册补上。 |
二、 边界指南:它与相近算子有何区别?
在构建数据工作流时,理解算子之间的职责边界至关重要:
| 比较维度 | 「匹配填充」算子 | 「新增列」算子 | 「表格合并」算子 | 「缺失填充」算子 |
|---|---|---|---|---|
| 主要定位 | 按键从另一张表把已有字段填过来 | 在本表(或跨表取数后)新建计算列 | 多表合成一张新表 | 在本表空单元格里填常数或沿轴传播 |
| 输出机制 | 不写输出名则在原表加列;目标表行数不变 | 就地加列,行数不变 | 源表只读,写出新表 | 默认就地改源表,行数不变 |
| 典型动作 | 精确/区间/近似匹配后填列;可仅填空 | 空列、常量列、本表乘除、序号列 | 上下拼行、左/内/右/全连接 | 用上行、常数、均值等填空 |
| 如何选择 | “订单行不能少,只要把价目里的单价贴过来” | “明细已有单价、数量,要新建金额=单价×数量” | “华东、华北两张订单要拼成一张总表” | “合并单元格导出后,空着的地区用上面最近非空往下填” |
三、 提示词编写规范与公式
「匹配填充」算子支持自然语言直接表达,建议遵循以下标准的三要素编写公式:
【按哪一列(键)匹配】 + 【从哪张表取哪些列】 + 【填到哪张表(及是否仅填空 / 输出名)】
总体架构:按 “键” 匹配,从 “哪张表” 里面把 “哪些列” 填到 “哪张表” 。
1. 目标表范围表达
- 点名目标表与查找表:写清填到哪张表、从哪张表取数,例如
填到 “订单表”、从 “价目表” 里面; - 输出可选:
输出 “订单表_填充”则另存;不写则在目标原表上加列。
2. 核心操作动作表达
- 精确匹配:
按 “SKU” 匹配; - 区间匹配:
把 “下单日” 落在 “生效日” ~ “失效日” 之间的 “单价” 填到; - 名称近似:
按 “客户名称” 近似匹配; - 仅填空:在动作后追加
仅填充空值。
3. 可复制示例
按 “SKU” 匹配,从 “价目表” 里面把 “单价” 、 “品名” 填到 “订单表” ,输出 “订单表_填充” 。
对应三段:键是 SKU;从价目表取单价、品名;填到订单表并另存「订单表_填充」。去掉最后一句,就在「订单表」上加列。
四、 核心功能与图解实战
以下结合真实企业数据场景,展示「匹配填充」在不同需求下的处理效果:
场景 1:精确匹配(对上编码,把字段填过来)
业务背景:财务核算销售金额、毛利时,订单明细只有商品编码,单价和品名在价目表里,对上之后才能出账。订单行一条都不能少。
【处理前:订单表】
| 订单号 | SKU |
|---|---|
| 1 | A01 |
| 2 | A02 |
【处理前:价目表】(查找表,只读)
| SKU | 单价 | 品名 |
|---|---|---|
| A01 | 10 | 水杯 |
| A02 | 20 | 毛巾 |
【执行提示词】
按 “SKU” 匹配, 从 “价目表”里面把 “单价” 、 “品名” 填到 “订单表” 。
【处理后:订单表(就地加列)】
| 订单号 | SKU | 单价 | 品名 | 变更说明 |
|---|---|---|---|---|
| 1 | A01 | 10 | 水杯 | 按 SKU=A01 从价目表填入 |
| 2 | A02 | 20 | 毛巾 | 按 SKU=A02 从价目表填入 |
逻辑详解:目标表仍是 2 行,只是在右侧追加「单价」「品名」;价目表本身不被改写。需要保留原订单表时,在提示词末尾加上
输出 “订单表_填充”。
场景 2:区间匹配(同一商品多段生效日,按下单日取值)
业务背景:同一商品中途调过价,核算历史订单必须按下单日所在的生效区间取当时单价,不能用现价去算旧单。
【处理前:订单表】
| 订单号 | SKU | 下单日 |
|---|---|---|
| 1 | A01 | 3月10日 |
| 2 | A01 | 6月20日 |
【处理前:价目表】(查找表,只读)
| SKU | 生效日 | 失效日 | 单价 |
|---|---|---|---|
| A01 | 1月1日 | 3月31日 | 10 |
| A01 | 4月1日 | (空) | 12 |
【执行提示词】
按 “SKU”匹配, 从 “价目表” 里面把 “下单日” 落在 “生效日” ~ “失效日” 之间的 “单价” 填到 “订单表” 。
【处理后:订单表(就地加列)】
| 订单号 | SKU | 下单日 | 单价 | 变更说明 |
|---|---|---|---|---|
| 1 | A01 | 3月10日 | 10 | 3月10日落在 1月1日~3月31日 |
| 2 | A01 | 6月20日 | 12 | 6月20日落在 4月1日起的后一段 |
逻辑详解:两行订单的 SKU 相同,但下单日落在不同区间,因此单价分别取 10 与 12;订单行数仍为 2,不会按价目表行数膨胀。
场景 3:名称近似匹配(客商名称不完全一致)
业务背景:订单上的客户名称和客户主数据不完全一致(多写了「有」),财务对客商、开票回款时要对上之后才能补客户编码、入账。
【处理前:订单表】
| 订单号 | 客户名称 |
|---|---|
| 1 | 华为技术有有限公司 |
| 2 | 阿里巴巴集团有有限公司 |
【处理前:客户主数据表】(查找表,只读)
| 客户名称 | 客户编码 |
|---|---|
| 华为技术有限公司 | C01 |
| 阿里巴巴集团有限公司 | C02 |
【执行提示词】
按 “客户名称” 近似匹配,从 “客户主数据表” 里面把 “客户编码” 填到 “订单表” 。
【处理后:订单表(就地加列)】
| 订单号 | 客户名称 | 客户编码 | 变更说明 |
|---|---|---|---|
| 1 | 华为技术有有限公司 | C01 | 名称近似对上主数据「华为技术有限公司」 |
| 2 | 阿里巴巴集团有有限公司 | C02 | 名称近似对上主数据「阿里巴巴集团有限公司」 |
逻辑详解:目标表「客户名称」单元格保持原样,只追加「客户编码」;行数仍为 2。两边名称完全一致时应走精确匹配,不必写「近似」。
场景 4:仅填充空值(已有部门不被覆盖)
业务背景:考勤表部分行已经写了部门,部分行为空;花名册里有完整部门。财务只希望补上空格子,不能把考勤表里已经核对过的部门改掉。
【处理前:考勤表】
| 工号 | 姓名 | 部门 |
|---|---|---|
| 001 | 张三 | (空) |
| 002 | 李四 | 销售部 |
【处理前:员工花名册表】(查找表,只读)
| 工号 | 部门 |
|---|---|
| 001 | 人事部 |
| 002 | 销售部 |
【执行提示词】
按 “工号” 匹配,从 “员工花名册表” 找,把 “部门” 填到 “考勤表” ,仅填充空值。
【处理后:考勤表(就地更新目标列)】
| 工号 | 姓名 | 部门 | 变更说明 |
|---|---|---|---|
| 001 | 张三 | 人事部 | 原为空,按工号补上人事部 |
| 002 | 李四 | 销售部 | 原已有值,仅填空时不覆盖 |
逻辑详解:目标表行数仍为 2;「仅填充空值」只改空单元格。若不写这句,已有「部门」也会按查找表重写。
五、 常见问题与操作贴士(FAQ)
Q1:为什么执行后没有多出一张「订单表_填充」?
答:未写
输出 “……”时,算子默认在目标原表上加列(或写入已有目标列),工作空间不会复制一张新表。需要保留填充前的订单底稿时,请显式写出输出表名。
Q2:匹配不上时,会不会把订单行删掉,或把价目表多出来的行拼进来?
答:不会。目标表行数、行序保持不变;对不上的行在新填列上为空。查找表只读,不会因为价目表多 SKU 就往订单表加行。若要把两张表按键拼成一张可增行的新表,请用「表格合并」的连接,而不是本算子。
Q3:连续跑两次填充,第二次会怎样?
答:就地加列后,目标表已经带有上一轮写入的「单价」「品名」等列。再次运行时,未写「仅填充空值」可能覆盖这些列;写了「仅填充空值」则只补仍为空的格子。换一种匹配规则前,请确认当前列是要覆盖还是要另存新表,避免把已核算的单价冲掉。
六、 关联算子导航
- 若需按键取数后立刻做乘法等计算、新建金额列:请参考 数据处理 · 新增列
- 若需把多张表拼成一张新表(上下拼或左/内/右/全连接):请参考 数据处理 · 表格合并
- 若只需在本表空单元格里用上行或常数填空、不跨表:请参考 数据处理 · 缺失填充
- 若需先把客户名称去空格、去后缀再匹配:请参考 数据处理 · 行操作
- 欲下载真实数据表格亲自动手实测:请查阅 数据案例 · 匹配填充案例