ALL 関数

適用されているフィルターをすべて無視し、テーブル内のすべての行 (列内のすべての値) を返します。 この関数は、フィルターをクリアし、テーブル内のすべての行に基づく計算を実行する場合に便利です。

構文

ALL( {<table> | <column>[, <column>[, <column>[,…]]]} )

パラメーター

項目

定義

table

フィルターをクリアする対象のテーブル。

column

フィルターをクリアする対象の列。

ALL 関数の引数は、基になるテーブルへの参照または基になる列への参照のどちらかである必要があります。 ALL 関数で、テーブル式または列の式を使用することはできません。

戻り値

フィルターが除去されたテーブルまたは列。

説明

この関数は、単独では使用されず、中間関数として機能し、他の計算を実行して得られる結果セットを変更するために使用できます。

<トピックの状態:> このトピックの一部の情報はプレリリースであり、今後のリリースで変更されることがあります。プレリリース情報では、Microsoft SQL Server 2012 Service Pack 1 (SP1) Community Technology Preview 4 (CTP4) の新しい機能と、従来の機能に加えられた変更について説明します。 [日付テーブルとしてマーク] を使用して [列] が日付列としてマークされている場合

次の表に示されているように、ALL 関数および ALLEXCEPT 関数はさまざまなシナリオで使用できます。

関数および使用法

説明

ALL(Table)

指定されたテーブルからすべてのフィルターを除去します。 つまり、ALL(Table) はコンテキストからすべてのフィルターを除去し、テーブル内のすべての値を返します。このフィルターは、ALL(Table) が使用されない場合には適用されるものです。

この関数は、多数のレベルでグループ化を実行していて、合計値に対する集計値の比率を求める計算を作成する場合に役立ちます。 最初の例で、このシナリオを示しています。

ALL (Column[, Column[, …]])

テーブル内の指定された列からすべてのフィルターを除去します。テーブル内の他の列にある他のすべてのフィルターはそのまま適用されます。 列引数はすべて、同じテーブルのものである必要があります。

ALL(Column) は、1 つ以上の特定の列のコンテキスト フィルターを除去し、他のすべてのコンテキスト フィルターを保持する場合に便利です。

2 番目および 3 番目の例では、このシナリオが示されています。

ALLEXCEPT(Table, Column1 [,Column2]...)

指定された列に適用されているフィルター以外の、テーブル内のすべてのコンテキスト フィルターを除去します。

これは、テーブル内の (すべてではなく) 多数の列からフィルターを除去する場合に便利な方法です。

例: 総売上に対する製品カテゴリ別売上の比率を計算する

説明

この例では、ピボットテーブルの現在のセルにある売上高を、すべての再販業者の売上合計で除算した結果を調べます。 ピボットテーブルのユーザーがデータに対して実行するフィルター処理やグループ化に関係なく、同じ分母が使用されるようにするには、ALL を使用して正確な総計を計算する数式を定義します。

次の表に、数式を使用して新しいメジャー All Reseller Sales Ratio を作成した場合の結果を示します。使用する数式はコード例に示しています。 この数式の動作を確認するには、ピボットテーブルの [行ラベル] 領域に CalendarYear フィールドを追加し、[列ラベル] 領域に ProductCategoryName フィールドを追加します。 次に、ピボットテーブルの [値] 領域に、All Reseller Sales Ratio メジャーをドラッグします。 結果をパーセンテージとして表示するには、Excel の書式設定機能を使用して、このメジャーが含まれているセルに、パーセンテージの数値書式設定を適用します。

All Reseller Sales

列ラベル

 

 

 

 

行ラベル

Accessories

Bikes

Clothing

コンポーネント

総計

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])

コメント

数式の構成は次のとおりです。

  1. 分子 SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) は、ピボットテーブルの現在のセルに対する ResellerSales_USD[SalesAmount_USD] の値の合計です。CalendarYear および ProductCategoryName にコンテキスト フィルターが適用されています。

  2. 分母については、まずテーブル ResellerSales_USD を指定し、ALL 関数を使用して、このテーブルにあるすべてのコンテキスト フィルターを除去します。

  3. 次に、SUMX 関数を使用して、ResellerSales_USD[SalesAmount_USD] 列の値の合計を計算します。 つまり、すべての再販業者の売上の ResellerSales_USD[SalesAmount_USD] の合計が得られます。

メジャーの作成の詳細については、「ピボットテーブルまたはピボットグラフのメジャーの作成」を参照してください。

注意

上の例では、DAX サンプル ブックに含まれている ResellerSales_USD、DateTime、および ProductCategory の各テーブルを使用しています。 サンプルの詳細については、を参照してください。

