字符串函数
本文介绍字符串函数及其在 Tableau 中的用法。它还演示了如何使用示例创建字符串计算。
为何使用字符串函数
字符串函数允许您操作字符串数据(即由文本组成的数据)。Tableau 在比较字符串时使用当前的 Unicode 国际化组件 (ICU) 库。字符串的排序和比较方式基于语言和区域设置,并且随着 ICU 不断更新以获得更好的语言支持,可视化项可能会发生变化。
例如,可能有一个包含所有客户的名字和姓氏的字段。一个成员可能为:Jane Johnson。您可以使用字符串函数将姓氏从所有客户拉取到一个新字段中。
计算可能如下所示:
SPLIT([Customer Name], ' ', 2)
因此,SPLIT('Jane Johnson' , ' ', 2) =
“Johnson”。
Tableau 中的可用字符串函数
ASCII
语法 | ASCII(string) |
输出 | 数字 |
定义 | 返回 <string> 的第一个字符的 ASCII 码。 |
示例 | ASCII('A') = 65 |
说明 | 这是 CHAR 函数的反函数。 |
CHAR
语法 | CHAR(number) |
输出 | 字符串 |
定义 | 返回通过 ASCII 代码 <number> 编码的字符。 |
示例 | CHAR(65) = 'A' |
说明 | 这是 ASCII 函数的反函数。 |
CONTAINS
语法 | CONTAINS(string, substring) |
输出 | 布尔值 |
定义 | 如果给定字符串包含指定子字符串,则返回 true。 |
示例 | CONTAINS("Calculation", "alcu") = true |
说明 | 另请参见逻辑函数(链接在新窗口中打开) IN 以及附加函数文档(链接在新窗口中打开)中支持的正则表达式。 |
ENDSWITH
语法 | ENDSWITH(string, substring) |
输出 | 布尔值 |
定义 | 如果给定字符串以指定子字符串结尾,则返回 true。会忽略尾随空格。 |
示例 | ENDSWITH("Tableau", "leau") = true |
说明 | 另请参见附加函数文档(链接在新窗口中打开)中支持的正则表达式。 |
FIND
语法 | FIND(string, substring, [start]) |
输出 | 数字 |
定义 | 返回子字符串在字符串中的索引位置,如果未找到子字符串,则返回 0。字符串中第一个字符的位置为 1。 如果添加了可选参数 |
示例 | FIND("Calculation", "alcu") = 2 FIND("Calculation", "Computer") = 0 FIND("Calculation", "a", 3) = 7 FIND("Calculation", "a", 2) = 2 FIND("Calculation", "a", 8) = 0 |
说明 | 另请参见附加函数文档(链接在新窗口中打开)中支持的正则表达式。 |
FINDNTH
语法 | FINDNTH(string, substring, occurrence) |
输出 | 数字 |
定义 | 返回指定字符串内的第 n 个子字符串的位置,其中 n 由 occurrence 参数定义。 |
示例 | FINDNTH("Calculation", "a", 2) = 7 |
说明 | 所有数据源都不可使用 另请参见附加函数文档(链接在新窗口中打开)中支持的正则表达式。 |
LEFT
语法 | LEFT(string, number) |
输出 | 字符串 |
定义 | 返回字符串最左侧一定 <number> 的字符。 |
示例 | LEFT("Matador", 4) = "Mata" |
说明 | 另请参见 MID 和 RIGHT。 |
LEN
语法 | LEN(string) |
输出 | 数字 |
定义 | 返回字符串长度。 |
示例 | LEN("Matador") = 7 |
说明 | 不要与空间函数 LENGTH (链接在新窗口中打开) 混淆。 |
LOWER
语法 | LOWER(string) |
输出 | 字符串 |
定义 | 以全小写字符返回提供的 <string> 。 |
示例 | LOWER("ProductVersion") = "productversion" |
说明 | 另请参见 UPPER 和 PROPER。 |
LTRIM
语法 | LTRIM(string) |
输出 | 字符串 |
定义 | 返回移除了所有前导空格的所提供的 <string> 。 |
示例 | LTRIM(" Matador ") = "Matador " |
说明 | 另请参见 RTRIM。 |
MAX
语法 | MAX(expression) 或 MAX(expr1, expr2) |
输出 | 与参数相同的数据类型,或者,如果参数的任何部分为 null,则为 NULL 。 |
定义 | 返回两个参数(必须为相同数据类型)中的最大值。
|
示例 | MAX(4,7) = 7 |
说明 | 对于字符串
对于数据库数据源, 对于日期 对于日期, 作为聚合
作为比较
另请参见 |
MID
语法 | (MID(string, start, [length]) |
输出 | 字符串 |
定义 | 返回从指定 如果添加了可选数字参数 |
示例 | MID("Calculation", 2) = "alculation" MID("Calculation", 2, 5) ="alcul" |
说明 | 另请参见附加函数文档(链接在新窗口中打开)中支持的正则表达式。 |
MIN
语法 | MIN(expression) 或 MIN(expr1, expr2) |
输出 | 与参数相同的数据类型,或者,如果参数的任何部分为 null,则为 NULL 。 |
定义 | 返回两个参数(必须为相同数据类型)中的最小值。
|
示例 | MIN(4,7) = 4 |
说明 | 对于字符串
对于数据库数据源, 对于日期 对于日期, 作为聚合
作为比较
另请参见 |
PROPER
语法 | PROPER(string) |
输出 | 字符串 |
定义 | 返回所提供的 |
示例 | PROPER("PRODUCT name") = "Product Name" PROPER("darcy-mae") = "Darcy-Mae" |
说明 | 空格和非字母数字字符(如标点符号)被视为分隔符。 |
数据库限制 | PROPER 仅适用于某些平面文件和数据提取。如果您需要在不支持 PROPER 的数据源中使用 PROPER,请考虑使用数据提取。 |
REPLACE
语法 | REPLACE(string, substring, replacement |
输出 | 字符串 |
定义 | 在 <string> 中搜索 <substring> 并将其替换为 <replacement> 。如果未找到 <substring> ,则字符串保持不变。 |
示例 | REPLACE("Version 3.8", "3.8", "4x") = "Version 4x" |
说明 | 另请参见附加函数文档(链接在新窗口中打开)中的 REGEXP_REPLACE 。 |
RIGHT
语法 | RIGHT(string, number) |
输出 | 字符串 |
定义 | 返回字符串最右侧一定 <number> 的字符。 |
示例 | RIGHT("Calculation", 4) = "tion" |
说明 | 另请参见 LEFT 和 MID。 |
RTRIM
语法 | RTRIM(string) |
输出 | 字符串 |
定义 | 返回移除了所有尾随空格的所提供的 <string> 。 |
示例 | RTRIM(" Calculation ") = " Calculation" |
说明 | 另请参见 LTRIM 和 TRIM。 |
SPACE
语法 | SPACE(number) |
输出 | 字符串(具体来说,只是空格) |
定义 | 返回由指定数量的重复空格组成的字符串。 |
示例 | SPACE(2) = " " |
SPLIT
语法 | SPLIT(string, delimiter, token number) |
输出 | 字符串 |
定义 | 返回字符串中的一个子字符串,并使用分隔符字符将字符串分为一系列标记。 |
示例 | 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 函数限制。 |
STARTSWITH
语法 | STARTSWITH(string, substring) |
输出 | 布尔值 |
定义 | 如果 string 以 substring 开头,则返回 true。会忽略前导空格。 |
示例 | STARTSWITH("Matador, "Ma") = TRUE |
说明 | 另请参见附加函数文档(链接在新窗口中打开)中的 CONTAINS 以及支持的正则表达式。 |
TRIM
语法 | TRIM(string) |
输出 | 字符串 |
定义 | 返回移除了前导和尾随空格的所提供的 <string> 。 |
示例 | TRIM(" Calculation ") = "Calculation" |
说明 | 另请参见 LTRIM 和 RTRIM。 |
UPPER
语法 | UPPER(string) |
输出 | 字符串 |
定义 | 以全大写字符返回提供的 <string> 。 |
示例 | UPPER("Calculation") = "CALCULATION" |
说明 | 另请参见 PROPER 和 LOWER。 |
创建字符串计算
按照下面的步骤进行操作以了解如何创建字符串计算。
在 Tableau Desktop 中,连接到 Tableau 附带的示例 - 超市已保存数据源。
导航到工作表。
从“数据”窗格中的“维度”下,将“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)的右侧。
留意这些字段现在的不同之处。
按数据源划分的 SPLIT 限制
某些数据源在拆分字符串时会有限制。下表显示了哪些数据源支持负标记数量(从右拆分),以及每个数据源允许的拆分数是否有限制。
指定负标记编号并且对其他数据源合法的 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 | 两侧 | 10 | 2008 及更高版本 |