原官方文檔地址鏈接如下:Tableau's Order of Operations
Tableau中的操作順序,有時(shí)候又被稱為查詢管道,是Tableau執(zhí)行各種動(dòng)作的順序(動(dòng)作也就是操作)。很多操作都涉及到過濾,這意味著,當(dāng)你創(chuàng)建一個(gè)視圖并添加過濾時(shí),這些過濾器總是按照它們被創(chuàng)建的順序執(zhí)行的。有時(shí)候,你可能希望Tableau以你預(yù)想的順序執(zhí)行過濾,但是實(shí)際上卻不是這樣,這會(huì)導(dǎo)致預(yù)想不到的結(jié)果。當(dāng)這種情況發(fā)生時(shí),你可以按照預(yù)期改變過濾器執(zhí)行的順序。這篇文章提供兩種情況來更新視圖,以此解決操作順序引起的問題。
Tableau中的動(dòng)作順序包含了以下描述中的所有元素:過濾器用藍(lán)色字體表示。其余的動(dòng)作主要是計(jì)算過程,用黑色字體顯示。

實(shí)例1:將一個(gè)維度過濾器轉(zhuǎn)變?yōu)橐粋€(gè)內(nèi)容過濾器
這個(gè)例子運(yùn)用的是Superstore的樣本數(shù)據(jù),是由Tableau內(nèi)置提供的。在這個(gè)例子中,視圖旨在描述這個(gè)問題:從銷售總額來看,紐約市的前10名客戶是誰?這個(gè)視圖包含了兩個(gè)維度過濾器,其中一個(gè)是在過濾器的對(duì)話框中建立的,另一個(gè)是在N選項(xiàng)卡的頂部。
問題在于這些過濾器是同時(shí)執(zhí)行的,但是你需要的是先執(zhí)行通用過濾器,再執(zhí)行選取前n項(xiàng)的過濾器。解決這個(gè)問題的方法是將其中一個(gè)過濾器重新定義為環(huán)境過濾器,這樣就建立了一個(gè)清晰的流執(zhí)行順序。
下面就是創(chuàng)建這個(gè)視圖的步驟:
將銷售額拖到列中,將城市和客戶名拖到行中;將城市從數(shù)據(jù)面板中拖到過濾器中;在過濾器的對(duì)話框中的通用選項(xiàng)板中,將過濾器設(shè)置為只顯示一個(gè)單一的值:紐約市。這樣就創(chuàng)建了一個(gè)通用的維度篩選器。
點(diǎn)擊功能菜單中的降序排序按鈕。你的視圖應(yīng)該像下面這樣:

