allselect是個(gè)很有效的函數(shù),它可以只使用透視表上的頁面篩選器和切片器,來計(jì)算值。例如,我們建立如下的一個(gè)透視表。

這個(gè)報(bào)表里面,我們顯示了當(dāng)前行對(duì)應(yīng)的產(chǎn)品的銷售占總額的百分比。這里比較困難的地方是product color同時(shí)使用于行以及切片器。按照我們現(xiàn)有的知識(shí),我們會(huì)這樣寫函數(shù)。
[SalesPct] :=
DIVIDE (
[Sales Amount],
CALCULATE (
[Sales Amount],
ALL ( Product[Color] )
))
使用all函數(shù),我們移除了color字段上的篩選器。但是,all函數(shù)會(huì)移除來自于所有篩選器的篩選條件,即來自與行以及切片器,導(dǎo)致了結(jié)果的錯(cuò)誤。下面的透視表中,我們可以看到結(jié)果,這里總計(jì)不是100%,而是一個(gè)更小的數(shù)值。

這個(gè)問題的是,即使用戶選擇的是部分的顏色,分母計(jì)算的還是所有產(chǎn)品的總和。但是對(duì)于每一行,你計(jì)算百分比的時(shí)候,每行除的值都是大于當(dāng)前選擇的顏色的總和。
所以,我們需要的是只顯示選擇的顏色的值的總和,而不是所有顏色的產(chǎn)品的值的和。我們把這種計(jì)算稱為在可見情況下的計(jì)算,也就是可以按用戶所選來計(jì)算總額。這里我們使用的函數(shù)是allselected。我們按這個(gè)函數(shù)來計(jì)算:
[SalesPct] :=
DIVIDE (
[Sales],
CALCULATE (
[Sales],
ALLSELECTED ( Product[Color] )
))
這個(gè)函數(shù)的結(jié)果,初步來看,是正確的。
allselected只返回篩選器選擇的行的值。換句話說,也就是allselect忽略了透視表行列上的篩選條件,返回總的值。
allselected的參數(shù)可以使用下面三種不同的方式:
單一的列,例如allselected(product[color]),只返回選擇的color的總額。
整個(gè)表,allselected返回表所選擇的所有行。
沒有參數(shù),即allselected(),返回可見所有表的全部記錄。
通過allselected可以動(dòng)態(tài)的計(jì)算百分?jǐn)?shù)和比率。在第10章中,我們會(huì)深入的討論allselected,揭示一些更深更復(fù)雜的知識(shí)。