原官方文檔地址鏈接如下:Tableau's Order of Operations?
Tableau中的操作順序,有時候又被稱為查詢管道,是Tableau執(zhí)行各種動作的順序(動作也就是操作)。很多操作都涉及到過濾,這意味著,當(dāng)你創(chuàng)建一個視圖并添加過濾時,這些過濾器總是按照它們被創(chuàng)建的順序執(zhí)行的。有時候,你可能希望Tableau以你預(yù)想的順序執(zhí)行過濾,但是實際上卻不是這樣,這會導(dǎo)致預(yù)想不到的結(jié)果。當(dāng)這種情況發(fā)生時,你可以按照預(yù)期改變過濾器執(zhí)行的順序。這篇文章提供兩種情況來更新視圖,以此解決操作順序引起的問題。
Tableau中的動作順序包含了以下描述中的所有元素:過濾器用藍(lán)色字體表示。其余的動作主要是計算過程,用黑色字體顯示。
實例1:將一個維度過濾器轉(zhuǎn)變?yōu)橐粋€內(nèi)容過濾器
這個例子運用的是Superstore的樣本數(shù)據(jù),是由Tableau內(nèi)置提供的。在這個例子中,視圖旨在描述這個問題:從銷售總額來看,紐約市的前10名客戶是誰?這個視圖包含了兩個維度過濾器,其中一個是在過濾器的對話框中建立的,另一個是在N選項卡的頂部。
問題在于這些過濾器是同時執(zhí)行的,但是你需要的是先執(zhí)行通用過濾器,再執(zhí)行選取前n項的過濾器。解決這個問題的方法是將其中一個過濾器重新定義為環(huán)境過濾器,這樣就建立了一個清晰的流執(zhí)行順序。
下面就是創(chuàng)建這個視圖的步驟:
將銷售額拖到列中,將城市和客戶名拖到行中;將城市從數(shù)據(jù)面板中拖到過濾器中;在過濾器的對話框中的通用選項板中,將過濾器設(shè)置為只顯示一個單一的值:紐約市。這樣就創(chuàng)建了一個通用的維度篩選器。
點擊功能菜單中的降序排序按鈕。你的視圖應(yīng)該像下面這樣:
注意,排在前面的名字是:Ashbrook, Fuller, Vernon等?,F(xiàn)在從數(shù)據(jù)面板中將顧客名字拖入到過濾器中,然后創(chuàng)建一個前十名的過濾器,這樣就只會看到銷售總額排名前十的顧客名字。

當(dāng)你執(zhí)行了第二個過濾器之后,視圖看上去就正確了。但是請注意:顧客的名字和之前不一樣了。

對之前排在第二位的Peter Fuller發(fā)生了什么呢?我們的目標(biāo)是為了顯示紐約市前十名的顧客名字,但是現(xiàn)在這個視圖顯示的實際上是所有城市中排名前十的顧客。問題在于:選擇前幾項的過濾器和通用過濾器是同時執(zhí)行的,他們都是維度過濾器。

解決的方法是將通用維度過濾器(城市)添加為環(huán)境過濾器,也就是說,通過將它轉(zhuǎn)換為現(xiàn)在轉(zhuǎn)換為一個環(huán)境過濾器,保證它會被首先執(zhí)行。
在過濾器面板上右擊城市過濾器,選擇添加到環(huán)境。此時城市過濾器作為一個環(huán)境過濾器,將會被優(yōu)先執(zhí)行?,F(xiàn)在這個是視圖看起來才會像我們預(yù)期的那樣:

實例2:將一個表格計算器轉(zhuǎn)換為一個復(fù)合細(xì)節(jié)表達(dá)式
在這個例子里,我們創(chuàng)建視圖旨在描述這個問題:按照銷售總額來劃分,每個子類所占的百分比是多少?這個視圖將會包含一個維度過濾器和一個表格計算器。
Tableau將會優(yōu)先執(zhí)行維度過濾器。為了顛倒t它的執(zhí)行順序,我們將會使用一個混合的細(xì)節(jié)表達(dá)式來代替表格計算器。
以下是創(chuàng)建視圖的步驟:
在一個新的表單里將銷售額拖到列中;將子類拖到行中;右擊銷售額的求和項,然后選擇一個快速表格計算求總額的百分比;點擊降序排序按鈕,將目錄按照從多到少的順序排序;點擊顯示標(biāo)簽按鈕,在視圖中顯示測量單位。
現(xiàn)在視圖看上去應(yīng)該像這個樣子:

注意現(xiàn)在在視圖中的排在前幾的百分比應(yīng)該是:14.37%, 14.30%等。
右擊行上的子類,然后選擇顯示過濾器,取消勾選過濾器中的Chairs。

在視圖中百分比的排序和之前不一樣了,最多的百分比現(xiàn)在是16%。在某些情況下,這可能是你需要的結(jié)果,也就是說當(dāng)你執(zhí)行過濾器的時候百分比是被重新計算的。但是,在另外一些情況下你可能需要百分比保持恒定。即便是你添加或者刪除過濾器,也不會對他造成影響。這種情況就是我們這個例子所希望達(dá)到的狀態(tài)。
在Tableau的操作順序里,維度過濾器將會比表格計算器優(yōu)先執(zhí)行。

為了在執(zhí)行快速過濾器之前計算百分比,我們能創(chuàng)建一個適合復(fù)合細(xì)節(jié)表達(dá)式,來代替表格計算器。
復(fù)合細(xì)節(jié)表達(dá)式用特定的緯度來計算,不需要參照視圖中的維度。在這種情況下,你將會用它來創(chuàng)建一個子類的百分比,這個百分比并不會被你的通用維度過濾器所影響。為什么呢?因為復(fù)合細(xì)節(jié)表達(dá)式將會在維度過濾器之前優(yōu)先應(yīng)用。
混合細(xì)節(jié)表達(dá)式必須將銷售總額分開(原文為:The FIXED level of detail expression must divide the sum ofSales(for a particular measure value) by the total sum of Sales for the view)。因為分子是聚合過的,分母也同樣應(yīng)該是聚合過的,因此,表達(dá)式應(yīng)該像這樣:SUM([Sales])/SUM({FIXED : SUM([Sales])})
將表達(dá)式保存為復(fù)合的銷售總額,然后將其從數(shù)據(jù)面板中拖到列中。將其放到已存在的銷售額求和表達(dá)式的右邊。將以上兩者都保留在視圖中作為比較?,F(xiàn)在視圖應(yīng)該如下所示:

圖表中的百分比數(shù)字現(xiàn)在(和最開始的)一致了,無論你有沒有選擇哪一個字段。接下來要做的事情就是將數(shù)值格式化為百分比的形式。
右擊列中的fixed銷售額求和項,然后選擇格式化。在格式化面板里面選擇數(shù)字,然后選擇百分比。

視圖現(xiàn)在應(yīng)該呈現(xiàn)出這個樣子:

當(dāng)你選擇或者清除子類的快速過濾器,圖表左邊的百分比會發(fā)生變化,但是右邊的百分比是不變的。