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 関数を使用しているため、分母は、垂直スライサー、水平スライサー、およびページ スライサーが適用された後でかつ行スライサーおよび列スライサーが適用される前の、テーブルの下部の販売の総計を表します。

    メモ: 明示的なフィルターが式に含まれている場合、これらのフィルターも式に適用されます。