本文描述如何在 Tableau 中建立計算並設定其格式。其中列出了計算的基本元件,並說明各個計算的正確語法。

計算的組件

Tableau 中的計算由四個基本元件組成:

  • 函數 - 用於對欄位中的值或成員進行轉換的語句。

  • 欄位 - 資料來源中的維度或量值。

  • 運算子 - 指明運算的符號。

  • 常值運算式 - 按原樣表示的常數值,例如「Profitable」和「Unprofitable」。

    例如,假設有以下計算:

    IF [Profit per Day] > 000 THEN "Highly Profitable"
    ELSEIF [Profit per Day] <= 0 THEN "Unprofitable"
    ELSE "Profitable"
    END

    此計算的組件可分為以下各項:

    函數:IF、THEN、ELSEIF、ELSE 和 END

    欄位:每日收益

    運算子:> 和 <=

    文字運算式

    • 字串文字:「Highly Profitable」、「nprofitable」和「Profitable」
    • 數位文字:2000 和 0

    並非所有計算都需要包含所有四個元件。例如,計算可能不包含常值運算式,例如計算 SUM([Sales])/SUM([Cost]),該計算只包含函數 SUM、除法運算子 (/) 以及欄位「Sales」和「Cost」。

此外,計算還可包含:

  • 參數 - 可插入計算中以取代常量值的預留位置變數。

  • 注釋 - 有關計算或其各部分的備註,在對計算進行運算時不會包括注釋。

有關如何使用計算中的每個元件以及設定其格式更多資訊,請參閱下面的部分。

總覽:計算語法

組件語法範例

函數

有關如何為 Tableau 中的所有函數設定格式的範例,請參閱Tableau 函數(按字母順序)(連結在新視窗開啟)

SUM (expression)

欄位

計算中的欄位通常括在方括號 [ ]中。有關詳情,請參閱欄位語法

[Sales]

運算子

+-* /%===><>=<=!=<>^ANDORNOT( )。有關可在 Tableau 計算中使用的運算子類型以及這些運算子在公式中的執行順序的資訊,請參閱運算子語法

[Profit] - [Sales]

文字運算式

數位文字寫為數位。

字串文字帶有引號。

日期文字帶有 # 符號。

布林文字寫為 true 或 false。

Null 文字寫為 Null。

有關詳情,請參閱文字運算式語法

1.356727

"Unprofitable"

#August 22, 2005#

true false

Null

參數

計算中的參數應括在方括號 [ ]中。有關詳情,請參閱建立參數

[Profit Bin Size]

註解

要在計算中輸入註解,請鍵入兩個斜線 //。有關詳情,請參閱向計算中新增注釋

可以透過鍵入 /* 開始註釋和鍵入 */ 結束注釋來新增多行註釋。

SUM([Sales])/SUM([Profit]) //John's calculation

//To be used for profit ratio

//Do not edit

計算語法詳細資料

請參閱以下部分,瞭解有關 Tableau 計算的不同元件以及如何設定元件格式以在 Tableau 中工作詳情。

函數語法

函數是計算的主要元件,可用於各種不同用途。

函數在 Tableau 計算中顯示為灰色。

Tableau 中的每個函數都需要特定語法。例如,SUM 函數需要以下語法:SUM(expression)(例如,SUM([Sales]))。另一方面,PERCENTILE 函數需要以下語法:PERCENTILE(expression, number)(例如, PERCENTILE([Sales],0.90))。

可隨時查看如何使用具體函數與格式。

在 Tableau 中開啟函數清單:

  1. 選取「分析」>「建立導出欄位」

  2. 在開啟的計算編輯器中,按一下三角形圖示(位於編輯器的右邊)。

    將出現一個函數清單供您瀏覽。從該清單中選取函數後,會使用該函數要求的語法 (1) 和說明 (2) 更新最右側的部分,並提供一個或多個範例 (3)。

在計算中使用多個函數

您可以在計算中使用多個函數。例如:

ZN(SUM([Order Quantity])) - WINDOW_AVG(SUM([Order Quantity]))

