計算:
- 常規計算:向數據源發出計算請求,數據源計算后,tableau接收計算結果集。比如銷售-成本
- 表計算:基於返回的結果集的二次分析計算。原數據“group by”后對聚合的數據的各種分析,tableau稱為"表計算"
表計算
參考了https://zhuanlan.zhihu.com/p/60641444
本數據:是tableau desktop的已保存數據:“世界指標”
這是一個聚合表。以地區+年份分組: 求列“人均醫療”的和。
表計算就是真對這個聚合表中的“聚合的數據”進行二次分析計算。
- 右鍵單擊“總和(人均醫療)”,選擇“編輯表計算”。確定計算類型:“排序”
- 確定“計算依據”:“特定維度”。特定維度就是指參與了數據划分的“維度”。
- ☑️的"維度": 對數據進行第2次分組。
- 沒有☑️的“維度”,對數據進行第一次分組。
- 對第二次分組的數據,用已經選擇好的計算類型進行計算。第一次分組只是隔離,第二次分組的數據,才會參與二次運算。
本例子比如:
計算類型:排序(降序)
計算依據:特定維度:☑️區域+☑️年份
所以,每行記錄都被單獨的分出來,然后對他們按照數值大小降序排序--不是真的排序,而是用數字代表排序的順序。
還是本例子,比如:
計算類型:排序(降序)
計算依據:特定維度:☑️區年份
- 首先,把數據按照區域划分開。
- 然后,每個區域的數據再按照“年份”二次划分。
- 最后,對二次划分的數據,按照降序排序。因為是降序,2011年數據數值最大,所以2011年數據賦予“數號:1”
還是本例子,如果:
計算類型:排序(降序)
計算依據:特定維度:☑️區域
- 首先,把數據按照“年份”進行一輪划分。即每年的記錄分到一組中,比如2000年的記錄算一組。
- 然后,每組數據按照“區域”進行而論划分
- 最后,對每條數據進行排序(降序)。
使用參數來改變字段
1.創建參數
2.創建計算字段
3.在圖表上使用計算字段
4.使用“參數控件”,並可以設置它的格式。
這是創建計算字段的圖。
分析客戶在6個月之內,進行第2次購買,未購買,6個月之后購買的比率
本題思路和步驟:
- 創建首次購買的計算函數
- {FIXED [Customer ID]: MIN([Order Date])}
- ⚠️這里的fixed相當於MySQL的group by后使用聚合函數
- 創建第2次購買的計算函數
-
{FIXED [Customer ID] : MIN(IF [Order Date] > [ First Order Date]
THEN [Order Date]
END)}
-
- 創建上面2者的差值的計算函數:"Repeat Purchasing"
-
IF [Months to Second Purcase] >= 6 then "More than 6 months" ELSEIF [Months to Second Purcase] < 6 then "Within 6 month" ELSE "No second purchase" end
-
- 創建一個文件夾,把這3個計算函數放到一起。
- 把他們放到圖表的列上或行上,顯示效果不同。
- 新建工作表,行為"Repeat Purchasing", 列為“Customer ID”並選擇它的屬性為“計數”+快速表計算->"合計百分比"
詳細級別表達式-分組表達式 Level of Detail Expressions(LOD)
{FIXED [訂單 ID]: SUM([利潤])}
這是一個詳細級別表達式:它由fix關鍵字和聚合函數sum組成。
詳細級別表達式的關鍵字有3種:
- fixed: 只按照表達式內的字段來分組
- include: 除了按照表達式內的字段分組,還會考慮到視圖中的維度字段來分組。
- exclude:排除指定的維度。
fixed和include不同的用處:
{FIXED [訂單 ID]: SUM([利潤])}
- 如果id是唯一的,那么fixed和include會得出相同的結果。
- 如果id不是唯一的,就用include.
- 不唯一是指:一個id有多條記錄。
上面的例子中,如果表格內有相同的🆔,如果使用Fixed作為關鍵字。那么🆔為ES-2014-4879051的記錄有2條,以🆔分組,會sum算出利潤合計值。
這兩條記錄都會附加一個字段來存儲這個利潤合計值。
之后按照圖中以國家/地區來分組,求總計(利潤),那么就會失真。這是因為比利時和法國的數據被sum過了。
還是上面的例子中,如果改用include作為關鍵字。會考慮以🆔+國家/地區, 進行分組操作,求各自的利潤合計值。
之后按照國家/地區來分組的話,就不會出現❌了。
表計算
表計算是使用視圖中的數據進行的計算,不會從數據源取用數據,只會用視圖表中的數據。
編輯表計算,左側表橫穿,右側表向下:
:
表計算的范圍和方向
- 表計算的范圍:表,區,單元格
- 方向:向下,向上,橫穿。
通過“編輯表計算”->"表計算"選項框。就可以詳細進行設置,其中"特定維度"是更細節的設置。
聚合函數
attr(field),判斷被分到一起的一組記錄的某一field, 其值是否是唯一的,是則返回這個值,否則返回*。
count():計數
countd():計數,distinct,去重復。
數字函數
zn() :如果是null,則返回0 簡化了if語句。