字符串函数

本文介绍字符串函数及其在 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。

如果添加了可选参数 start,则函数会忽略在起始位置之前出现的任何子字符串的实例。

示例
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
说明

所有数据源都不可使用 FINDNTH

另请参见附加函数文档(链接在新窗口中打开)中支持的正则表达式。

LEFT

语法 LEFT(string, number)
输出字符串
定义返回字符串最左侧一定 <number> 的字符。
示例
LEFT("Matador", 4) = "Mata"
说明另请参见 MIDRIGHT

LEN

语法LEN(string)
输出数字
定义返回字符串长度。
示例
LEN("Matador") = 7
说明不要与空间函数 LENGTH(链接在新窗口中打开) 混淆。

LOWER

语法LOWER(string)
输出字符串
定义以全小写字符返回提供的 <string>
示例
LOWER("ProductVersion") = "productversion"
说明另请参见 UPPERPROPER

LTRIM

语法 LTRIM(string)
输出字符串
定义返回移除了所有前导空格的所提供的 <string>
示例
LTRIM(" Matador ") = "Matador "
说明另请参见 RTRIM

MAX

语法MAX(expression)MAX(expr1, expr2)
输出与参数相同的数据类型,或者,如果参数的任何部分为 null,则为 NULL 
定义

返回两个参数(必须为相同数据类型)中的最大值。

MAX 也可以聚合形式应用于单个字段。

示例
MAX(4,7) = 7
MAX(#3/25/1986#, #2/20/2021#) = #2/20/2021#
MAX([Name]) = "Zander"
说明

对于字符串

MAX 通常是按字母顺序排在最后的值。

对于数据库数据源,MAX 字符串值在数据库为该列定义的排序序列中最高。

对于日期

对于日期,MAX 是最近的日期。如果 MAX 是聚合,结果不会有日期层次结构。如果 MAX 是比较,结果将保留日期层次结构。

作为聚合

MAX(expression) 是聚合函数,返回单个聚合结果。这在可视化项中显示为 AGG(expression)

作为比较

MAX(expr1, expr2) 比较这两个值并返回一个行级值。

另请参见 MIN

MID

语法(MID(string, start, [length])
输出字符串
定义

返回从指定 start 位置处开始的字符串t。字符串中第一个字符的位置为 1。

如果添加了可选数字参数 length,则返回的字符串仅包含该数量的字符。

示例
MID("Calculation", 2) = "alculation"
MID("Calculation", 2, 5) ="alcul"
说明另请参见附加函数文档(链接在新窗口中打开)中支持的正则表达式。

MIN

语法MIN(expression)MIN(expr1, expr2)
输出与参数相同的数据类型,或者,如果参数的任何部分为 null,则为 NULL 
定义

返回两个参数(必须为相同数据类型)中的最小值。

MIN 也可以聚合形式应用于单个字段。

示例
MIN(4,7) = 4
MIN(#3/25/1986#, #2/20/2021#) = #3/25/1986#
MIN([Name]) = "Abebi"
说明

对于字符串

MIN 通常是按字母顺序排列在前面的值。

对于数据库数据源,MIN 字符串值在数据库为该列定义的排序序列中最低。

对于日期

对于日期,MIN 是最早的日期。如果 MIN 是聚合,结果不会有日期层次结构。如果 MIN 是比较,结果将保留日期层次结构。

作为聚合

MIN(expression) 是聚合函数,返回单个聚合结果。这在可视化项中显示为 AGG(expression)

作为比较

MIN(expr1, expr2) 比较这两个值并返回一个行级值。

另请参见 MAX

PROPER

语法PROPER(string)
输出字符串
定义

返回所提供的 <string>,每个单词的第一个字母大写,其余字母小写。

示例
PROPER("PRODUCT name") = "Product Name"
PROPER("darcy-mae") = "Darcy-Mae"
说明

空格和非字母数字字符(如标点符号)被视为分隔符。

另请参见 LOWERUPPER

数据库限制PROPER 仅适用于某些平面文件和数据提取。如果您需要在不支持 PROPER 的数据源中使用 PROPER,请考虑使用数据提取。

REPLACE

语法REPLACE(string, substring, replacement
输出字符串
定义<string> 中搜索 <substring> 并将其替换为 <replacement>。如果未找到 <substring>,则字符串保持不变。
示例
REPLACE("Version 3.8", "3.8", "4x") = "Version 4x"
说明另请参见附加函数文档(链接在新窗口中打开)中的 REGEXP_REPLACE
语法RIGHT(string, number)
输出字符串
定义返回字符串最右侧一定 <number> 的字符。
示例
RIGHT("Calculation", 4) = "tion"
说明另请参见 LEFTMID

RTRIM

语法RTRIM(string)
输出字符串
定义返回移除了所有尾随空格的所提供的 <string>
示例
RTRIM(" Calculation ") = " Calculation"
说明另请参见 LTRIMTRIM

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"
说明

字符串将被解释为分隔符和标记的交替序列。因此,对于字符串 abc-defgh-i-jkl,分隔符字符为“-”,标记为 (1) abc、(2) defgh、(3) i 和 (4) jlk

SPLIT 将返回与标记编号对应的标记。如果标记编号为正,则从字符串的左侧开始计算标记;如果标记编号为负,则从右侧开始计算标记。

另请参见附加函数文档(链接在新窗口中打开)中支持的正则表达式。

数据库限制

可以为以下数据源类型使用拆分和自定义拆分命令: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)
输出布尔值
定义如果 stringsubstring 开头,则返回 true。会忽略前导空格。
示例
STARTSWITH("Matador, "Ma") = TRUE
说明另请参见附加函数文档(链接在新窗口中打开)中的 CONTAINS 以及支持的正则表达式。

TRIM

语法TRIM(string)
输出字符串
定义返回移除了前导和尾随空格的所提供的 <string>
示例
TRIM(" Calculation ") = "Calculation"
说明另请参见 LTRIMRTRIM

UPPER

语法UPPER(string)
输出字符串
定义以全大写字符返回提供的 <string>
示例
UPPER("Calculation") = "CALCULATION"
说明另请参见 PROPERLOWER

创建字符串计算

按照下面的步骤进行操作以了解如何创建字符串计算。

  1. 在 Tableau Desktop 中,连接到 Tableau 附带的示例 - 超市已保存数据源。

  2. 导航到工作表。

  3. 从“数据”窗格中的“维度”下,将“Order ID”(订单 ID)拖到“行”功能区。

    请注意,每个订单 ID 都包含国家/地区值(例如,CA 和 US)、年份值 (2011),以及订单编号值 (100006)。对于此示例,您将创建一个计算以仅从字段中拉取订单编号。

  4. 选择“分析”>“创建计算字段”

  5. 在打开的计算编辑器中,执行以下操作:

    • 将计算字段命名为“Order ID Numbers”(订单 ID 编号)。

    • 输入以下公式:

      RIGHT([Order ID], 6)

      此公式从字符串的右侧获取指定位数 (6) 的数字,并将其拉取到新字段中。

      因此,RIGHT('CA-2011-100006' , 6) =“100006”。

    • 完成后,单击“确定”

      新的计算字段将出现在“数据”窗格中的“维度”下。就像其他字段一样,您可以在一个或多个可视化项中使用该字段。

  6. 从“数据”窗格中,将“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两侧102008 及更高版本

另请参见

Tableau 中的函数

Tableau 函数(按字母顺序)

Tableau 函数(按类别)

在 Tableau 中设置计算的格式

感谢您的反馈!您的反馈已成功提交。谢谢!