該計算中有三個函數:ZN、SUM 和 WINDOW_AVG。

ZN 函數和 WINDOW_AVG 函數用減法運算子 (-) 分隔。

函數還可以包括在另一個函數中(即巢狀),上面範例中的 ZN(SUM([Order Quantity])) 部分就是這種情況。在這種情況下,將在計算 ZN 函數之前先計算「Order Quantity」的 SUM 函數,因為後者在括弧內部。有關相關原因詳情,請參閱括弧

欄位語法

可以在計算中插入欄位。函數的語法通常會指示應在計算中的何處插入欄位。例如:SUM(expression)

如果欄位名稱包含空格或不唯一,則計算中的欄位名稱應括在方括號 [ ]中。例如,[Sales Categories]。

使用的函數類型確定所使用的欄位類型。例如,對於 SUM 函數,您可以插入數值欄位,但不能插入日期欄位。有關詳情,請參閱瞭解計算中的資料類型

根據計算目的選擇包括在計算中的欄位。舉例來說,如果要計算利潤率,則您的計算將使用資料來源中的「Sales」(銷售額)和「Profit」(利潤)欄位:

SUM([Sales])/SUM([Profit])

若要向計算中新增欄位,請執行以下操作之一:

  • 將其從「資料」窗格或檢視拖放到計算編輯器中。

  • 在計算編輯器中,鍵入欄位名稱。附註:計算編輯器將嘗試自動填充欄位名稱。

欄位在 Tableau 計算中顯示為橙色。

運算子語法

若要建立計算,您需要瞭解 Tableau 支援的運算子。此部分討論可用的基本運算子以及這些運算子的執行順序(優先順序)。

運算子在 Tableau 計算中顯示為黑色。

+ (addition)

+ 運算子在應用于數字時表示相加,在應用于字串時表示串聯。在應用于日期時,可用於將天數與日期相加。例如:

7 + 3

Profit + Sales

'abc' + 'def' = 'abcdef'

#April 15, 2004# + 15 = #April 30, 2004#

– (subtraction)

- 運算子在應用于數字時表示相減,在應用于運算式時表示求反。在應用于日期時,可用於從日期中減去天數。因而,此運算子還可用於計算兩個日期之間的天數差異。例如:

7 - 3

Profit - Sales

-(7+3) = -10

#April 16, 2004# - 15 = #April 1, 2004#

#April 15, 2004# - #April 8, 2004# = 7

* (multiplication)

* 運算子表示數值相乘。例如,5 * 4 = 20

/ (division)

/ 運算子表示數值相除。例如,20 / 4 = 5

% (modulo)

% 運算子返回 除法運算的 餘數。例如,9 % 2 返回 1,因為 2 除 9 進四還餘 1。模數只能對整數進行運算。

==、=、>、<、>=、<=、!=、<>(比較)

這些是可以在運算式中使用的基本比較運算子。其含義如下:== 或 =(等於)、>(大於)、<(小於)、>=(大於或等於)、<=(小於或等於)、!= 和 <>(不等於)。

每個運算子比較兩個數位、日期或字串,並返回 TRUE、FALSE 或 NULL。

^(乘方)

此符號等效於 POWER 函數。它計算數字的指定次冪。

例如:

6^3 = 216

AND

這是邏輯運運算元。其兩側必須使用運算式或布林值。例如,

IIF(Profit =100 AND Sales =1000, "High", "Low")

如果兩個運算式都為 TRUE(即不是 FALSE,也不是 NULL),則結果為 TRUE。如果任一運算式為 NULL,則結果為 NULL。在所有其他情況下,結果都為 FALSE

如果所建立計算中的 AND 比較結果顯示在工作表上,Tableau 會顯示 TRUE 和 FALSE。如果要變更此情況,請使用設定格式對話方塊中的「設定格式」區域。

AND 運算子使用「短路求值」。這表示如果第一個運算式計算為 FALSE,則根本不會計算第二個運算式。如果第二個運算式在第一個運算式為 FALSE 時產生錯誤,則這可能十分有用,因為在這種情況下從不計算第二個運算式。

