ALL
傳回資料表的所有資料列,或資料行的所有值,忽略可能已套用的任何篩選。 此函式適用於清除篩選條件,以及在資料表中的所有資料列上建立計算。
語法
ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )
參數
詞彙 | [定義] |
---|---|
table | 要清除篩選的資料表。 |
column | 要清除篩選的資料行。 |
ALL 函式引數必須是基底資料表的參考,或基底資料行的參考。 您無法將 ALL 函式與資料表運算式或資料行運算式搭配使用。
傳回值
已移除篩選條件的資料表或資料行。
備註
此函式不會單獨使用,而是作為中繼函式,其可用來變更執行其他計算的結果集。
包含 ALL() 函式的 DAX 運算式,其正常行為是忽略所有套用的篩選。 不過,在某些情況下會因為 auto-exist 而非如此,這是一種 DAX 技術,可將篩選最佳化以減少特定 DAX 查詢所需的處理量。 舉例來說,當篩選相同資料表的兩個或多個資料行時 (例如使用交叉分析篩選器時),並且該相同資料表上有一個使用 ALL() 的量值時,就會發生 auto-exist 與 ALL() 提供非預期結果的情況。 在此情況下,auto-exist 會將多個篩選器「合併」成一個,而且只會對值的現有組合進行篩選。 由於這項合併,系統會根據值的現有組合來計算量值,而結果將會依據篩選的值,而非預期的所有值。 若要深入了解 auto-exist 及其對計算的影響,請參閱 sql.bi.com 上,Microsoft MVP Alberto Ferrari 的了解 DAX Auto-Exist 一文。
下表描述如何在不同案例中使用 ALL 和 ALLEXCEPT 函式。
函式和使用方式 描述 ALL() 在所有位置移除所有篩選條件。 ALL() 只能用於清除篩選條件,不能傳回資料表。 ALL(Table) 從指定的資料表移除所有篩選條件。 實際上,ALL(Table) 會傳回資料表中的所有值,並移除可能已套用內容中的所有篩選條件。 當您使用許多層級的群組,且想要建立計算來建立彙總值與總值的比例時,此函式會很有用。 第一個範例將示範這種情況。 ALL (Column[, Column[, …]]) 從資料表中指定的資料行移除所有篩選條件;資料表中其他資料行的所有其他篩選條件仍適用。 所有資料行引數都必須來自相同的資料表。 當您想要移除一或多個特定資料行的內容篩選條件,並保留所有其他內容篩選時,ALL(Column) 變體很有用。 第二和三個範例將示範這種情況。 ALLEXCEPT(Table, Column1 [,Column2]...) 除了套用至指定資料行的篩選條件之外,會移除資料表中的所有內容篩選條件。 如果您想要移除資料表中多個 (但非全部) 資料行的篩選條件,則這是一個方便的快捷方式。 在計算結果欄或資料列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。
範例 1
計算類別目錄銷售對總銷售額的比例
假設您想要找出樞紐分析表中目前儲存格的銷售量,請將其除以所有轉售商的總銷售額。 若要確保無論樞紐分析表使用者用來篩選或分組資料的方式為何,分母都會相同,您可以定義使用 ALL 的公式來建立正確總計。
下表顯示使用程式碼區段中所示公式來建立新量值 [所有轉售商銷售比例] 的結果。 若要查看其運作方式,請將 CalendarYear 欄位新增至樞紐分析表的 [資料列標籤] 區域,然後將 ProductCategoryName 欄位新增至 [資料行標籤] 區域。 然後,將量值 [所有轉售商銷售比例] 拖曳至樞紐分析表的 [值] 區域。 若要以百分比來檢視結果,請使用 Excel 的格式化功能,將百分比數字格式套用至包含量值的資料格。
資料列標籤 | Accessories | Bikes | Clothing | Components | 總計 |
---|---|---|---|---|---|
2005 | 0.02% | 9.10% | 0.04% | 0.75% | 9.91% |
2006 | 0.11% | 24.71% | 0.60% | 4.48% | 29.90% |
2007 | 0.36% | 31.71% | 1.07% | 6.79% | 39.93% |
2008 | 0.20% | 16.95% | 0.48% | 2.63% | 20.26% |
總計 | 0.70% | 82.47% | 2.18% | 14.65% | 100.00% |
公式
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
公式的結構如下所示:
分子 (
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
) 是樞紐分析表中目前儲存格的 ResellerSales_USD [SalesAmount_USD] 值加總,且在 CalendarYear 和 ProductCategoryName 上套用內容篩選條件。針對分母,一開始請先指定ResellerSales_USD 資料表,然後使用 ALL 函式來移除資料表上的所有內容篩選條件。
然後,您可以使用 SUMX 函式來加總 ResellerSales_USD[SalesAmount_USD] 資料行中的值。 換句話說,您可以取得所有轉售商銷售的 ResellerSales_USD[SalesAmount_USD] 總和。
範例 2
計算產品銷售額對目前年度總銷售額的比例
假設您想要建立資料表來顯示每個產品類別 (ProductCategoryName) 多年來的銷售額百分比。 若要取得每年每個 ProductCategoryName 值上所佔的百分比,您需要將該特定年度和產品類別銷售額總和除以相同產品類別在所有年度的銷售總和。 換句話說,建議您保留 ProductCategoryName 的篩選條件,但在計算百分比的分母時,移除年度的篩選條件。
下表顯示使用程式碼區段中所示公式來建立新量值 [轉售商銷售年度] 的結果。 若要查看其運作方式,請將 CalendarYear 欄位新增至樞紐分析表的 [資料列標籤] 區域,然後將 ProductCategoryName 欄位新增至 [資料行標籤] 區域。 若要以百分比來檢視結果,請使用 Excel 的格式化功能,將百分比數字格式套用至包含量值 [轉銷商銷售年度] 的資料格。
資料列標籤 | Accessories | Bikes | Clothing | Components | 總計 |
---|---|---|---|---|---|
2005 | 3.48% | 11.03% | 1.91% | 5.12% | 9.91% |
2006 | 16.21% | 29.96% | 27.29% | 30.59% | 29.90% |
2007 | 51.62% | 38.45% | 48.86% | 46.36% | 39.93% |
2008 | 28.69% | 20.56% | 21.95% | 17.92% | 20.26% |
總計 | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
公式
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(DateTime[CalendarYear]))
公式的結構如下所示:
分子 (
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
) 是樞紐分析表中目前儲存格的 ResellerSales_USD [SalesAmount_USD] 值總和,其中 CalendarYear 和 ProductCategoryName 資料行上已套用內容篩選條件。針對分母,您可以使用 ALL(Column) 函式來移除 CalendarYear 上的現有篩選條件。 這會在套用資料行標籤的現有內容篩選條件之後,計算 ResellerSales_USD 資料表上其餘資料列的總和。 最後的結果是,針對分母,總和是透過所選 ProductCategoryName (隱含的內容篩選條件) 以及 Year 中的所有值計算而得。
範例 3
計算產品類別佔每年總銷售額的比重
假設您想要建立資料表,其顯示每個產品類別的銷售額百分比 (以年為單位)。 若要取得特定年度中每個產品類別的百分比,您需要計算該特定產品類別 (ProductCategoryName) 在年度 n 的銷售總和,然後將結果值除以所有產品類別的年度銷售額總和。 換句話說,建議您保留 ProductCategoryName 的篩選條件,但在計算百分比分母時移除年度的篩選條件。
下表顯示使用程式碼區段中所示公式來建立新量值 [轉銷商銷售類別名稱] 的結果。 若要查看其運作方式,請將 CalendarYear 欄位新增至樞紐分析表的 [資料列標籤] 區域,並將 ProductCategoryName 欄位新增至 [資料行標籤] 區域。 然後將新量值新增至樞紐分析表的 [值] 區域中。 若要以百分比來檢視結果,請使用 Excel 的格式化功能,將百分比數字格式套用至包含新量值 [轉銷商銷售類別名稱] 的資料格。
資料列標籤 | Accessories | Bikes | Clothing | Components | 總計 |
---|---|---|---|---|---|
2005 | 0.25% | 91.76% | 0.42% | 7.57% | 100.00% |
2006 | 0.38% | 82.64% | 1.99% | 14.99% | 100.00% |
2007 | 0.90% | 79.42% | 2.67% | 17.01% | 100.00% |
2008 | 0.99% | 83.69% | 2.37% | 12.96% | 100.00% |
總計 | 0.70% | 82.47% | 2.18% | 14.65% | 100.00% |
公式
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(ProductCategory[ProductCategoryName]))
公式的結構如下所示:
分子 (
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
) 是樞紐分析表中目前儲存格的 ResellerSales_USD [SalesAmount_USD] 值總和,其中 CalendarYear 和 ProductCategoryName 欄位上套用了內容篩選條件。針對分母,您可以使用函式 ALL(Column) 來移除 ProductCategoryName 上的篩選條件,並在套用資料列標籤的現有內容篩選條件之後,計算 ResellerSales_USD 資料表上其餘資料列的總和。 最後的結果是,針對分母,總和是針對所選年度 (隱含的內容篩選條件) 以及 ProductCategoryName 的所有值計算而得。