Tableau:詳細級別表達式

在Tableau中,除了有行級別表達式(也叫數據源級)和視圖級別表達式(也叫可視化級別)之外,還有詳細級別表達式。行級別表達式和視圖級別表達式的計算粒度都是確定的。行級別表達式只能在數據源中的每一行上引用非聚合的計算;而視圖級別表達式只能在視圖功能區定義的維度上對數據源中的數據進行聚合。而詳細級別表達式可以跳出這兩個限制,在更精細或更粗略,甚至固定維度上進行聚合。

另外,行級別表達式和視圖級別表達式會在數據源中增加相應的數據,而詳細級別表達式不會產生對應的數據。

Tableau中的詳細級別表達式主要包括三種:Include型表達式、Exclude型表達式和Fixed型表達式。以下仍然以Tableau中的【超市】數據爲例。

1.Include型詳細表達式

Include型表達式是指除了視圖級別表達式指定的維度外,還可以在更精細的維度上進行計算。但是這個更精細的計算的值並不會顯示出來。假設創建如下的Include型表達式【每個客戶的銷售額】和視圖級別表達式【客戶平均銷售額】:

之後將【地區】拖拽到【行】中,將上述兩個表達式拖拽道【列】中,並將【每個客戶的銷售額】的度量設爲平均值。然後以“文本表”的形式展示數據,結果如下:

從上述結果可以發現,這兩個計算字段的結果是一樣的。基於這個結果可以推斷出:當把【地區】拖拽到視圖去之後,【每個客戶的銷售額】這個計算字段已經將每個【地區】中的數據按照【客戶 ID】對每個客戶的銷售額進行了彙總處理(雖然這一層中間結果沒有顯示出來)。之後將【每個客戶的銷售額】改爲“均值”度量後會直接在這些彙總後得到的結果上進行計算。

在上述Include型表達式中,【客戶 ID】已經是數據源中相當精細的維度了。而當Include型表達式中涉及到的維度高於視圖級別表達式中的維度時,Include型表達式已經失效了。假設現有如下Include型表達式:

將【子類別】拖拽到【列】中,將【每個類別的銷售額】和【銷售額】拖拽到【行】中,仍然以‘文本表’的形式顯示結果,具體如下:

從以上結果可以看出,這兩個字段的輸出結果是相同的,這個時候Include型表達式已經沒有意義了,數據並沒有按照【類別】進行彙總。這也是Include型和Fixed型的不同的一點。所以,Include型表達式的詳細級別只能比視圖級別更精細或者相同。

2. Exclude型詳細表達式

Exclude型表達中指定的維度會從視圖級別表達式中的維度上剔除。先來看看各個【地區】的總【銷售額】,其結果如下:

創建Exclude型表達式【忽略類別銷售額】,具體如下:

將【地區】及【類別】拖拽到【行】中,將【忽略類別銷售額】拖拽到【列】及【標籤】中,以“條形圖”的形式展示,具體結果如下:

我們可以發現,上述每個【地區】每個【類別】的銷售額與每個【地區】的總【銷售額】的結果是一樣的,這就是Exclude型相詳細級別表達式。另外,還有一個問題,點擊【列】中的【忽略類別銷售額】可以發現其使用的聚合函數爲ATTR,這主要是因爲忽略一個聚合維度一定會產生重複值,用ATTR來指明實際上未發生聚合。

同時,如果在視圖級別表達式中並未出現Exclude型表達式中指定的排除維度,或者視圖級別表達式中有比Exclude型表達式中指定的維度更精細的維度時,Exclude型表達式失效。

3. Fixed型表達式

Fixed型表達式會忽略視圖級別表達中指定的所有維度,只遵照Fixed型表達式中指定的維度進行聚合。使用Fixed型表達式時,無論視圖上提供了多少維度,最後進行都只在Fixed型表達式提供的數據上進行計算。假設創建一個Fixed型表達式【類別銷售額】,如下:

將【地區】和【類別】拖拽到【行】中,將【類別銷售額】拖到【列】中,然後以“文本表”的形式展示數據,具體結果如下:

Fixed類型表達式還有一個特殊用途,當Fixed 後面不加任何維度,或者連Fixed都省略的時候,這就構成了表級別的詳細表達式。假設創建一個【總銷售額】的表達式,如下。這個表達式會對錶中的所有數據求和。

將【地區】和【類別】拖拽到【行】中,將【總銷售額】拖拽到【列】中,仍然以‘文本表’的形式展示結果,具體如下:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章