关系类函数
跨表取值 xlookup、从 JSON 里取字段 json.select、从数组型字符串里取第 n 个值 valueat,以及 JSONPath 写法。
把另一张表、一段 JSON 或一个数组里的值取到本列。xlookup 是「匹配」面板生成的那个函数;json.select 常配合 HTTP 连接和 JSON 导入使用。
说明
写法约定:列用列代码引用(如 AA6);函数名不分大小写;文本用英文双引号;条件里可用 and / or。示例里的「在结果列输入」指把公式写在新列的公式栏里。以下说明与应用内公式编辑器的「函数帮助」相同。
xlookup
查找表格,按条件匹配获取值
公式说明
查找原始表格,按条件匹配相等,获得“原始表格内容列“的值, 写入结果表格。
公式语法
在结果列写入:XLOOKUP(结果表条件匹配列, 原始表条件匹配列,原始表需查找的内容列)
- 参数均可使用数据列,即表格数据每列顶部的 CODE, 例如:AA1
- 结果表条件匹配列 : 结果表格要匹配的列(结果表格即当前公式写入的表格)
- 原始表条件匹配列 : 原始表格要搜索匹配的列
- 原始表需查找的内容列 : 原始表格要获取其内容列
vlookup
公式说明
在表格的第一列中查找值,并返回该值所在行的指定列中的值。
公式语法
在结果列输入:vlookup(查找值, 数据范围, 列序号, [匹配类型])
- 查找值:要在表格的第一列中查找的值
- 数据范围:包含查找值和返回值的表格范围
- 列序号:要返回值的列序号
- 匹配类型:可选,指定查找的匹配类型,默认为精确匹配
json.select
公式说明
通过 key 值, 获取 json 数据中的值.
公式语法
json.select("json 数据串","要选择的 key 值")
- json 数据串: 必须是合法的 json 字符串
- 数据中若不存在要选择的 key 值, 则返回空值
- 参数均可使用数据列,即表格数据每列顶部的 CODE, 例如:AA1
valueat
公式说明
在数组型的字符串中, 获得数组的第 n 个值。
公式语法
在结果列输入:valueat(数组型的字符串 / 列序号, 位置n)
- 数组型的字符串: 须为"[]"包裹, 例如: [1,2,3]; 如果字符串非数组型,则公式取值为空值
- 位置 n: 从 1 开始, 如果位置超过数组的长度, 返回空值
- 参数均可使用数据列,即表格数据每列顶部的 CODE, 例如:AA1
union
应用内暂无详细说明,以公式编辑器「函数帮助」为准。
convertunion
公式说明
将多个列的值合并为一个列。
公式语法
在结果列输入:convertunion(列序号1, 列序号2, ...)
- 列序号:要合并的列,如:AA1、AD12
convertselect
公式说明
从多个列中选择特定的列。
公式语法
在结果列输入:convertselect(列序号1, 列序号2, ...)
- 列序号:要选择的列,如:AA1、AD12
groupby
应用内暂无详细说明,以公式编辑器「函数帮助」为准。
JSONPath 写法
json.select、HTTP 连接的「定义数据结构」和 JSON 导入都用 JSONPath 定位 JSON 里的节点。类似 XPath 之于 XML,支持点号写法 $.store.book[0].title 和方括号写法 $['store']['book'][0]['title']。
| 符号 | 意思 |
|---|---|
$ |
根节点 |
. 或 [] |
子节点 |
.. |
任意深度的后代 |
* |
通配,所有成员 |
[n] |
数组第 n 个(从 0 起),[-1:] 最后一个 |
[a,b] |
多个下标 |
[start:end] |
切片 |
[?(表达式)] |
过滤,@ 代表当前元素,可用 && ` |
以这段 JSON 为例:
{ "store": { "book": [
{ "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century", "price": 8.95 },
{ "category": "fiction", "author": "Evelyn Waugh", "title": "Sword of Honour", "price": 12.99 },
{ "category": "fiction", "author": "Herman Melville", "title": "Moby Dick", "isbn": "0-553-21311-3", "price": 8.99 }
], "bicycle": { "color": "red", "price": 19.95 } } }
| 表达式 | 取到 |
|---|---|
$.store.book[*].author |
所有书的作者 |
$..author |
任意层级的 author |
$.store.* |
商店里的一切 |
$.store..price |
所有 price |
$..book[2] |
第三本书 |
$..book[-1:] |
最后一本 |
$..book[0,1] / $..book[:2] |
前两本 |
$..book[?(@.isbn)] |
有 isbn 的书 |
$..book[?(@.price < 10)] |
价格低于 10 的书 |
$..book[?(@.price < 30 && @.category == "fiction")] |
低于 30 的小说 |
$..* |
全部成员 |
接口返回「一个对象包着数组」时,在 HTTP 连接的定义数据结构里写到数组那一层(如 $.data.list[*]),每个元素就成为一行。