VLOOKUP 替代:iModel 里怎么做表关联
VLOOKUP 替代,指的是把 Excel 里用 VLOOKUP、XLOOKUP 或 INDEX MATCH 完成的表关联,改成用可视化节点来做。在 iModel 中承担这个职责的是 Joiner 节点,它按列名匹配两张表,并把结果输出为一张新表。
操作层面的转换不难,半小时就能上手。真正需要花时间的是三处认知上的差异,本章第三节会逐个讲。
这个问题通常是这样被描述的
「我有一张订单表,只有门店编号,没有门店名字。门店名字在另一张表里。以前我在订单表右边加一列写 VLOOKUP,把名字拉过来。现在这张订单表有二十多万行,一拖公式电脑就卡半天,而且每次源文件换了我还得重新拖一遍。」
这是 VLOOKUP 最典型的用法:用一张表里的编号,去另一张表里换取对应的信息。数据库里管这叫「关联」,Excel 里叫「查找引用」,说的是同一件事。
本章用一套虚构的订单数据演示。三张表:订单表有订单号、门店编号、商品编号、数量、下单日期;门店表有门店编号、门店名称、城市;商品表有商品编号、商品名称、品类、单价。目标是把三张表拼成一张能直接看的宽表。
关键事实
| Excel 对应函数 | VLOOKUP、XLOOKUP、INDEX + MATCH |
|---|---|
| iModel 对应节点 | Joiner |
| 节点库位置 | Manipulation → Column → Split & Combine |
| 匹配依据 | 列名(不是列号,插入列不会影响结果) |
| 输入端口 | 两个(左表、右表) |
| 输出端口 | 可配置为三个:匹配上的、左表未匹配的、右表未匹配的 |
| 一对多时的行为 | 展开为多行(VLOOKUP 只取第一条) |
| 常见搭配节点 | Row Filter、Column Filter、GroupBy |
VLOOKUP 替代:三处需要转过来的认知
Joiner 的操作比 VLOOKUP 简单 – 选两张表、选按哪一列匹配、选连接方式,三步。会卡住的地方不在操作,在下面三个概念差异。
错位一:按列名匹配,不按列号
VLOOKUP 的第三个参数是列号,一个数字。VLOOKUP(A2, 门店表!A:C, 2, 0) 里的 2 意思是「取查找区域的第二列」。
这个写法的问题是它和列的位置绑死了。有人在门店表里插了一列,第二列不再是门店名称,你的公式还在跑,返回的却是错的东西 – 而且不报错。
Joiner 按列名匹配和取值。门店表里插多少列都不影响,因为你指定的是「门店编号」这个名字,不是「第一列」这个位置。
错位二:一对多会变成多行
这是转换期最容易被当成 bug 的地方。
VLOOKUP 不管右表里有几条匹配,永远只返回找到的第一条,左表一行还是一行。Joiner 不是 – 右表里如果有三条记录匹配上,输出就是三行。
假设一个门店编号在门店表里出现了三次(比如历史上改过名字,三条记录没清理干净)。VLOOKUP 给你一个名字,你不知道还有两条;Joiner 给你三行,你立刻发现源数据有重复。
换句话说,行数变多不是 Joiner 出错,是它把 VLOOKUP 一直在替你隐藏的问题显示出来了。真正该做的是回头处理源数据的重复,可以用 Duplicate Row Filter。
错位三:没匹配上的记录不会消失
这一条对做审计和对账的人最重要。
VLOOKUP 找不到时返回 #N/A。因为一整列 #N/A 很难看,标准做法是套一层 IFERROR 变成 0 或空白。
然后这些没匹配上的记录就静默消失了。月底数对不上,你知道少了,但不知道少在哪 – 因为它们已经被处理成 0 了,混在正常数据里。
Joiner 的做法不同:它可以配置成三个输出端口,第一个是匹配上的,第二个是左表里没匹配上的,第三个是右表里没匹配上的。没匹配上的记录被单独输出到另一条线上,你能直接点开看是哪些。
「这个数是怎么来的」是审计、复核、交接时唯一有用的东西。一个把异常静默吞掉的流程,出问题时你只能重头查;一个把异常单独放出来的流程,出问题时你直接看那一路的输出就行。
VLOOKUP 替代:在 iModel 里的五步
用前面那三张表演示,把订单表关联上门店名称。
- 拖入两个 Excel Reader 节点,分别读订单表和门店表,各自执行一次确认数据读进来了。
- 拖入 Joiner 节点,把订单表接到上面那个输入端口(左表),门店表接到下面那个(右表)。左右顺序会影响后面的连接方式,先按这个来。
- 双击 Joiner 打开配置,在匹配条件里选择:左表的「门店编号」对应右表的「门店编号」。
- 选连接方式。想保留全部订单(哪怕匹配不上门店)就选左连接;只要能匹配上的就选内连接。判断标准见下一节的对照表。
- 在输出设置里勾上把未匹配的行输出到单独端口,然后执行。执行完先看第二个端口有没有数据 – 有数据就说明源数据有问题,先处理它。
第五步是这一章最想让你养成的习惯。先看未匹配端口,再看主结果,这个顺序和 Excel 里「先看结果对不对」是反的,但它能省掉大量后期排查。
VLOOKUP 替代:该用哪个
| 场景 | Excel 做法 | iModel 做法 | 该用哪个 |
|---|---|---|---|
| 临时查一个编号对应什么 | 直接 VLOOKUP | 要建工作流 | Excel |
| 每月固定关联同几张表 | 每次重拖公式 | 建一次,之后点执行 | iModel |
| 二十万行以上 | 拖公式明显卡顿 | 正常处理 | iModel |
| 需要知道哪些没匹配上 | 套 IFERROR 后就看不见了 | 单独端口输出 | iModel |
| 右表可能有重复记录 | 只取第一条,不告知 | 展开为多行,问题暴露 | iModel |
| 源表列的位置常变动 | 列号写死,容易错 | 按列名匹配,不受影响 | iModel |
| 要向审计解释关联逻辑 | 逻辑藏在公式里 | 节点配置可见 | iModel |
| 一次性核对,用完就扔 | 几分钟搞定 | 建流程反而慢 | Excel |
第四列是这张表的重点。iModel 不是所有关联场景都更好 – 临时查一个值、一次性核对,Excel 又快又直观,没必要搬。
常见的适应难点
「行数怎么变多了」是最高频的第一反应。
接上第三节的错位二:Joiner 遇到一对多会展开成多行,而 VLOOKUP 永远保持左表行数不变。第一次看到订单表从 20 万行变成 20 万零几百行,本能反应是「工具算错了」。
它没算错。多出来的那几百行,对应的是右表里有重复记录的编号。Excel 时代这个问题一直存在,只是 VLOOKUP 帮你把它藏起来了。
判断方法:执行后对比输入输出的行数。数字不一致就去查右表的匹配列有没有重复值,用 Duplicate Row Filter 或 GroupBy 数一下每个编号出现几次。
这个习惯养成之后,你会开始发现一些以前不知道存在的数据质量问题。这算好事,虽然刚开始会有点烦。
常见问题
相关内容
本章讲的是「为什么和什么时候」。Joiner 每个参数具体怎么配、配置对话框里每个选项什么意思,在节点手册里:Joiner 节点中文说明。
装好就能跟着做
iModel Analytics Studio 是开源版本,免费、不限功能与使用时长。Windows 与麒麟、统信环境都是双击安装,十分钟内可以装好并跑通本章的例子。
下载六章合订 PDF 完整版 · 34 页,含全部图表,无需留资。
想系统学一遍?可以从 数据分析入门教程 或 KNIME 中文知识库 开始,也可以回到 本系列目录。

