字串函數
本文介紹字串函數及其在 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(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,請考慮使用擷取。 |
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 Data、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
函數將為這些資料啦安返回以下錯誤:「Splitting from right is not supported by the data source.」
資料來源 | 左/右約束 | 最大拆分數 | 版本限制 |
Tableau 資料擷取 | 兩側 | 無限 | |
Microsoft Excel | 兩側 | 無限 | |
文字檔 | 兩側 | 無限 | |
Salesforce | 兩側 | 無限 | |
OData | 兩側 | 無限 | |
Google Analytics (分析) | 兩側 | 無限 | |
Tableau Data Server | 兩側 | 無限 | 版本 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 及更高版本 |