在 Tableau 中設定計算的格式

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

計算的組件

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

  • 函數 : 用於轉換欄位中的值或成員的陳述式。
    • 函數需要 引數或特定資訊。不同函數的引數可以是欄位、常值、參數或巢狀函數。
  • 欄位 : 資料來源中的維度或量值。
  • 運算子 : 代表運算的符號。
  • 常值运算式: 按原樣表示的常數值,例如「High」和「1500」。

並非所有計算都需要包含所有四個元件。此外,計算還可包含:

  • 參數:可插入計算以取代常量值的預留位置變數。有關參數至詳情,請參閱建立參數
  • 注釋 : 有關計算或其各部分的附註,在對計算進行運算時不會包括注釋。

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

計算範例說明

例如,請考慮以下計算,該計算在日期中新增 14 天 ([首次就診])。類似計算對於自動查找兩週跟進的日期可能很有用。

DATEADD('day', 14, [Initial Visit)

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

  • 函數DATEADD,這需要三個引數。
    • date_part ('day')
    • interval (14)
    • date ([Initial Visit]).
  • 欄位:[Initial Visit]
  • 運算子:不適用
  • 文字運算式
    • 字串文字:'day'
    • 數字文字:14

在此範例中,可使用參數取代硬編碼常數 14,使用者可使用該參數選擇需要多少天進行跟進預約。

DATEADD('day', [How many days out?], [Initial Visit)

總覽:計算語法

元件語法範例

函數

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

SUM(expression)

欄位

計算中的欄位通常括在方括號 [ ]中。

有關詳情,請參閱欄位語法

[Category]

運算子

+-* /%===><>=<=!=<>^ANDORNOT( )

有關可在 Tableau 計算中使用的運算子類型以及這些運算子在公式中的執行順序的資訊,請參閱運算子語法

[Price]*(1-[discount])

文字運算式

數位文字寫為數位。

字串文字帶有引號。

日期文字帶有 # 符號。

布林文字寫為 true 或 false。

Null 文字寫為 Null。

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

1.3567

"Unprofitable"

#August 22, 2005#

true

Null

參數

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

[Bin Size]

註解

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

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

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

/*John's calculation

To be used for profit ratio

Do not edit*/

計算語法詳細資料

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

函數語法

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

Tableau 中的每個函數都需要特定語法。例如,以下計算使用函數 LEN 和 LEFT 以及多個邏輯運算子(IF、THEN、ELSE、END 與 >)。

IF LEN([Name])> 5 THEN LEFT([Name],5) ELSE [Name] END

  • LEN 有一個引數,例如 LEN([Name]),它會傳回「名稱」欄位中每個值的字元數(即長度)。
  • LEFT 有兩個參數、一個欄位與一個數字,例如 LEFT([Name], 5),它會傳回「名稱」欄位中從左側開始的每個值的前五個字元。
  • 邏輯運算子 IF、THEN、ELSE 與 END 一起建立邏輯測試。

此計算評估名稱的長度,如果超過五個字符,則僅傳回前五個字符。否則,它會傳回整個名稱。

在該計算編輯器中,函數為藍色。

使用計算編輯器參考窗格

可隨時查看如何使用具體函數與格式。在 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, 2024# + 15 = #April 30, 2024#

– (subtraction)

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

例如:

  • 7 - 3
  • Profit - Sales
  • -(7+3) = -10
  • #April 16, 2024# - 15 = #April 1, 2024#
  • #April 15, 2024# - #April 8, 2024# = 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")

請參閱邏輯函數 AND 深入了解。

OR

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

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

請參閱邏輯函數 OR 深入了解。

NOT

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

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

其他運算子

CASE、ELSE、ELSEIF、IF、THEN、WHEN 與 END 也用於 邏輯函數

運算子優先順序

計算中的所有運算子都按特定順序運算。例如,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',則輸入 "'cat'"。如果要輸入字串 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 計算中顯示為紫色。

向計算中新增注釋

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

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

例如:

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

在這個範例中,//My calculation 是註解。

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

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

SUM([Sales])/SUM([Profit])
/* This calculation is
used for profit ratio.
Do not edit */

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

瞭解計算中的資料類型

如果建立計算欄位,則需要瞭解如何在計算中使用和組合不同資料類型(連結在新視窗開啟)。許多在定義計算時可供使用的函數僅適用於特定資料類型。

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

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

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

字串

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

日期/日期時間

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

數字

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

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

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

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

布林值

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

另請參閱

瞭解 Tableau 中的計算

建立簡單的計算欄位

Tableau 中的計算入門

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