知識庫

在計算中包括篩選條件,而不將其納入「篩選條件」卡


發佈時間 : 30 Nov 2015
上次修改日期 : 20 Jul 2023

問題

如何篩選一或多個欄位而不篩選整個檢視。

環境

Tableau Desktop

答案

藉由使用 IF / THEN 陳述式,僅傳回某些特定維度值的度量,以建立邏輯計算。維度值可為硬式編碼的形式,或使用參數或集合動態定義。

以下指示皆從工作簿中的「原始」工作表開始,該工作簿可透過本文的右側窗格下載。建立「原始」工作表的指示和所有變化的示範也包含在工作簿中。

變化 1: 將維度值變成硬式編碼

  1. 選擇「分析」>「創建計算欄位」
  2. 在打開的「計算欄位」對話框中,執行以下作業,然後按一下「確定」:
    1. 命名此計算欄位。在此範例中,導出欄位命名為「銷售標籤(變化 1)」
    2. 在公式欄位中,建立一個類似如下的計算:

      IF DATEPART('year', [Order Date]) = 2019
      THEN [Sales]
      END

      如果 [訂單日期] 為 2019 年的日期,上述計算就會傳回度量 [銷售額]。否則該計算將傳回 NULL。您可以在「END」前面加入「ELSE 0」以傳回零,而非 NULL。

      您也可以使用 [Order Date] = #1/1/2019# 等其他條件篩選特定日期,或使用 [Segment] = "Consumer" 篩選特定文字值。重要的是要確保等號後面的值與維度的資料類型相同。
  3. 將「標籤」上的 [銷售額] 取代為 [銷售標籤(變化 1)]
 

變化 2: 使用參數

  1. 選擇「分析」>「創建計算欄位」
  2. 在打開的「計算欄位」對話框中,執行以下作業,然後按一下「確定」:
    1. 命名此計算欄位。在此範例中,導出欄位命名為「訂單日期年份」
    2. 在公式欄位中,建立一個類似如下的計算:

      DATEPART('year', [Order Date])

      步驟 1 和 2 會建立僅包含 [訂單日期] 的年份日期作為整數值的欄位。[訂單日期年份] 欄位可讓您輕鬆建立參數,但並非必要項目
  3. 在資料窗格中,以滑鼠右鍵按一下 [訂單日期年份] 欄位,然後選取「建立」>「參數…」
  4. 在「建立參數」對話方塊中,執行下列操作,然後按一下「確定」
    1. 在「名稱」文字方塊中,鍵入名稱。在此範例中,我將該參數稱為「選取年份」
    2. 在「屬性」下的「資料類型」清單中,選取「整數」
    3. 在「允許的值」下,選取「清單」
    4. 在「顯示格式」下拉式功能表中,選取「數字(自訂)」,並將格式設定為 0 個小數位數,然後取消勾選包含千位分隔符號
    • 從 Tableau Desktop 2020.1 開始,只要在「工作簿開啟時」下拉式功能表中選取欄位,參數即可從資料來源中的欄位拉出清單值。
  5. 在資料窗格中,以滑鼠右鍵按一下 [選取年份],然後選取「顯示參數控制項」
  6. 使用類似於如下的計算,建立一個名稱與「銷售標籤(變化 2)」相似的導出欄位:

    IF DATEPART('year', [Order Date]) = [Parameters].[Select a year]
    THEN [Sales]
    END

    附註: 當參數的名稱和資料來源中其他欄位的名稱相同時,系統會自動新增「[Parameters].」語法。
  7. 將「標籤」上的 [銷售額] 取代為 [銷售標籤(變化 2)]

變化 3: 使用集合控制項

從 Tableau Desktop 2020.2 開始,系統將可顯示集合控制項,讓最終使用者變更集合中的值。
  1. 選擇「分析」>「創建計算欄位」
  2. 在打開的「計算欄位」對話框中,執行以下作業,然後按一下「確定」:
    1. 命名此計算欄位。在此範例中,導出欄位命名為「訂單日期年份」
    2. 在公式欄位中,建立一個類似如下的計算:

      DATEPART('year', [Order Date])
  3. 以滑鼠右鍵按一下 [訂單日期年份] ,然後選取「轉換為維度」

    步驟 1-3 會建立僅包含 [訂單日期] 的年份日期作為整數值的維度。需要使用 [訂單日期年份] 欄位才能製作年份的集合,因為集合必須根據資料來源中的欄位建立。
  4. 在資料窗格中,以滑鼠右鍵按一下 [訂單日期年份] 欄位,然後選取「建立」>「集合…」
  5. 為集合命名,然後按一下「確定」。在此範例中,集合命名為「選取集合」
  6. 使用類似於如下的計算,建立一個名稱與「銷售標籤(變化 3)」相似的導出欄位:

    IF [Select a year]
    THEN [Sales]
    END

    如果 [訂單日期] 為使用者所選年份的日期,上述計算就會傳回度量 [銷售額]。否則該計算將傳回 NULL。您可以在「END」前面加入「ELSE 0」以傳回零,而非 NULL。

    集合為「布林值」欄位,會傳回 TRUE 或 FALSE。因此,集合本身即為完整的條件。
  7. 將「標籤」上的 [銷售額] 取代為 [銷售標籤(變化 3)]
  8. 在資料窗格中,以滑鼠右鍵按一下 [選取年份],然後勾選「顯示集合」

其他資訊

參數與集合的比較

  • 參數只能包含一個值,但集合控制項允許多重選取。
  • 參數可包含任何任意值,而集合一律繫結至資料來源中的欄位。不過這些欄位值皆可重新設定別名。
  • 參數可用於在沒有關聯的資料來源中進行篩選。請參閱使用參數在多個資料來源中進行篩選。集合只有在資料來源之間設定關聯時,才能在資料來源中進行篩選。請參閱在多個資料來源中篩選資料
  • 參數可用於儀表板的文字物件或標題中,而集合(或使用集合的導出欄位)是資料來源的一部份,因此只能用於工作表元素中。
  • 將新的資料帶入資料來源後,集合一律會更新。參數則可透過設定帶入新的資料。 請參閱建立參數中的步驟 5。


此解決方法可以巢狀方式置於其他計算中。例如,可以包含在如下的詳細層級 (LOD) 計算中:
{INCLUDE [Dimension]: SUM(IF [Dimension] = 'FilterValue' THEN [Non-Aggregated Measure] END)}


這篇文章是否解決了問題?