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

如果您只需要清理文本周围多余的空格,可以使用 trimltrimrtrim 表达式代替。

本节介绍与 Metabase substring 表达式工作方式相同的函数和公式,并附有关于如何为您的用例选择最佳选项的注释。

Metabase 表达式

其他工具

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 版本的文档。