注意,排在前面的名字是:Ashbrook, Fuller, Vernon等?,F(xiàn)在從數(shù)據(jù)面板中將顧客名字拖入到過濾器中,然后創(chuàng)建一個(gè)前十名的過濾器,這樣就只會(huì)看到銷售總額排名前十的顧客名字。
當(dāng)你執(zhí)行了第二個(gè)過濾器之后,視圖看上去就正確了。但是請注意:顧客的名字和之前不一樣了。
對(duì)之前排在第二位的Peter Fuller發(fā)生了什么呢?我們的目標(biāo)是為了顯示紐約市前十名的顧客名字,但是現(xiàn)在這個(gè)視圖顯示的實(shí)際上是所有城市中排名前十的顧客。問題在于:選擇前幾項(xiàng)的過濾器和通用過濾器是同時(shí)執(zhí)行的,他們都是維度過濾器。
解決的方法是將通用維度過濾器(城市)添加為環(huán)境過濾器,也就是說,通過將它轉(zhuǎn)換為現(xiàn)在轉(zhuǎn)換為一個(gè)環(huán)境過濾器,保證它會(huì)被首先執(zhí)行。
在過濾器面板上右擊城市過濾器,選擇添加到環(huán)境。此時(shí)城市過濾器作為一個(gè)環(huán)境過濾器,將會(huì)被優(yōu)先執(zhí)行?,F(xiàn)在這個(gè)是視圖看起來才會(huì)像我們預(yù)期的那樣:
實(shí)例2:將一個(gè)表格計(jì)算器轉(zhuǎn)換為一個(gè)復(fù)合細(xì)節(jié)表達(dá)式
在這個(gè)例子里,我們創(chuàng)建視圖旨在描述這個(gè)問題:按照銷售總額來劃分,每個(gè)子類所占的百分比是多少?這個(gè)視圖將會(huì)包含一個(gè)維度過濾器和一個(gè)表格計(jì)算器。
Tableau將會(huì)優(yōu)先執(zhí)行維度過濾器。為了顛倒t它的執(zhí)行順序,我們將會(huì)使用一個(gè)混合的細(xì)節(jié)表達(dá)式來代替表格計(jì)算器。
以下是創(chuàng)建視圖的步驟:
在一個(gè)新的表單里將銷售額拖到列中;將子類拖到行中;右擊銷售額的求和項(xiàng),然后選擇一個(gè)快速表格計(jì)算求總額的百分比;點(diǎn)擊降序排序按鈕,將目錄按照從多到少的順序排序;點(diǎn)擊顯示標(biāo)簽按鈕,在視圖中顯示測量單位。
現(xiàn)在視圖看上去應(yīng)該像這個(gè)樣子:
注意現(xiàn)在在視圖中的排在前幾的百分比應(yīng)該是:14.37%, 14.30%等。
右擊行上的子類,然后選擇顯示過濾器,取消勾選過濾器中的Chairs。
在視圖中百分比的排序和之前不一樣了,最多的百分比現(xiàn)在是16%。在某些情況下,這可能是你需要的結(jié)果,也就是說當(dāng)你執(zhí)行過濾器的時(shí)候百分比是被重新計(jì)算的。但是,在另外一些情況下你可能需要百分比保持恒定。即便是你添加或者刪除過濾器,也不會(huì)對(duì)他造成影響。這種情況就是我們這個(gè)例子所希望達(dá)到的狀態(tài)。
在Tableau的操作順序里,維度過濾器將會(huì)比表格計(jì)算器優(yōu)先執(zhí)行。
為了在執(zhí)行快速過濾器之前計(jì)算百分比,我們能創(chuàng)建一個(gè)適合復(fù)合細(xì)節(jié)表達(dá)式,來代替表格計(jì)算器。
復(fù)合細(xì)節(jié)表達(dá)式用特定的緯度來計(jì)算,不需要參照視圖中的維度。在這種情況下,你將會(huì)用它來創(chuàng)建一個(gè)子類的百分比,這個(gè)百分比并不會(huì)被你的通用維度過濾器所影響。為什么呢?因?yàn)閺?fù)合細(xì)節(jié)表達(dá)式將會(huì)在維度過濾器之前優(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àn)榉肿邮蔷酆线^的,分母也同樣應(yīng)該是聚合過的,因此,表達(dá)式應(yīng)該像這樣:SUM([Sales])/SUM({FIXED : SUM([Sales])})
將表達(dá)式保存為復(fù)合的銷售總額,然后將其從數(shù)據(jù)面板中拖到列中。將其放到已存在的銷售額求和表達(dá)式的右邊。將以上兩者都保留在視圖中作為比較?,F(xiàn)在視圖應(yīng)該如下所示:
圖表中的百分比數(shù)字現(xiàn)在(和最開始的)一致了,無論你有沒有選擇哪一個(gè)字段。接下來要做的事情就是將數(shù)值格式化為百分比的形式。
右擊列中的fixed銷售額求和項(xiàng),然后選擇格式化。在格式化面板里面選擇數(shù)字,然后選擇百分比。
視圖現(xiàn)在應(yīng)該呈現(xiàn)出這個(gè)樣子:
當(dāng)你選擇或者清除子類的快速過濾器,圖表左邊的百分比會(huì)發(fā)生變化,但是右邊的百分比是不變的。