選擇正確的計算類型
您選擇的計算類型取決於您的分析需求、您想要回答的問題以及視覺效果的配置。
哪種計算適合於您的分析?
為分析選擇要使用的計算類型並不總是一件容易事。嘗試做出決定時,請考慮以下問題和範例。
附註:此內容最初在 Tableau 部落格上發佈。請參閱 A Handy Guide to Choosing the Right Calculation for Your Question(為您的問題選擇正確計算的便捷指南)(連結在新視窗開啟)進行閱讀。
基本運算式還是表計算?
視覺效果上是否已經有了所有需要的資料值?
- 如果回答為「是」:您可以使用表計算。
- 如果回答為「否」:使用基本計算。
範例:
假設有以下兩個視覺效果。左側的視覺效果是一個橫條圖,其中顯示每個國家/地區的總銷售額。右側的視覺效果也顯示每個國家/地區的銷售額,但銷售額已分解。
您將如何為其中的每個視覺效果計算銷售額的第 90 個百分位?
左側的橫條圖已透過 SUM 彙總。因此,此檢視中沒有足夠的詳細資訊來使用表計算。您可以使用基本彙總運算式,透過以下公式為此範例中的每個國家/地區計算銷售額的第 90 個百分位:
PERCENTILE([Sales], .90)
這將為每個國家/地區的第 90 個百分位組建一個值,作為各個條形的標籤。
但是,右側的圖表包含每個銷售訂單的資料值。將會顯示更大的分佈和離群值。檢視中有足夠的詳細資訊來使用表計算。
可以透過使用分佈區間(相當於一個表計算)來計算每個國家/地區銷售額的第 90 個百分位。此視覺效果中有更多上下文。
兩個計算都能得到相同值,但根據視覺效果中的詳細資料層級(資料量),您從每個計算中收集的細節會有所不同。
基本運算式還是詳細資料層級 (LOD) 運算式?
如果視覺效果上沒有您需要的所有資料,則需要將計算傳遞到資料來源。這意味著,您必須使用基本計算或 LOD 運算式。
如果對問題 1 的回答為「否」,請詢問自己以下問題:
問題 2:
您的問題資料粒度是否與視覺效果資料粒度或資料來源資料粒度相符?
- 如果回答為「是」:使用基本計算。
- 如果回答為「否」:使用詳細資料層級 (LOD) 運算式。
範例
假設有以下視覺效果。它顯示每個國家/地區所有訂單銷售額的第 90 個百分位。
此範例使用 Tableau 附帶的「Sample-Superstore」資料來源。如果您熟悉「Sample-Superstore」資料來源,您可能知道每個「Order ID」(訂單 ID)有一列資料。因此,資料來源的資料粒度為「Order ID」(訂單 ID)。但是,視覺效果的資料粒度為「Country」(國家/地區)。
在資料粒度級別為訂單 ID 的情況下,如果想要知道每個國家/地區銷售額的第 90 個百分位是什麼,您可以使用以下 LOD 運算式:
{INCLUDE [Order ID] : SUM([Sales])}
然後,您可以將欄位變更為在檢視中的第 90 個百分位處彙總。
為此,請按一下欄位下拉式功能表,並選擇「度量」>「百分位」>「90」。
下圖示範了這種情況下 LOD 運算式的工作方式:
- 資料在「SUM(Sales)」處開始完全彙總,然後下移至「Country」(國家/地區)詳細資料層級:在「Country」(國家/地區)處進行「SUM(Sales)」計算。
- 將應用 LOD 計算,並且資料將獲得更多資料粒度:在「Country」(國家/地區)+「Order ID」(訂單 ID)處進行「SUM(Sales)」計算。
- >LOD 計算彙總到第 90 個百分位:在「Country」(國家/地區)+「Order ID」(訂單 ID)處執行「PCT90(SUM(Sales)」計算
結果如下:
表計算還是詳細資料層級 (LOD) 運算式?
在選擇表計算還是 LOD 計算時,過程與選擇表計算還是基本運算式非常相似。請詢問自己以下問題:
視覺效果上是否已經有了所有需要的資料值?
- 如果回答為「是」,則使用表計算。
- 如果回答為「否」,則詢問自己:您的問題資料粒度是否與視覺效果資料粒度或資料來源資料粒度相符?如果回答為「否」:使用 LOD 計算。
僅使用表計算
某些方案下只有表計算有效。這些方案包括:
- 排名
- 遞迴(例如,累計總計)
- 移動計算(例如,移動平均)
- 內部列計算(例如,期間對照計算)
如果您的分析需要任何這些方案,請使用表計算。
範例
假設有以下視覺效果。它顯示 2014 年 9 月至 2015 年 9 月間若干股票的平均收盤價。
如果要檢視迄今為止收盤價超出其創紀錄收盤價的次數,您必須使用表計算,特別是遞迴計算。
為何會這樣?因為表計算能夠為每個資料分區(儲存格、區、表)輸出多個值,而基本和 LOD 運算式則只能為每個資料分區或分組輸出單一值。
若要為每個股票計算收盤價超出其創記錄收盤價的次數,您需要執行幾個步驟。
- 在確定您是否已達到新的最高收盤價之前,您需要考慮所有以前的值。借助 RUNNING_MAX 函數可實現這一點。例如,假設使用「Day」(整個資料表)進行以下計算,名為「Record to Date」:
RUNNING_MAX(AVG([Close]))
接著,您可以使用以下按(橫跨表格的)各天運算的以下計算標記記錄被打破的天數,該計算名為「Count Days Record Broken」(計算打破記錄的天數):
IF AVG([Close]) = [Record to Date]
THEN 1
ELSE 0
END最後,您可以使用以下按(橫跨表格)的各天運算的計算來計算這些天數:
RUNNING_SUM([Count Days Record Broken])
將最終的計算欄位新增到檢視中替換 Avg(Close) 後,您將得到如下結果: