詳細層級運算式(也稱為 LOD 運算式)允許您在資料來源層級和視覺效果層級計算值。但是,LOD 運算式可以讓您更好地控制要計算的細微性層級。它們可以在較高細微性層級(包括)、較低細微性層級(排除)或完全獨立層級(固定)執行。
本文介紹可在 Tableau 中使用的 LOD 運算式的類型,以及何時使用這些運算式及如何設定它們的格式。本文還使用範例來示範如何建立一個簡單的 LOD 運算式。
如何建立 LOD 運算式
按照下面的步驟進行操作,瞭解如何在 Tableau 中建立和使用 LOD 運算式。
步驟 1:設定視覺效果
開啟 Tableau Desktop 並連線到 [Sample - Superstore] 已儲存資料來源。
巡覽到新工作表。
從 [資料] 窗格中的 [維度] 下,將 [Region] (區域)拖到 [欄] 架。
從 [資料] 窗格中的 [度量] 下,將 [Sales] (銷售額)拖到 [列] 架。
將出現一個顯示各區域銷售額總和的橫條圖。
步驟 2:建立 LOD 運算式
也許您還想檢視各區域每個客戶的平均銷售額,而不是各區域所有銷售額的總和。可以使用 LOD 運算式來達到此目的。
選取 [分析] > [建立計算欄位]。
在開啟的計算編輯器中,執行以下操作:
將計算命名為 [Sales Per Customer] (每個客戶的銷售額)。
輸入以下 LOD 運算式:
{ INCLUDE [Customer Name] : SUM([Sales]) }
完成後,按一下 [確定]。
新建立的 LOD 運算式將新增到 [資料] 窗格的 [度量] 下。若要詳細瞭解您可使用的 LOD 運算式的類型,請參閱LOD 運算式的類型部分。
步驟 3:在視覺效果中使用 LOD 運算式
從 [資料] 窗格中的 [度量] 下,將 [Sales Per Customer] (每個客戶的銷售額)拖到 [列] 架,並將其放在 [SUM(Sales)] 左側。
在 [列] 架上,以右鍵按一下 [Sales Per Customer] (每個客戶的銷售額),並選取 [度量(求和)] > [平均值] 。
您現在既可以看到所有銷售額的總和,也可以看到各區域每個客戶的平均銷售額。例如,您可以看到中部區域的總銷售額約為 500,000 USD,每個客戶的平均銷售額約為 800 USD。
使用快速 LOD 運算式
從 Tableau 2021.1 開始,可以建立 FIXED LOD 運算式,而無需將完整的計算輸入到計算對話方塊中。
有兩種建立快速 LOD 計算的方法。
按住 Control 按一下(或在 Mac 上按住 Command 按一下)要彙總的度量,然後將其拖動到要彙總的維度。將出現一個新欄位,其中包含新的 FIXED LOD 計算。
第二個選項是,選取要彙總的度量,然後按住 Control 按一下(或在 Mac 上按住 Command 並按一下)以選取要彙總的維度。
右鍵按一下所選欄位,然後選取「建立」>「快速 LOD」。
在出現的計算對話方塊中選取「確定」,以完成 LOD 的建立。
LOD 運算式的類型
您可以在 Tableau 中建立三種類型的 LOD 運算式:
您也可以將 LOD 運算式的作用範圍限定為表。這種運算式稱為表範圍LOD 運算式。
FIXED
FIXED 詳細層級運算式使用指定的維度計算值,而不引用檢視中的維度。
範例
以下 FIXED 詳細層級運算式計算每個區域的銷售額總和:
{FIXED [Region] : SUM([Sales])}
此詳細層級運算式(名為 [Sales by Region])隨後將放在 [文字] 上以顯示各區域的總銷售額:
檢視詳細層級為 [Region] 加 [State],但由於 FIXED 詳細層級運算式不考慮檢視詳細層級,因此計算只使用計算中引用的維度,在本例中為 [Region] (區域)。出於此原因,您可能會看到各區域中單一縣/市的值是相同的。有關為何會發生這種情況的詳情,請參閱彙總和詳細層級運算式。
如果詳細層級運算式中使用了 INCLUDE 關鍵字(而不是 FIXED),則每個縣/市的值將不同,原因是 Tableau 將隨檢視中的任何其他維度 ([State]) 一起新增運算式中的維度 ([Region]) 來確定運算式的值。結果將如下所示:
INCLUDE
除了檢視中的任何維度之外,INCLUDE 詳細層級運算式還將使用指定的維度計算值。
如果您想要在資料庫中以精細詳細層級計算,然後重新彙總並在檢視中以粗略詳細層級顯示,則 INCLUDE 詳細層級運算式可能非常有用。當您在檢視中新增或移除維度時,基於 INCLUDE 詳細層級運算式的欄位將隨之變更。
範例 1
以下 INCLUDE 詳細層級運算式計算每個客戶的總銷售額:
{ INCLUDE [Customer Name] : SUM([Sales]) }
將該計算放在 [列] 架上(以 AVG 形式彙總),並將 [地區] 維度放在 [欄] 架上時,檢視將顯示每個區域的平均客戶銷售額:
如果隨後將 [Sales] (銷售額) 度量拖到 [列] 架,則結果將闡明各區域的總銷售額與各區域每個客戶的平均銷售額的差異:
範例 2
以下 INCLUDE 詳細層級運算式計算每個縣/市的銷售額總和:
{ INCLUDE [State] : SUM(Sales)}
計算放在 [列] 架上,並以平均值的形式彙總。產生的視覺效果將按縣/市跨類別計算銷售額總和的平均值。
將 [Segment] (細分市場)新增到 [欄] 架並將計算移到 [標籤] 後,LOD 運算式結果將更新。現在您可以看到各個縣/市的平均銷售額總和在類別和細分之間如何變化。
EXCLUDE
EXCLUDE 詳細層級運算式宣告要從檢視詳細層級中忽略的維度。
EXCLUDE 詳細層級運算式對於 [占總計百分比] 或 [與總體平均值的差異] 方案非常有用。它們可與諸如 [合計] 和 [參考線] 等功能相比。
EXCLUDE 詳細層級運算式無法在列層級運算式(其中沒有要忽略的維度)中使用,但可用於修改檢視層級計算或中間的任何內容(也就是說,您可以使用 EXCLUDE 計算從其他某些詳細層級運算式中移除維度)。
範例 1
以下 EXCLUDE 詳細層級運算式計算每個月的平均總銷售額,然後排除月元件:
{EXCLUDE [Order Date (Month / Year)] : AVG({FIXED [Order Date (Month / Year)] : SUM([Sales])})}
如需建立月/年日期欄位的詳細資訊,請參閱 自訂日期(連結在新視窗開啟)。
請注意,這是一個巢狀詳細層級運算式,亦即位於另一個詳細層級運算式內的詳細層級運算式。
另存為 [average of sales by month] 後,便可透過 [列] 架上的一個臨機操作計算將該計算從每月銷售額總和中減去:
透過將 Month( [Order Date]) 放在 [欄] 架上,將會建立一個檢視,顯示四年期間內每個月的實際銷售額之間的差異,以及整個四年期間的平均每月銷售額:
範例 2
以下詳細層級運算式從 [銷售額] 的總和計算中排除 [地區]:
{EXCLUDE [Region]: SUM([Sales])}
運算式儲存為 [ExcludeRegion]。
若要說明此運算式的有用之處,請首先考慮以下檢視,該檢視按區域和月份顯示銷售額總和。
透過將 [ExcludeRegion] 放在 [色彩] 陰影上,將會使檢視發生細微變化,將會按月份顯示總銷售額,但沒有區域元件:
表範圍
可以在不使用任何定界關鍵字的情況下在表層級定義詳細層級運算式。例如,以下運算式返回整個表的最小(最早)訂單日期:
{MIN([Order Date])}
這相當於沒有維度宣告的 FIXED 詳細層級運算式:
{FIXED : MIN([Order Date])}
LOD 運算式語法
詳細層級運算式具有以下結構:
{[FIXED | INCLUDE | EXCLUDE] <維度聲明> : <彙總運算式>}
下表中描述了詳細層級運算式中的元素。
元素 | 說明 |
{ } | 整個詳細層級運算式括在大括號中。 |
[FIXED | INCLUDE | EXCLUDE] | 左大括號之後的第一個元素是以下定界關鍵字之一:
|
<維度聲明> | 指定彙總運算式要聯接到的一個或多個維度。使用逗號分隔各個維度。例如:
對於明細層級運算式,可以使用在維度聲明中作為維度計算的任何運算式,包括日期運算式。 此範例將在年度層級彙總 [銷售額] 的總和:
此範例將彙總 [[Order Date]] ([訂單日期])維度的 [銷售額] 總和,並截斷到天日期部分。因為它是 INCLUDE 運算式,所以它將也使用檢視中的維度來彙總值:
附註:強烈建議您在建立維度聲明時將欄位拖到計算編輯器中,而不是鍵入它們。例如,如果您在架上看到 YEAR([Order Date]),然後將其鍵入為維度聲明,則它將與此架上的欄位不相符。但是,如果您將架中的欄位拖到運算式中,那麼它將變為 DATEPART('year', [Order Date]),這將與架上的欄位相符。 對於命名的計算(即,儲存到 [資料] 窗格中的計算,而不是未命名的臨時計算),Tableau 無法將計算的名稱與其定義相符。因此,如果您建立了命名計算 MyCalculation,其定義如下:
然後,您建立了以下 EXCLUDE 明細層級運算式並在檢視中使用:
則將不排除 MyCalculation。 同樣,如果 EXCLUDE 運算式指定了 MyCalculation:
則將不排除 YEAR([Order Date])。 |
: | 冒號用於分隔維度聲明與彙總運算式。 |
<彙總運算式> | 彙總運算式是所執行的計算,用於定義目標維度。 |