知識庫

計算符合條件的維度成員


發佈時間 : 05 Sep 2017
上次修改日期 : 20 Jul 2023

問題

如何計算滿足條件的維度成員的計數。

環境

Tableau Desktop

答案

通常,用於計算滿足條件的維度成員數量的公式為:
 
{ FIXED [Dimension] : SUM(
IF <Condition>
THEN 1
ELSE 0
END
) }

有若干使用案例可能會使用此常規公式。以下是幾個使用樣本資料集合 Superstore 的範例。 
         
按一下以展開解決方案
範例 1:使用一系列包含參數的值
在此樣本中,檢視在列上包括「[Category]」(類別)和 「[Segment]」(細分),目標是計算銷售額介於每個類別和細分組合的兩個參數值之間的客戶的數量。
  1. 選擇「分析」>「創建計算欄位」
  2. 在打開的「計算欄位」對話框中,執行以下作業,然後按一下「確定」:
    1. 命名此計算欄位。在此樣本中,導出欄位名為「# of Customers with Select Sales」 (具有選定銷售額的客戶數)。
    2. 在公式欄位中,建立一個類似如下的計算:
      IF { INCLUDE [Customer Name] : SUM([Sales])} >= [Sales Lower Limit]
      AND { INCLUDE [Customer Name] : SUM([Sales])} <= [Sales Upper Limit]
      THEN 1
      ELSE 0
      END
  3. 將「[# of Customers with Select Sales]」(具有特定銷售額的客戶數)拖到「標記」卡片上的「文字」
按一下以展開解決方案
範例 2:使用文字值
在此樣本中,檢視在列上包含「[Order ID]」(訂單 ID)和 「[Product Name]」(產品名稱),目標是計算包含產品「Staple holder」的訂單數。
  1. 使用類似於如下的計算創建一個名稱類似於「# of Orders with a Staple holder」(包含 Staple holder 的訂單數)的導出欄位:

    { FIXED [Order ID] : MAX(
    IF [Product Name] = "Staple holder"
    THEN 1
    ELSE 0
    END)}

  2. 將「[# of Orders with a Staple holder]」(包含 Staple holder 的訂單數)拖到「標記」卡片上的「文字」
按一下以展開解決方案
範例 3:創建類別

在此樣本中,「[State]」(州)已添加到文字,目標是按具有負利 潤的城市數對州進行分類。

  1. 使用類似於如下的計算創建一個名稱類似於「# of Unprofitable Cities」(未贏利城市數)的導出欄位:

    { FIXED [State] : SUM(
    IF { INCLUDE [City] : SUM([Profit]) } < 0
    THEN 1
    ELSE 0
    END
    ) }

  2. 使用類似於如下的計算創建一個名稱類似於「Categories based on city profit」(根據城市利潤進行分類)的導出欄位:

    IF [# of Unprofitable Cities] = 0
    THEN "All cities have positive profit"
    ELSEIF [# of Unprofitable Cities] = 1
    THEN "One city has negative profit"
    ELSE "Multiple cities have negative profit"
    END

  3. 將「[Categories based on city profit]」(根據城市利潤進行分類)拖到「欄」架
按一下以展開解決方案
範例 4:使用表函數
在此樣本中,視圖已篩選為按各細分各類別的銷售額顯示前 10 名客 戶。目標是突出顯示利潤為負的客戶超過兩個的任何類別/細分。
  1. 使用類似於如下的計算創建一個名稱類似於「3+ Top 10 Customers w/ Neg Profit」(3 個以上利潤為負的前 10 名客戶)的導出欄位:

    IF
    WINDOW_SUM(
    IF SUM([Profit]) < 0
    AND [Sales Rank] <= 10
    THEN 1
    ELSE 0
    END ) > 2
    THEN "Three or more customers with negative profit"
    ELSE "Good standing"
    END

  2. 將「[3+ Top 10 Customers w/ Neg Profit]」(3 個以上利潤為負的前 10 名客戶)拖到到「標記」卡片上的「顏色」
  3. 在「顏色」上右鍵按一下「[3+ Top 10 Customers w/ Neg Profit]」(3 個以上利潤為負的前 10 名客戶),並選擇「計算依據」>「Customer Name」(客戶名稱)

其他資訊

關於樣本 1 的注意事項:
  • 由於視圖中沒有「[Customer Name]」(客戶名稱),因此 INCLUDE 運算式是必需的
  • 「SUM([Sales])」將彙總到檢視中的詳細級別,即本例中的「[Category]」(類別)和「[Segment]」(細分),再加上「[Customer Name]」(客戶名稱),因為 INCLUDE 運算式列出了「[Customer Name]」(客戶名稱)
  • 如果每個客戶的銷售額低於「[Sales Upper Limit]」(銷售額上限 )並高於「[Sales Upper Limit]」(銷售額下限),則「["# of Customers with Select Sales]」(具有選定銷售額的客戶數)計算 將會進行計算。如果每個客戶的銷售額在指定範圍內,則此計算將返回 1,該值累加 起來就是客戶計數
  • 也可以使用 COUNTD() 編寫此計算
關於樣本 2 的注意事項:
  • IF 語句審閱基礎資料集合中的每條記錄,檢查「[Product Name]」(產品名稱)是否為「Staple holder」。 如果是,計算將為該記錄返回 1。然後,FIXED 運算式將為具有相同「[Order ID]」(訂單 ID)值的每條記錄返回最大值 1 和 0。
  • 在 Superstore 中,每個「[Product Name]」(產品名稱)和 「[Order ID]」(訂單 ID)的唯一組合只有 1 條記錄,這意味著 MAX() 可取代為 SUM(),並且會返回相同的結果,因為對 1 個值進 行加總與獲取 1 個值的最大值是相同的。
關於樣本 3 的注意事項:
  • INCLUDE 運算式將返回各州各城市的利潤總和,因為「[State]」(州)位於 FIXED 運算式中。計算隨後將為每個未贏利城市返回 1,這是一種對城市計數的方式。
關於樣本 4 的注意事項:
  • 此樣本必須使用表計算,而不是詳細級別 (LOD) 運算式,因為表計算篩選條件不會篩選基礎資料,因此我們必須為排名在計算內添加一個條件。但是,RANK() 是一個表函數,無法在 LOD 計算內使用。
  • 檢視中每個非彙總維度都會影響表計算。如果表計算未返回正確的結果,這可能是由於視圖中維度對錶計算的 運算方式導致的。為瞭解決此問題,請變更計算依據選項。關於詳細資訊,請參見使用表計算轉換值
這篇文章是否解決了問題?