例: 製品カテゴリ別の総売上に対する各年の比率を計算する

説明

この例では、各製品カテゴリ (ProductCategoryName) の過去数年間の売上をパーセンテージで比較する表を作成します。 ProductCategoryName の各値に対する各年のパーセンテージを計算するには、製品カテゴリのその年の売上合計を、同じ製品カテゴリのすべての年の売上合計で除算する必要があります。 つまり、パーセンテージの分母を計算するときに、ProductCategoryName に対するフィルターを保持し、年に対するフィルターを除去します。

次の表に、数式を使用して新しいメジャー Reseller Sales Year を作成した場合の結果を示します。使用する数式はコード例に示しています。 この数式の動作を確認するには、ピボットテーブルの [行ラベル] 領域に CalendarYear フィールドを追加し、[列ラベル] 領域に ProductCategoryName フィールドを追加します。 結果をパーセンテージとして表示するには、Excel の書式設定機能を使用して、Reseller Sales Year メジャーが含まれているセルに、パーセンテージの数値書式設定を適用します。

Reseller Sales Year

列ラベル

 

 

 

 

行ラベル

Accessories

Bikes

Clothing

コンポーネント

総計

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]))

コメント

数式の構成は次のとおりです。

  1. 分子 SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) は、ピボットテーブルの現在のセルに対する ResellerSales_USD[SalesAmount_USD] の値の合計です。列 CalendarYear および ProductCategoryName にコンテキスト フィルターが適用されています。

  2. 分母については、ALL(Column) 関数を使用して、CalendarYear に対する既存のフィルターを除去します。 これにより、列ラベルに示されている既存のコンテキスト フィルターを適用した後、ResellerSales_USD テーブルに残っている行の合計が計算されます。 つまり分母としては、選択した ProductCategoryName (暗黙のコンテキスト フィルター) に対し、年のすべての値について、合計が計算されます。

メジャーの作成の詳細については、「ピボットテーブルまたはピボットグラフのメジャーの作成」を参照してください。

注意

この例では、DAX サンプル ブックに含まれている ResellerSales_USD、DateTime、および ProductCategory の各テーブルを使用しています。 サンプルの詳細については、を参照してください。

例: 年ごとの総売上に対する製品カテゴリ別売上の割合を計算する

説明

この例では、各製品カテゴリの年ごとの売上をパーセンテージで示す表を作成します。 特定の年の各製品カテゴリのパーセンテージを計算するには、n 年における特定の製品カテゴリ (ProductCategoryName) の売上合計を、n 年におけるすべての製品カテゴリの売上合計で除算する必要があります。 つまり、パーセンテージの分母を計算するときに、年に対するフィルターを保持し、ProductCategoryName に対するフィルターを除去します。

次の表に、数式を使用して新しいメジャー Reseller Sales CategoryName を作成した場合の結果を示します。使用する数式はコード例に示しています。 この数式の動作を確認するには、ピボットテーブルの [行ラベル] 領域に CalendarYear フィールドを追加し、[列ラベル] 領域に ProductCategoryName フィールドを追加します。 次に、ピボットテーブルの [値] 領域に新しいメジャーを追加します。 結果をパーセンテージとして表示するには、Excel の書式設定機能を使用して、新しいメジャーである Reseller Sales CategoryName が含まれているセルに、パーセンテージの数値書式設定を適用します。

Reseller Sales CategoryName

列ラベル

 

 

 

 

行ラベル

Accessories

Bikes

Clothing

コンポーネント

総計

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]))

コメント

数式の構成は次のとおりです。

  1. 分子 SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD]) は、ピボットテーブルの現在のセルの ResellerSales_USD[SalesAmount_USD] の値の合計です。CalendarYear および ProductCategoryName の各フィールドにコンテキスト フィルターが適用されています。

  2. 分母については、ALL(Column) 関数を使用して ProductCategoryName に対するフィルターを除去し、行ラベルに示されている既存のコンテキスト フィルターを適用してから、ResellerSales_USD テーブルに残っている行の合計を計算します。 つまり分母として、選択した年 (暗黙のコンテキスト フィルター) の、ProductCategoryName のすべての値の合計が計算されます。

メジャーの作成の詳細については、「ピボットテーブルまたはピボットグラフのメジャーの作成」を参照してください。

注意

この例では、DAX サンプル ブックに含まれている ResellerSales_USD、DateTime、および ProductCategory の各テーブルを使用しています。 サンプルの詳細については、を参照してください。

関連項目

参照

ALL 関数

ALLEXCEPT 関数

FILTER 関数

その他の技術情報

フィルター関数 (DAX)