ALLSELECTED 関数 (DAX)
現在のクエリの列および行からコンテキスト フィルターを削除し、他のすべてのコンテキスト フィルターと明示的なフィルターは保持します。
ALLSELECTED 関数は、クエリのすべての列および行を表すコンテキストを取得する一方で、行フィルターおよび列フィルター以外の明示的なフィルターおよびコンテキストを維持します。 この関数を使用して、クエリの表示部分の合計を取得できます。
構文
ALLSELECTED([<tableName> | <columnName>])
パラメーター
tableName
標準 DAX 構文を使用した既存のテーブルの名前。 このパラメーターに式を指定することはできません。 このパラメーターはオプションです。columnName
標準 DAX 構文を使用した既存の列の名前 (通常は完全修飾名)。 式を指定することはできません。 このパラメーターはオプションです。
戻り値
列フィルターおよび行フィルターを持たないクエリのコンテキスト。
説明
この関数は、引数を受け取らないか、1 つの引数を受け取ります。 引数が 1 つある場合、引数は tableName または columnName のどちらかです。
この関数は、クエリ内で明示的に設定されたすべてのフィルターを保持し、行フィルターおよび列フィルター以外のすべてのコンテキスト フィルターを保持するため、ALL() とは異なります。
使用例
次の例は、DAX 式を使用して、テーブル レポートでレベルが異なる表示部分の合計を生成する方法を示しています。 レポートでは、2 つのフィルターが Reseller Sales データに適用されています。1 つは Sales Territory Group = Europe、もう 1 つは Promotion Type = Volume Discount です。 フィルターの適用後、表示部分の合計は、レポート全体、All Years、または All Product Categories で計算できます。 また、わかりやすくするために、レポートのすべてのフィルターを除去して、All Reseller Sales の総計も取得しています。 次の DAX 式の評価結果は、表示部分の合計があるテーブルの構築に必要なすべての情報が含まれているテーブルになります。
define
measure 'Reseller Sales'[Reseller Sales Amount]=sum('Reseller Sales'[Sales Amount])
measure 'Reseller Sales'[Reseller Grand Total]=calculate(sum('Reseller Sales'[Sales Amount]), ALL('Reseller Sales'))
measure 'Reseller Sales'[Reseller Visual Total]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED())
measure 'Reseller Sales'[Reseller Visual Total for All of Calendar Year]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED('Date'[Calendar Year]))
measure 'Reseller Sales'[Reseller Visual Total for All of Product Category Name]=calculate(sum('Reseller Sales'[Sales Amount]), ALLSELECTED('Product Category'[Product Category Name]))
evaluate
CalculateTable(
//CT table expression
summarize(
//summarize table expression
crossjoin(distinct('Product Category'[Product Category Name]), distinct('Date'[Calendar Year]))
//First Group by expression
, 'Product Category'[Product Category Name]
//Second Group by expression
, 'Date'[Calendar Year]
//Summary expressions
, "Reseller Sales Amount", [Reseller Sales Amount]
, "Reseller Grand Total", [Reseller Grand Total]
, "Reseller Visual Total", [Reseller Visual Total]
, "Reseller Visual Total for All of Calendar Year", [Reseller Visual Total for All of Calendar Year]
, "Reseller Visual Total for All of Product Category Name", [Reseller Visual Total for All of Product Category Name]
)
//CT filters
, 'Sales Territory'[Sales Territory Group]="Europe", 'Promotion'[Promotion Type]="Volume Discount"
)
order by [Product Category Name], [Calendar Year]
SQL Server Management Studio で AdventureWorks DW Tabular Model 2012 に対して上の式を実行すると、結果は次のようになります。
[Product Category Name] |
[Calendar Year] |
[Reseller Sales Amount] |
[Reseller Grand Total] |
[Reseller Visual Total] |
[Reseller Visual Total for All of Calendar Year] |
[Reseller Visual Total for All of Product Category Name] |
---|---|---|---|---|---|---|
Accessories |
2000 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Accessories |
2001 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Accessories |
2002 |
625.7933 |
80450596.9823 |
877006.7987 |
38786.018 |
91495.3104 |
Accessories |
2003 |
26037.3132 |
80450596.9823 |
877006.7987 |
38786.018 |
572927.0136 |
Accessories |
2004 |
12122.9115 |
80450596.9823 |
877006.7987 |
38786.018 |
212584.4747 |
Accessories |
2005 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Accessories |
2006 |
80450596.9823 |
877006.7987 |
38786.018 |
||
Bikes |
2000 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Bikes |
2001 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Bikes |
2002 |
73778.938 |
80450596.9823 |
877006.7987 |
689287.7939 |
91495.3104 |
Bikes |
2003 |
439771.4136 |
80450596.9823 |
877006.7987 |
689287.7939 |
572927.0136 |
Bikes |
2004 |
175737.4423 |
80450596.9823 |
877006.7987 |
689287.7939 |
212584.4747 |
Bikes |
2005 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Bikes |
2006 |
80450596.9823 |
877006.7987 |
689287.7939 |
||
Clothing |
2000 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Clothing |
2001 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Clothing |
2002 |
12132.4334 |
80450596.9823 |
877006.7987 |
95090.7757 |
91495.3104 |
Clothing |
2003 |
58234.2214 |
80450596.9823 |
877006.7987 |
95090.7757 |
572927.0136 |
Clothing |
2004 |
24724.1209 |
80450596.9823 |
877006.7987 |
95090.7757 |
212584.4747 |
Clothing |
2005 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Clothing |
2006 |
80450596.9823 |
877006.7987 |
95090.7757 |
||
Components |
2000 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Components |
2001 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Components |
2002 |
4958.1457 |
80450596.9823 |
877006.7987 |
53842.2111 |
91495.3104 |
Components |
2003 |
48884.0654 |
80450596.9823 |
877006.7987 |
53842.2111 |
572927.0136 |
Components |
2004 |
80450596.9823 |
877006.7987 |
53842.2111 |
212584.4747 |
|
Components |
2005 |
80450596.9823 |
877006.7987 |
53842.2111 |
||
Components |
2006 |
80450596.9823 |
877006.7987 |
53842.2111 |
レポート内の列は、次のとおりです。
Reseller Sales Amount
年度と製品カテゴリごとの Reseller Sales の実際の値。 この値は、年度とカテゴリが交差する、レポートの中央のセルに表示されます。Reseller Visual Total for All of Calendar Year
すべての年度を通じた、製品カテゴリごとの合計値。 この値は、レポートのすべての年度を通じて、特定の製品カテゴリの列または行の末尾に表示されます。Reseller Visual Total for All of Product Category Name
すべての製品カテゴリを通じた、年度ごとの合計値。 この値は、レポートのすべての製品カテゴリを通じて、特定の年度の列または行の末尾に表示されます。Reseller Visual Total
すべての年度と製品カテゴリを通じた合計値。 この値は、通常、テーブルの右下隅に表示されます。Reseller Grand Total
これは、フィルターが適用される前の、すべての再販業者の売上の総計です。[Reseller Visual Total] との違いに注意する必要があります。 このレポートには、2 つのフィルター (1 つは Product Category Group に対するもの、もう 1 つは Promotion Type に対するもの) が含まれていることを思い出してください。
引数を指定せずに ALLSELECTED() を使用する例を次に示します。この例では、水平スライサーおよび垂直スライサーを使用してフィルター処理されたテーブルに示される合計値に対する比率を計算します。 この例では、SQL Server 2012、PowerPivot for Excel、およびPowerPivot サンプル データ (DAX_AdventureWorks) を使用します。
PowerPivot フィールドの一覧で、ResellerSales[SalesAmount_USD] 列を [値] 領域にドラッグします。
Promotion[PromotionType] を [垂直スライサー] 領域にドラッグします。 Discontinued Product、Excess Inventory、および Seasonal Discount のスライサーを選択します。
SalesTerritory[SalesTerritoryGroup] を [水平スライサー] 領域にドラッグします。 Europe のスライサーを選択します。
SalesAmount_USD の合計の値は $19,614.37 です。
ProductCategory[ProductCategoryName] を [行ラベル] 領域にドラッグし、DateTime[CalendarYear] を [列ラベル] 領域にドラッグします。
テーブルは次のようになります。
SalesTerritoryGroup
Europe
North America
Pacific
NA
PromotionType
Discontinued Product
SalesAmount_USD の合計
列ラベル
Excess Inventory
行ラベル
2006
2007
2008
総計
New Product
Accessories
$1,111.22
$3,414.43
$4,525.66
No Discount
Bikes
$8,834.94
$6,253.78
$15,088.72
Seasonal Discount
総計
$9,946.16
$3,414.43
$6,253.78
$19,614.37
Volume Discount
電卓を使用して、金額 $3,414.43 (2007 年の Accessories) が $19,614.37 の 17.41% を表すことを確認します。
電卓を使用して、金額 $6,253.78 (2008 年の Bikes) が $19,614.37 の 31.88% を表すことを確認します。
電卓を使用して、金額 $15,088.72 (Bikes の総計) が $19,614.37 の 76.93% を表すことを確認します。
ResellerSales[SalesAmount_USD] を Values 領域から削除します。
次の式を使用して、Reseller Sales Ratio という名前のメジャーを ResellerSales テーブルに作成します (結果をパーセントとして書式設定します)。
=SUM(ResellerSales_USD[SalesAmount_USD])/ CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]), ALLSELECTED())
テーブルは次のようになります。
SalesTerritoryGroup |
||||||
Europe |
North America |
|||||
Pacific |
NA |
|||||
PromotionType |
||||||
Discontinued Product |
Reseller Sales Ratio |
列ラベル |
||||
Excess Inventory |
行ラベル |
2006 |
2007 |
2008 |
総計 |
|
New Product |
Accessories |
5.67 % |
17.41 % |
23.07 % |
||
No Discount |
Bikes |
45.04 % |
31.88 % |
76.93 % |
||
Seasonal Discount |
総計 |
50.71 % |
17.41 % |
31.88 % |
100.00 % |
|
Volume Discount |
電卓を使用して計算した結果と Reseller Sales Ratio の値を比較して、結果が一致することを確認します。分母の値はテーブルの下部の値として固定されます。
分母の CALCULATE 式では ALLSELECTED 関数を使用しているため、分母は、垂直スライサー、水平スライサー、およびページ スライサーが適用された後でかつ行スライサーおよび列スライサーが適用される前の、テーブルの下部の販売の総計を表します。
メモ: 明示的なフィルターが式に含まれている場合、これらのフィルターも式に適用されます。