知識庫

依使用表計算的計算欄位排序維度


發佈時間 : 03 Jun 2014
上次修改日期 : 20 Jul 2023

問題

如何按使用表計算的計算欄位對維度進行排序。

環境

Tableau Desktop

答案

使用表計算的欄位目前在預設排序選項中不可用。通常,通過將表計算的副本作為離散欄位放置在「列」架的第一個位置並將其隱藏,可以按表計算對視圖進行排序。

表計算允許大量自訂,因此所需的解決方案將根據原始視圖而有所不同。 以下說明使用 Superstore 範例資料集來完成 3 個複雜度不斷增加的範例。這些說明都在「Sorting by Table Calc_v2022.1.twbx」工作簿中進行示範,該工作簿可從本文右側窗格下載。

範例 1:按總銷售額的百分比對子類別進行排序

這些說明從「範例 1:按總銷售額的百分比對子類別進行排序」視圖開始。建立「範例 1:按總銷售額的百分比對子類別進行排序」視圖的說明包含在隨附的工作簿中
  1. 選擇「分析」>「建立計算欄位」
  2. 在打開的「計算欄位」對話框中,執行以下作業,然後按一下「確定」:
    1. 為計算欄位命名。在此範例中,計算欄位命名為「% of total sort order(佔總排序順序的百分比)」。
    2. 將帶有三角形圖示的綠色 SUM(Sales) 欄位從「欄」架拖曳至計算編輯器中。Tableau 將寫出用於快速表格計算的公式。
    3. 可選:在最終視圖中將產生的公式乘以 -1 以遞減排序
  3. 在左側資料窗格的 [% of total sort order] 上按一下滑鼠右鍵,並選取「轉換為離散」
  4. 將 [% of total sort order] 拖曳至「列」架上的第一個位置
  5. 在列架上的 [% of total sort order] 按一下滑鼠右鍵,並取消勾選「顯示標題」

範例 2:按最近一年的百分比差異銷售額對子類別進行排序

這些說明從「範例 2:按 2015 年百分比差異排序」視圖開始。建立「範例 2:按 2015 年百分比差異排序」視圖的說明包含在隨附的工作簿中
  1. 選擇「分析」>「建立計算欄位」
  2. 在打開的「計算欄位」對話框中,執行以下作業,然後按一下「確定」:
    1. 為計算欄位命名。在此範例中,計算欄位命名為「Most recent Year % Diff Sort Order(最近年份百分比差異排序順序)」。
    2. 寫出以下 IF THEN 陳述式:
      WINDOW_SUM(
          IF LAST() = 0
          THEN 
      
          END
      )

      IF THEN 陳述式會篩選到視圖中的最後一欄。WINDOW_SUM() 函數為子類別中的每一年返回相同的篩選值。
    3. 將帶有三角形圖示的綠色 SUM(Sales) 欄位從「標籤」拖曳至計算編輯器中,介於「THEN」和「END」之間。Tableau 將寫出用於快速表格計算的公式
    4. 可選:在最終視圖中將整個公式乘以 -1 以遞減排序
  3. 在左側資料窗格的 [Most recent Year % Diff Sort Order] 上按一下滑鼠右鍵,並選取「轉換為離散」
  4. 將 [Most recent Year % Diff Sort Order] 拖曳至「列」架上的第一個位置
  5. 在列架上的 [Most recent Year % Diff Sort Order] 按一下滑鼠右鍵,並取消勾選「顯示標題」


範例 3:針對使用者選取的年份,按總銷售額的百分比對子類別進行排序

這些說明從「範例 3:按選取的總計百分比排序」視圖開始。建立「範例 3:按選取的總計百分比排序」視圖的說明包含在隨附的工作簿中
  1. 選擇「分析」>「建立計算欄位」
  2. 在打開的「計算欄位」對話框中,執行以下作業,然後按一下「確定」:
    1. 為計算欄位命名。在此範例中,計算欄位命名為「Year of Order Date(訂單日期年份)」
    2. 在公式欄位中,建立類似於如下的計算:
      DATEPART('year', [Order Date])
  3. 以滑鼠右鍵按一下左側資料窗格中的 [Year of Order Date] 欄位,然後選取「建立」>「參數…」
  4. 在「建立參數」對話方塊中,執行以下動作,並按一下確定:
    1. 為參數命名。在此範例中,參數命名為「Select a Year to Sort View(選取年份排序視圖)」。
    2. 在「顯示格式」下拉式功能表中,選取「數字(自訂)」,0 個小數位數,然後取消勾選包含千位分隔符號 
    3. 選取「工作簿開啟時」,並在下拉列表中選取「訂單日期年份」
  5. 建立名為「% of total」的計算欄位,並將帶有三角形圖示的綠色 SUM(Sales) 欄位從「標籤」拖曳至計算編輯器中。Tableau 將寫出用於快速表格計算的公式
  6. 使用以下公式建立名稱為「Selected Year % of Total Sort Order」的計算欄位:
    -1 *
    WINDOW_SUM( 
        IF MIN(YEAR([Order Date])) = [Select a Year to Sort View]
        THEN [% of total]
        END
    )

    乘以 -1 導致最終視圖中的遞減排序
  7. 在左側資料窗格的 [Selected Year % of Total Sort Order] 上按一下滑鼠右鍵,並選取「轉換為離散」
  8. 將 [Selected Year % of Total Sort Order] 拖曳至「列」架上的第一個位置
  9. 在「列」架上的 [Selected Year % of Total Sort Order] 上按一下滑鼠右鍵,並選取「編輯表計算...」
  10. 在「表計算」對話方塊中,執行以下操作並關閉對話方塊:
    1. 在巢狀計算下的下拉式清單中,選取「% of total」
    2. 在計算使用下選取表(向下)
      注意:[Selected Year % of Total Sort Order] 中引用的 [% of total] 欄位的計算方式可能與視圖中的快速表計算方式不同,因此我們必須確保總數百分比的計算方式相同。
  11. 在列架上的 [Selected Year % of Total Sort Order] 按一下滑鼠右鍵,並取消勾選「顯示標題」

 

其他資訊

最終目標是建立一個返回值的計算欄位來對視圖進行排序:
  • 範例 1 顯示如何對「列」架上只有 1 個維度的簡單長條圖進行排序
  • 範例 2 根據最後一欄中的值對醒目提示表中的每一列進行排序。排序順序計算必須僅返回 2015 年百分比差異銷售額,但它必須在同一列中返回每年的 2015 年值。否則,每年將單獨排序。
  • 範例 3 也按特定欄中的值對醒目提示表進行排序,但這次視圖中的表計算與用於建立排序順序的表計算不同。這需要使用設定來設定進階計算以獲得正確的結果。

即使檢視包含表計算,從維度建立的標題其工具提示亦將具有排序圖示;但是,此選項會根據目前值建立手動排序。資料更新時,從標題工具提示建立的排序將不會更新。

有關計算表計算如何產生不同結果的更多資訊,請參閱使用表計算轉換值嵌套表計算
這篇文章是否解決了問題?