Substring
substring
提取部分文本。此函数对于清理具有一致格式的文本(或任何具有字符串数据类型的值)非常有用。
例如,substring
应该非常适合 SKU 编号、ISO 代码和标准化电子邮件地址等字符串。
语法 | 示例 |
---|---|
substring(text, position, length) |
substring("[email protected]", 1, 7) |
从给定起点(位置)和长度(字符数)的文本中提取部分文本。 | “user_id” |
参数
- 字符串中的第一个字符位于位置 1。
- 子字符串的长度应始终为正数。
从左侧获取子字符串
任务 ID | 代理 |
---|---|
19951113006 | 006 |
20061114007 | 007 |
19640917008 | 008 |
代理 是具有以下表达式的自定义列
substring([Mission ID], 9, 3)
从右侧获取子字符串
您将使用以下公式代替使用数字作为位置
1 + length([column]) - position_from_right
其中 position_from_right
是您要从右到左计数的字符数。
任务 ID | 代理 |
---|---|
19951113006 | 006 |
20061114007 | 007 |
19640917008 | 008 |
在这里,代理 是具有以下表达式的自定义列
substring([Mission ID], (1 + length([Mission ID]) - 3), 3)
接受的数据类型
数据类型 | 适用于 substring |
---|---|
字符串 | ✅ |
数字 | ❌ |
时间戳 | ❌ |
布尔值 | ❌ |
JSON | ❌ |
限制
substring
通过计数固定数量的字符来提取文本。如果您需要根据更复杂的逻辑提取文本,请尝试 regexextract
。
如果您只需要清理文本周围多余的空格,可以使用 trim
、ltrim
或 rtrim
表达式代替。
相关函数
本节介绍与 Metabase substring
表达式工作方式相同的函数和公式,并附有关于如何为您的用例选择最佳选项的注释。
其他工具
Regexextract
如果您需要根据更具体的规则提取文本,请使用 regexextract。例如,您可以使用正则表达式模式获取代理 ID,该模式查找最后一次出现的“00”(及其后的所有内容)
regexextract([Mission ID], ".+(00.+)$")
应返回与以下内容相同的结果
substring([Mission ID], 9, 3)
SQL
当您使用笔记本编辑器运行问题时,Metabase 会将您的图形查询设置(筛选器、汇总等)转换为查询,并针对您的数据库运行该查询以获取结果。
如果我们的示例数据存储在 PostgreSQL 数据库中
SELECT
mission_id,
SUBSTRING(mission_id, 9, 3) AS agent
FROM
this_message_will_self_destruct;
等效于 Metabase substring
表达式
substring([Mission ID], 9, 3)
电子表格
如果我们的示例数据在电子表格中,“任务 ID”位于 A 列中,
=mid(A2,9,3)
与 Metabase substring
表达式相同
substring([Mission ID], 9, 3)
Python
假设示例数据位于名为 df
的数据帧列中,
df['Agent'] = df['Mission ID'].str.slice(8, 11)
与 Metabase substring
表达式执行相同的操作
substring([Mission ID], 9, 3)
延伸阅读
阅读其他Metabase 版本的文档。