CALCULATE 関数
指定したフィルターによって変更されたコンテキストで式を評価します。
構文
CALCULATE(<expression>,<filter1>,<filter2>…)
パラメーター
項目 |
定義 |
---|---|
expression |
評価の対象となる式。 |
filter1,filter2,… |
(省略可能) フィルターを定義するブール式またはテーブル式のコンマ区切りの一覧。 |
最初のパラメーターとして使用する式は、基本的にメジャーと同じです。
引数としてブール式を使用する場合は、次の制限があります。
式でメジャーを参照することはできません。
式で入れ子になった CALCULATE 関数を使用することはできません。
式で、集計関数のようなテーブルをスキャンする関数またはテーブルを返す関数を使用することはできません。
ただし、ブール式で、単一の値を検索する関数やスカラー値を計算する関数は使用できます。
戻り値
式の結果の値。
説明
データがフィルター処理される場合、CALCULATE 関数はデータがフィルター処理されるコンテキストを変更し、指定された新しいコンテキストで式を評価します。 フィルター引数で使用されている各列の既存のフィルターが削除され、フィルター引数で使用されているフィルターが代わりに適用されます。
使用例
すべての再販業者の売上に対する現在の再販業者の売上の比率を計算するには、現在のセルの売上合計 (分子) を計算し、その合計をすべての再販業者の売上合計 (分母) で除算するメジャーをピボットテーブルに追加します。 ピボットテーブルによるデータのフィルター処理やグループ化に関係なく、同じ分母が使用されるようにするには、数式の分母を表す部分で、ALL 関数を使用し、すべてのフィルターをクリアして正確な合計を計算する必要があります。
次の表に、数式を使用して新しいメジャー All Reseller Sales Ratio が作成された場合の結果を示します。使用される数式はコード例に示しています。
この数式の動作を確認するには、ピボットテーブルの [行ラベル] 領域に CalendarYear フィールドを追加し、[列ラベル] 領域に ProductCategoryName フィールドを追加します。 次に、ピボットテーブルの [値] 領域に新しいメジャーを追加します。 数値をパーセンテージとして表示するには、新しいメジャー All Reseller Sales Ratio を含むピボットテーブルの領域にパーセンテージの数値書式設定を適用します。
All Reseller Sales |
列ラベル |
|
|
|
|
---|---|---|---|---|---|
行ラベル |
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% |
=( SUM('ResellerSales_USD'[SalesAmount_USD]))
/CALCULATE( SUM('ResellerSales_USD'[SalesAmount_USD])
,ALL('ResellerSales_USD'))
分母の CALCULATE 式によって、合計式の計算にすべての行を含めることができるようになります。 これにより、式の分子に存在する CalendarYear および ProductCategoryName の暗黙的なフィルターが上書きされます。
関連する関数
CALCULATE 関数の最初の引数は単一の値を返す式を指定する必要があるのに対し、CALCULATETABLE 関数は値のテーブルを受け取ります。