天天看點

Tableau:詳細級别表達式(LOD表達式)

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

另外,行級别表達式和視圖級别表達式會在資料源中增加相應的資料,而詳細級别表達式不會産生對應的資料。

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

1.Include型詳細表達式

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

Tableau:詳細級别表達式(LOD表達式)
Tableau:詳細級别表達式(LOD表達式)

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

Tableau:詳細級别表達式(LOD表達式)

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

在上述Include型表達式中,【客戶 ID】已經是資料源中相當精細的次元了。而當Include型表達式中涉及到的次元高于視圖級别表達式中的次元時,Include型表達式已經失效了。假設現有如下Include型表達式:

Tableau:詳細級别表達式(LOD表達式)

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

Tableau:詳細級别表達式(LOD表達式)

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

2. Exclude型詳細表達式

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

Tableau:詳細級别表達式(LOD表達式)

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

Tableau:詳細級别表達式(LOD表達式)

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

Tableau:詳細級别表達式(LOD表達式)

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

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

3. Fixed型表達式

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

Tableau:詳細級别表達式(LOD表達式)

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

Tableau:詳細級别表達式(LOD表達式)

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

Tableau:詳細級别表達式(LOD表達式)

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

Tableau:詳細級别表達式(LOD表達式)

Fixed型表達式的結果一定是一組重複值,從結果上看,Fixed型表達式的結果與視圖完全無關,依據Fixed表達式就可以完全确定其結果。如果Fixed型表達式中指定了次元,那麼這個表達式的作用就是按照在該次元上進行聚合操作,以【類别銷售額】為例,與其等價的SQL語句為:select 類别,sum(銷售額) from ** group by 類别;如果沒有指定次元字段,則直接按照表達式對該字段的所有資料進行聚合操作,以【總銷售額】為例,與其等價的SQL語句為:select sum(銷售額)  from **。

繼續閱讀