OR

這是邏輯運運算元。其兩側必須使用運算式或布林值。例如,

IIF(Profit =100 OR Sales =1000, "High", "Low")

如果任一運算式為 TRUE,則結果為 TRUE。如果兩個運算式都為 FALSE,則結果為 FALSE。如果兩個運算式都為 NULL,則結果為 NULL

如果所建立的計算中的 OR 比較結果顯示在工作表上,則 Tableau 顯示 TRUE 和 FALSE。如果要變更此情況,請使用設定格式對話方塊中的「設定格式」區域。

OR 運算子使用「短路求值」。這表示如果第一個運算式計算為 TRUE,則根本不會計算第二個運算式。如果第二個運算式在第一個運算式為 TRUE 時產生錯誤,則這可能十分有用,因為在這種情況下從不計算第二個運算式。

NOT

這是邏輯運運算元。此運算子可用於對另一個布林值或運算式求反。例如,

IIF(NOT(Sales = Profit),"Not Equal","Equal")

運算子優先順序

計算中的所有運算子都按特定順序運算。例如,2*1+2 等於 4 而不等於 6,因為乘法在加法之前執行(* 運算子始終先於 + 運算子運算)。

如果兩個運算子具有相同優先順序,例如加法和減法(+ 或 -),則在計算中從左向右進行運算。

可以使用括弧來變更優先順序順序。有關詳情,請參閱括弧部分。

優先順序運運算元
1–(求反)
2^(乘方)
3*, /, %
4+, –
5==, >, <, >=, <=, !=
6NOT
7AND
8OR

括弧

可以根據需要使用括弧來強制實施優先順序順序。括弧中的運算子優先於括弧外的運算子進行計算,從最內部的括弧開始向外計算。

例如,(1 + (2*2+1)*(3*6/3) ) = 31 的原因在於:最裡層括弧內的運算子會優先執行。該計算的運算順序如下:

  1. (2*2+1) = 5
  2. (3*6/3) = 6
  3. (1+ 5*6) = 31

文字運算式語法

此部分描述在 Tableau 計算中使用文字運算式的正確語法。常值運算式「按原樣」表示常量值。使用函數時,有時需要使用文字運算式表示數位、字串、日期等。

例如,假設您有一個以日期為輸入項的函數。鍵入「May 1, 2005」,而不是「#May 1, 2005#」,後者將被解釋為字串。這相當於使用一個日期函數將參數從字串轉換為日期(請參考 日期函式)。

可以在 Tableau 計算中使用數位、字串、日期、布林值和 Null 文字。下面介紹了每種類型以及如何設定其格式。

文字運算式在 Tableau 計算中顯示為黑灰色。

數位文字

數位文字寫為數位。例如,若要將數位 1 輸入為數位文字,則輸入 1。如果要將數位 0.25 作為數位文字輸入,則輸入 0.25

字串文字

可以使用單引號或雙引號編寫字串文字。如果字串內部包含單引號或雙引號,則需兩次鍵入該符號。例如,若要將字串「cat」作為字串常值輸入,則輸入 'cat'"cat"

此外,如果要鍵入字串「She’s my friend.」作為字串常值,請鍵入 'She’s my friend.'"She’s my friend."

日期文字

