ALL
傳回數據表中的所有數據列,或數據行中的所有值,忽略任何可能已套用的篩選條件。 此函式適用於清除篩選,並在數據表中的所有數據列上建立計算。
語法
ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )
參數
術語 | 定義 |
---|---|
table |
您要清除篩選的數據表。 |
column |
您要清除篩選的數據列。 |
ALL 函式的自變數必須是基表的參考或基底數據行的參考。 您無法搭配 ALL 函數使用資料表運算式或數據行表達式。
傳回值
已移除篩選的數據表或數據行。
言論
此函式本身不會使用,而是做為中繼函式,可用來變更執行其他計算的結果集。
包含 ALL() 函式之 DAX 表示式的一般行為是,將會忽略套用的任何篩選。 不過,在某些情況下,由於
auto-exist
,這是 DAX 技術,可將篩選優化,以減少特定 DAX 查詢所需的處理量。 自動存在和 ALL() 提供非預期結果的範例,是在篩選相同數據表的兩個或多個數據行時(例如使用交叉分析篩選器時),且該數據表上有一個使用 ALL() 的量值。 在此情況下,自動存在會 將多個篩選 合併成一個篩選,而且只會篩選現有的值組合。 由於此合併,量值會根據現有的值組合來計算,而結果會以篩選的值為基礎,而不是如預期般計算所有值。 若要深入了解自動存在及其對計算的影響,請參閱Microsoft MVP Alberto Ferrari 的 瞭解 DAX 自動存在 文章 sql.bi.com。下表說明如何在不同案例中使用 ALL 和 ALLEXCEPT 函式。
函式和使用方式 描述 ALL() 在任何地方移除所有篩選。 ALL() 只能用來清除篩選,但不能傳回數據表。 ALL(表格) 從指定的數據表中移除所有篩選。 實際上,ALL(Table) 會傳回數據表中的所有值,從可能已套用的內容中移除任何篩選。 當您使用許多群組層級,並想要建立計算,以建立匯總值與總值的比率時,此函式很有用。 第一個範例示範此案例。 ALL (Column[, Column[, ...]]]) 從數據表中指定的數據列中移除所有篩選;數據表中其他數據行的所有其他篩選仍然適用。 所有數據行自變數都必須來自相同的數據表。 當您想要移除一或多個特定數據行的內容篩選,並保留所有其他內容篩選時,ALL(Column) 變體很有用。 第二個和第三個範例示範此案例。 ALLEXCEPT(Table, Column1 [,Column2]...) 拿掉資料表中的所有內容篩選,但套用至指定資料行的篩選條件除外。 這是一個方便的快捷方式,讓您想要移除數據表中許多但並非所有數據行上的篩選。 在匯出數據行或數據列層級安全性 (RLS) 規則中使用時,不支援在 DirectQuery 模式中使用此函式。
範例 1
計算類別銷售與總銷售額的比率
假設您想要在數據透視表中尋找目前儲存格的銷售量,除以所有轉銷商的總銷售額。 若要確保分母是相同的,不論數據透視表使用者如何篩選或分組數據,您都會定義使用 ALL 建立正確總計的公式。
下表顯示當使用程式代碼區段中所示公式建立新量值時,[所有轉銷商銷售比率]時的結果。 若要查看運作方式,請將字段 CalendarYear 新增至數據透視表
數據列標籤 | 輔料 | 自行車 | 服裝 | 元件 | 總計 |
---|---|---|---|---|---|
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])
公式的建構方式如下:
numerator
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 新增至數據透視表
數據列標籤 | 輔料 | 自行車 | 服裝 | 元件 | 總計 |
---|---|---|---|---|---|
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]))
公式的建構方式如下:
numerator
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
是數據透視表中目前單元格的 ResellerSales_USD[SalesAmount_USD] 值總和,並套用在 CalendarYear 和 ProductCategoryName 數據行的內容篩選。針對分母,您可以使用 ALL(Column) 函式,移除 CalendarYear 上的現有篩選。 這會在從數據行標籤套用現有的內容篩選之後,計算ResellerSales_USD數據表上剩餘數據列的總和。 淨效果是,針對分母,總和會透過選取的 ProductCategoryName(隱含內容篩選條件)計算,並在 Year 中計算所有值。
範例 3
計算產品類別對每年總銷售額的貢獻
假設您想要建立數據表,以逐年顯示每個產品類別的銷售百分比。 若要取得特定年份中每個產品類別的百分比,您必須計算該特定產品類別 (ProductCategoryName) 在 year n 中的銷售額總和,然後將結果值除以所有產品類別的年度 n 總和。 換句話說,您想要在年份保留篩選,但在計算百分比分母時移除 ProductCategoryName 上的篩選。
下表顯示當使用程式代碼區段中所示的公式建立新量值時,Reseller Sales CategoryName的結果。 若要查看運作方式,請將 [CalendarYear] 字段新增至數據透視表的 [列卷標] 區域,然後將欄位 ProductCategoryName 新增至 [數據行卷標] 區域。 然後將新的量值新增至數據透視表 值 區域。 若要將結果檢視為百分比,請使用 Excel 的格式設定功能,將百分比數位格式套用至包含新量值的儲存格,Reseller Sales CategoryName。
數據列標籤 | 輔料 | 自行車 | 服裝 | 元件 | 總計 |
---|---|---|---|---|---|
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]))
公式的建構方式如下:
numerator
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
是數據透視表中目前數據格的 ResellerSales_USD[SalesAmount_USD] 值總和,且內容篩選會套用至字段、CalendarYear 和 ProductCategoryName。針對分母,您可以使用 函式 ALL(Column),移除 ProductCategoryName 上的篩選,並在從數據列卷標套用現有的內容篩選之後,計算ResellerSales_USD數據表上剩餘數據列的總和。 淨效果是,對於分母而言,總和會透過選取的 Year 計算(隱含的內容篩選條件),以及 ProductCategoryName 的所有值。