[Tableau] 97.不同欄位型態排序-新增計算式

製作表格類型的報表時,常會因不同查看重點,需要切換不同的排序方式。

而在Tableau報表開發實現此功能上,需要額外建立計算欄位,
主要的概念是將不同型態的欄位統一轉換成為聚合型的數值,呈現效果如下圖or Tableau Public Gallery連結


首先記得新增一參數,此例子參數名稱叫做Sort by
再來需要新增一個計算欄位,將不同型態的欄位統一轉換,計算式可參考以下

if([Parameters].[Sort by]='Customer Name')  //字串格式
	then (FLOAT(STR(MIN(ASCII(UPPER([Customer Name]))))+STR(MIN(ASCII(UPPER(MID([Customer Name],2,1)))))))
elseif([Parameters].[Sort by]='Sales Amt')  //數值格式
	then SUM([Sales])*-1 //乘上-1代表排序方式需要不同
elseif([Parameters].[Sort by]='Ship Date')  //日期格式
	//方法1:
	//then   AVG(INT(STR(Year([Ship Date]))+ Right('00'+STR(Month([Ship Date])),2) + Right('00'+STR(DATEPART('day', [Ship Date])),2)))
	//方法2: 
	//INT(STR(DATEPARSE('YYYYMMDD',STR([Ship Date])))) //前提要用extract
	//方法3:    
	then MIN(FLOAT([Ship Date])) //上面方式轉換也可以,但此方式較簡潔
else null
end

最後將排序依據的欄位,指定成新增的欄位即可。

另外有幾個小技巧:
         1.將新增的計算欄位放到表格中,確定轉換的數值為何,更容易確定邏輯是否需要修改。
         2.最前面若有Index()欄位時,注意表計算的排序方式,是否用新增的計算欄位排序
         3.許多字串轉ASCII Code的線上網站,可以及時確認轉換的數值為何。
         4.轉換成ASCII Code有分大小寫的,但排序不需要區分,記得統一轉換成大寫或小寫。
         5.若需要各別控制不同升冪、降冪排序,可在計算式中*-1

         ※注意Tableau ASCII函數是將字串的第一個字元轉換
         若要整個字串轉換需要搭配MID、STR、FLOAT\INT函數。
         否則AP、AB傻傻分不清。

最後本篇文章的重點在於計算式,若是想要瞭解詳細的步驟,也可以參考相關文章範例詳細說明

同時也歡迎追蹤Tableau Public Gallery- MR.360 |聚沙成塔,裡面包含文章中的案例實作,
期待能帶給您新的啟發或靈感。

未來文章將喬遷新址「一趟數據分析之旅」,歡迎追蹤繼續支持,您將不會錯過任何新知識。