查找字段(Lookup)
查找字段用于从另一张数据表中提取目标字段的值,并支持聚合计算与条件过滤。它是实现跨表数据联动、汇总分析的核心字段类型,常被类比为「查找引用 / Rollup」字段。
实时只读
查找字段的值由系统在读取记录时实时计算,单元格不可手动编辑。修改源表数据、引用字段或筛选条件后,查找结果会自动重算。
适用场景
- 在订单表中显示客户名称(从客户表查找)。
- 在项目中汇总所有关联任务的完成数量。
- 在产品表中计算供应商的平均报价。
- 在销售表中统计每个客户的订单总金额。
- 反向汇总:任务表通过「所属项目」关联项目表,在项目表中汇总每个项目的任务工时合计。
一、工作原理
查找字段的计算逻辑如下(后端 LookupService.compute_lookup_value):
- 读取源数据表的全部未删除记录。
- 用筛选条件过滤出符合条件的源表记录(无筛选则返回全部)。
- 从这些记录中提取引用字段的值。
- 按计算方式对提取值做聚合(原值 / 去重则保留列表)。
- 按字段格式对聚合结果做格式化后展示。
关键点:查找字段并不要求当前表先建立指向源表的关联字段。它通过筛选条件对源表做「全表扫描 + 过滤」,因此在很多场景下可以独立于关联字段使用;当源表存在指回当前表的关联字段时,配合「当前记录」值类型可实现反向汇总。
二、创建查找字段
- 在数据表中点击「添加字段」,选择字段类型「查找」。
- 配置以下参数:
| 配置项 | 说明 |
|---|---|
| 源数据表 | 要查找的数据表,限同一 Base 下的其他数据表(不能是当前表) |
| 引用字段 | 源数据表中要提取的字段(包含隐藏字段) |
| 过滤条件 | 可选,最多 5 个;留空则返回源表所有记录 |
| 计算方式 | 选择如何聚合查找结果(8 种,见下文) |
| 字段格式 | 聚合模式下可用,用于格式化结果(原值 / 去重模式自动跟随源字段) |
- 点击「预览结果」可基于当前记录实时查看计算结果(需先保存字段)。
- 点击保存。
三、计算方式
共有 8 种计算方式:
| 计算方式 | 说明 | 结果形态 |
|---|---|---|
| 原值 | 直接显示引用字段的值;一对多时显示为列表 | 数组 / 标量 |
| 去重 | 对多个引用值去重后显示 | 数组 |
| 去重计数 | 去重后的唯一值数量 | 数字 |
| 求和 | 对数值型引用值求和 | 数字 |
| 计数 | 统计满足条件的源记录数量 | 数字 |
| 平均值 | 对数值型引用值求平均 | 数字 |
| 最大值 | 取最大:支持数字与日期 | 数字 / 日期 |
| 最小值 | 取最小:支持数字与日期 | 数字 / 日期 |
空结果排查
聚合结果为空时,优先检查筛选条件是否命中:先用「计数」模式验证筛选能命中多少条记录,确认有数据后再切换为「求和」等数值聚合。
四、筛选条件
查找字段支持对源表记录设置多条件筛选,只有满足条件的记录才参与计算。
4.1 条件数量与连接
- 最多 5 个条件(超过会在保存时被拒绝)。
- 多个条件之间支持 AND / OR 组合:
- 满足全部条件(AND)
- 满足任一条件(OR)
4.2 单条条件结构
每条条件由三部分组成:
- 源表字段:源数据表中的某个字段(被过滤的字段)。
- 操作符:比较方式(见 4.3)。
- 比较值:由「值类型」决定(见 4.4)。
切换字段时:若新字段类型不支持当前操作符,系统会自动回退为「等于」;若新字段不是关联字段,原「当前记录」值类型会自动回退为「当前表字段」。 切换操作符为「为空 / 不为空」时,比较值输入会被清空(这两种操作符无需比较值)。
4.3 操作符(7 种)
系统共提供 7 种操作符,按源表字段类型自动启用适用项:
| 操作符 | 适用字段类型 |
|---|---|
| 等于 | 全部字段类型 |
| 不等于 | 全部字段类型 |
| 为空 | 全部字段类型 |
| 不为空 | 全部字段类型 |
| 包含 | 文本类(单行 / 多行 / 富文本 / 邮箱 / 电话 / 链接)+ 选择 / 人员 / 关联类(单选 / 多选 / 成员 / 协作者 / 关联字段) |
| 早于 | 日期类(日期 / 日期时间 / 创建时间 / 更新时间) |
| 晚于 | 日期类(日期 / 日期时间 / 创建时间 / 更新时间) |
TIP
「为空 / 不为空」不需要填写比较值;其余操作符需要配合「值类型」提供比较值。
4.4 比较值的三种来源(值类型)
| 值类型 | 说明 | 输入控件 |
|---|---|---|
| 当前表字段 | 与当前表某个字段的值比较 | 下拉选择当前表字段 |
| 自定义值 | 与手工录入的固定值比较 | 按源表字段类型动态渲染(数字 → 数字框,日期 → 日期选择器,其他 → 文本框) |
| 当前记录 | 与当前记录本身比较。仅当该条件的源表字段是关联字段时可选 | 无需输入 |
4.5 关联字段与显示值的匹配规则
关联字段在记录中存储的是目标表的记录 ID(单个 ID 或 ID 数组),而非显示值。因此:
- 要用「源表的关联字段」匹配「当前这条记录」,把值类型选为「当前记录」即可(系统会用当前记录 ID 与关联值做 ID 交集判断)。
- 若值类型选「当前表字段」并指定了一个文本字段(如项目名称),系统会自动把该显示值解析为对应的记录 ID 后再比较。
- 关联字段的「等于 / 包含」按记录 ID 交集判断:只要源记录的关联值中包含目标记录 ID 即视为命中;「不等于」则取无交集。
此外,当比较的一方是选择类字段(单选 / 多选,存储选项 ID)、另一方是文本(选项名称)时,系统会自动展开为「选项 ID + 选项名称」的候选集合后匹配,避免 ID 与名称直接比较导致永不匹配。
五、字段格式
对于非原值 / 去重模式(即去重计数、求和、计数、平均值、最大值、最小值),查找字段支持自定义结果格式;原值 / 去重模式下格式自动跟随源字段,不可修改。
| 格式类型 | 适用计算方式 | 配置项 |
|---|---|---|
| 数字 | 去重计数 / 求和 / 计数 / 平均值 / 最大最小 | 小数位数(0–10) |
| 货币 | 去重计数 / 求和 / 计数 / 平均值 / 最大最小 | 货币符号(如 ¥、$、€)+ 小数位数 |
| 日期 | 仅「最大值 / 最小值」且源字段为日期类型时可用 | 日期格式(YYYY-MM-DD、YYYY/MM/DD、YYYY年MM月DD日、YYYY-MM-DD HH:mm:ss) |
格式兼容性限制
- 去重计数 / 求和 / 计数 / 平均值:字段格式只能为「数字」或「货币」。
- 最大值 / 最小值:格式可为「数字」「货币」;当源字段为日期类型时还可选「日期」。
- 不支持「百分比」格式。
- 原值 / 去重模式的显示效果完全跟随引用字段原始类型(见下一节)。
六、显示与渲染
查找字段为只读单元格,其展示形式取决于计算方式:
- 原值 / 去重模式:按引用字段的原始类型结构化渲染:
- 单选 / 多选 → 彩色标签
- 成员 / 协作者 → 头像 + 名称
- 附件 → 缩略图 + 名称
- 复选框 → 是 / 否
- 数字 → 按源字段精度格式化
- 日期 → 按源字段日期格式格式化
- 聚合模式:显示格式化后的字符串(含货币符号、指定小数位等)。
- 计算结果为空时显示
-。
七、预览
在配置查找字段时,若当前记录已有关联数据,可点击「预览结果」实时查看计算结果,便于确认配置是否正确。预览需满足:
- 字段已保存(有字段 ID);
- 提供了当前记录 ID;
- 已选择源数据表与引用字段。
八、典型示例:按项目汇总任务工时
场景:A 表为「项目」,B 表为「任务」,B 表通过关联字段「所属项目」指向 A 表。现在需要在 A 表中统计每个项目下所有任务的工时合计。
配置步骤:
- 在 A 表点击「添加字段」,选择字段类型「查找」。
- 源数据表:选择 B 表(任务)。
- 引用字段:选择 B 表的「工时」字段。
- 过滤条件:字段选择 B 表的「所属项目」(关联字段),操作符选择「等于」,值类型选择「当前记录」。
- 计算方式:选择「求和」。
- 保存。
配置完成后,A 表每一行项目记录都会汇总「所属项目」指向自己的那些任务的工时。
常见误区
不要直接用「所属项目 = 项目名称」这类配置。B 表的「所属项目」存的是 A 表的记录 ID,而「项目名称」是文本,两者直接比较永远不会相等,会导致汇总结果为空。请改用「当前记录」。
九、与关联字段的关系
- 查找字段通常与关联字段配合使用,但源表并不强制要求当前表已创建关联字段。
- 源数据表必须是同一 Base 下的其他数据表,且不能是当前表本身。
- 用法一(正向限定):当前表存在指向源表的关联字段时,用筛选条件的值类型「当前表字段」把源记录限定到与当前记录关联的范围。
- 用法二(反向汇总):源表通过关联字段指回当前表时,用筛选条件的「当前记录」值类型实现反向汇总(见第八节示例)。
- 一个关联字段可被多个查找字段引用。
- 删除源表中被引用或用于筛选的字段后,依赖它的查找字段会失效(计算结果为空)。
十、字段类型转换
查找字段属于「引用 / 计算类型」,禁止转换为其他字段类型,也禁止被其他类型转换(与关联、汇总、按钮同属锁定类型)。如需调整,请删除后重新创建。详见 字段类型转换规则。
使用建议
- 需要简单引用时使用「原值」模式。
- 一对多关系需要汇总统计时,使用「求和」「计数」「平均值」等聚合模式。
- 需要排除部分关联记录时,添加筛选条件。
- 源表通过关联字段指回本表(如任务表关联项目表)时,筛选条件的值类型使用「当前记录」。
- 聚合结果为空时,先用「计数」验证筛选结果,再切换为「求和」等数值聚合。