日期文字以井號 (#) 表示。若要輸入日期「August 22, 2005」作為常值日期,請輸入 ISO 格式的日期 #2005-08-22#

布林文字

布林文字寫為 true 或 false。若要輸入「true」作為布林值常值,請輸入 true

Null 文字

Null 文字寫為 Null。若要輸入「Null」作為 Null 常值,請輸入 Null

向計算中新增參數

參數是預留位置變數,可插入計算中取代常量值。在計算中使用參數時,您可以隨後在檢視或儀表板窗格中顯示一個參數控制項以允許使用者動態變更值。

有關詳情,請參閱在計算中使用參數

參數在 Tableau 計算中顯示為紫色。

附註:在 Web 上編輯檢視時,您無法建立參數。

向計算中新增注釋

您可以向計算中新增注釋,對計算及其各個部分進行備註。計算的運算中不會包括註解。

若要向計算中新增注釋,請鍵入兩個正斜杠 (//) 字元。

例如:

SUM([Sales])/SUM([Profit]) //John’s calculation

在此範例中,//John’s calculation 就是注釋。

注釋以兩條正斜杠開始,直至該行結束。若要繼續進行計算,您必須另起一行。

可以透過在斜線後加星號 (/*) 開始註解,並以星號加斜線 (*/) 結束註解來編寫多行註解。例如:

SUM([Sales])/SUM([Profit]) /* John's calculation
To be used for profit ratio
Do not edit */

注釋在 Tableau 計算中顯示為灰色。

瞭解計算中的資料類型

Tableau 支援字串、日期/日期時間、數位和布林資料類型。如果建立導出欄位,您需要瞭解如何在計算式中使用和組合不同資料類型。許多在定義計算時可供使用的函數僅適用於特定資料類型。

例如,DATEPART() 函數只能接受日期/日期時間資料類型作為參數。您可以輸入 DATEPART('year',#2004-04-15#),有效結果應該是:2004。無法輸入 DATEPART('year',"Tom Sawyer") 且得不到有效結果。事實上,此範例會返回錯誤,因為 "Tom Sawyer" 是字串,而不是日期/日期時間。

附註:雖然 Tableau 嘗試全面驗證所有計算,但在查詢資料庫前無法發現某些資料類型錯誤。這些問題會在執行查詢時而不是在計算對話方塊中導致顯示錯誤對話方塊。

下面介紹了 Tableau 支援的資料類型。請參閱 類型轉換 瞭解資料類型之間的轉換。

STRING

零個或更多字元組成的序列。例如,"Wisconsin"、"ID-44400"和 "Tom Sawyer" 都是字串。字元串透過單引號或雙引號進行識別。引號字元本身可以透過重複來包含在字串中。例如,‘O''Hanrahan’

DATE/DATETIME

日期或日期時間。例如「January 23, 1972」或者「January 23, 1972 12:32:00 AM」。如果要將以長型格式編寫的日期解釋為日期/日期時間,請在其兩端放置 # 符號。例如,「January 23, 1972」被視為字串資料型別,但是 #January 23, 1972# 被視為日期/日期時間資料類型。

數字

Tableau 中的數值可以為整數浮點數。

對於浮點數,某些彙總的結果可能並非總是完全符合預期。例如,您會發現 SUM 函數返回值(比如 -1.42e-14)作為欄位數,而您知道求和結果應該正好為 0。出現這種情況的原因是電氣電子工程師學會 (IEEE) 754 浮點標準要求數位以二進位格式儲存,這意味著數位有時會以極高的精度層級舍入。您可以透過將數位格式設定為顯示較少小數位來消除這種潛在誤差。更多資訊請參閱Tableau 函數(按類別)(連結在新視窗開啟)並選取「數字」。

用於測試浮點值是否相等的運算可能會因為相同的原因而出現不可預知的行為。在使用詳細層級運算式作為維度、進行分類篩選、建立臨時組、建立內/外集以及使用資料混合時,可能會進行此類比較。

附註:最大的有符號 64 位元整數為 9,223,372,036,854,775,807。連線至新資料來源後,資料類型設定為「數位(整數)」的任何行可容納最高達到此限制的值;如果數值較大,由於「數位(整數)」不使用浮點數,因此 Tableau 將顯示「Null」。當資料類型設定為「數字(十進位)」時,將可容納更大的值。

BOOLEAN

包含 TRUEFALSE 值的欄位。當比較結果未知時,會出現未知值。例如,運算式 7 > Null 會產生未知值。未知布林值會自動轉換為 Null。

另請參閱

瞭解 Tableau 中的計算

建立簡單的計算欄位

Tableau 中的計算入門

感謝您的意見回饋!