字串函數

本文介紹字串函數及其在 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。

如果新增了可選引數 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 位置開始的字串。字串中第一個字元的位置為 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,請考慮使用擷取。

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 Data、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 函數將為這些資料啦安返回以下錯誤:「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兩側102008 及更高版本

另請參閱

Tableau 中的函數

Tableau 函數(按字母順序)

Tableau 函數(按類別)

在 Tableau 中設定計算的格式

感謝您的意見反應!已成功提交您的意見回饋。謝謝!