字符串函数
- 版本 :2022.1 及更高版本
适用于: Tableau Desktop, Tableau Online, Tableau Public, Tableau Server
本文介绍字符串函数及其在 Tableau 中的用法。它还演示了如何使用示例创建字符串计算。
为何使用字符串函数
字符串函数允许您操作字符串数据(即由文本组成的数据)。
例如,可能有一个包含所有客户的名字和姓氏的字段。一个成员可能为:Jane Johnson。您可以使用字符串函数将姓氏从所有客户拉取到一个新字段中。
计算可能如下所示:
SPLIT([Customer Name], ' ', 2)
因此,SPLIT('Jane Johnson' , ' ', 2) =
“Johnson”。
Tableau 中的可用字符串函数
函数 | 语法 | 定义 |
ASCII | ASCII(string) | 返回 示例:
|
CHAR | CHAR(number) | 返回通过 ASCII 代码 示例:
|
CONTAINS | CONTAINS(string, substring) | 如果给定字符串包含指定子字符串,则返回 true。 示例:
|
ENDSWITH | ENDSWITH(string, substring) | 如果给定字符串以指定子字符串结尾,则返回 true。会忽略尾随空格。 示例:
|
FIND | FIND(string, substring, [start]) | 返回 示例:
|
FINDNTH | FINDNTH(string, substring, occurrence) | 返回指定字符串内的第 n 个子字符串的位置,其中 n 由 occurrence 参数定义。 注意: 所有数据源都不可使用 FINDNTH。 示例:
|
LEFT | LEFT(string, number) | 返回字符串最左侧一定数量的字符。 示例:
|
LEN | LEN(string) | 返回字符串长度。 示例:
|
LOWER | LOWER(string) | 返回 示例:
|
LTRIM | LTRIM(string) | 返回移除了所有前导空格的字符串。 示例:
|
MAX |
| 返回 示例:
|
MID | (MID(string, start, [length]) | 返回从索引位置 示例:
|
MIN | MIN(a, b) | 返回 示例:
|
REPLACE | REPLACE(string, substring, replacement) | 在 示例:
|
RIGHT | RIGHT(string, number) | 返回 示例:
|
RTRIM | RTRIM(string) | 返回移除了所有尾随空格的 示例:
|
SPACE | SPACE(number) | 返回由指定 示例:
|
SPLIT | SPLIT(string, delimiter, token number) | 返回字符串中的一个子字符串,并使用分隔符字符将字符串分为一系列标记。字符串将被解释为分隔符和标记的交替序列。因此,对于字符串 abc-defgh-i-jkl,分隔符字符为“-”,标记为 abc、defgh、i 和 jkl。将这些标记想像为标记 1 至 4。SPLIT 将返回与标记编号对应的标记。如果标记编号为正,则从字符串的左侧开始计算标记;如果标记编号为负,则从右侧开始计算标记。示例:SPLIT (‘a-b-c-d’, ‘-‘, 2) = ‘b’SPLIT (‘a|b|c|d’, ‘|‘, -2) = ‘c’注意:可以为以下数据源类型使用拆分和自定义拆分命令:Tableau 数据提取、Microsoft Excel、文本文件、PDF 文件、Salesforce、OData、Microsoft Azure Market Place、Google Analytics、Vertica、Oracle、MySQL、PostgreSQL、Teradata、Amazon Redshift、Aster 数据、Google Big Query、Cloudera Hadoop Hive、Hortonworks Hive 和 Microsoft SQL Server。某些数据源在拆分字符串时会有限制。下表显示了哪些数据源支持负标记数量(从右拆分),以及每个数据源允许的拆分数是否有限制。指定负标记编号并且对其他数据源合法的 SPLIT 函数对于这些数据源将返回以下错误:“数据源不支持从右拆分。” 数据源左/右约束最大拆分数量版本限制Tableau 数据提取两侧无限 Microsoft Excel两侧无限 文本文件两侧无限 Salesforce两侧无限 OData两侧无限 Google Analytics两侧无限 Tableau 数据服务器两侧无限在版本 9.0 中支持。Vertica仅左侧10 Oracle仅左侧10 MySQL两侧10 PostgreSQL在版本 9.0 之前仅左侧;版本 9.0 及更高版本中为两侧10 Teradata仅左侧10版本 14 及更高版本Amazon Redshift仅左侧10 Aster Database仅左侧10 Google BigQuery仅左侧10 Hortonworks Hadoop Hive仅左侧10 Cloudera Hadoop仅左侧10版本 2.3.0 中开始支持 Impala。Microsoft SQL Server两侧102008 及更高版本 |
STARTSWITH | STARTSWITH(string, substring) | 如果 示例:
|
TRIM | TRIM(string) | 返回移除了前导和尾随空格的字符串。 示例:
|
UPPER | UPPER(string) | 返回字符串,其所有字符为大写。 示例:
|
创建字符串计算
按照下面的步骤进行操作以了解如何创建字符串计算。
在 Tableau Desktop 中,连接到 Tableau 附带的“Sample - Superstore”已保存数据源。
导航到工作表。
从“数据”窗格中的“维度”下,将“Order ID”(订单 ID)拖到“行”功能区。
请注意,每个订单 ID 都包含国家/地区值(例如,CA 和 US)、年份值 (2011),以及订单编号值 (100006)。对于此示例,您将创建一个计算以仅从字段中拉取订单编号。
选择“分析”>“创建计算字段”。
在打开的计算编辑器中,执行以下操作:
将计算字段命名为“Order ID Numbers”(订单 ID 编号)。
输入以下公式:
RIGHT([Order ID], 6)
此公式从字符串的右侧获取指定位数 (6) 的数字,并将其拉取到新字段中。
因此,
RIGHT('CA-2011-100006' , 6)
=“100006”。完成后,单击“确定”。
新的计算字段将出现在“数据”窗格中的“维度”下。就像其他字段一样,您可以在一个或多个可视化项中使用该字段。
从“数据”窗格中,将“Order ID Numbers”(订单 ID 编号)拖到“行”功能区。将其放在“Order Id”(订单 Id)的右侧。
留意这些字段现在的不同之处。