CALCULATE 関数を使用する
DAX の CALCULATE 関数は、データ アナリストが学習できる最も重要な関数の 1 つです。 この関数名は、使用する目的を適切に表していません。
CALCULATE 関数を使用すると、正しい結果を表すために使用されているコンテキストの特定の部分がオーバーライドされる DAX メジャーを作成できます。
たとえば、Power BI の他の視覚エフェクトで選択されている年に関係なく、常に 2015 年の売上合計が計算されるメジャーを作成する場合は、次の例のようなメジャーを作成します。
Total Sales for 2015 = CALCULATE(SUM('Sales OrderDetails'[Total Price]), YEAR('Sales OrderDetails'[orderdate]) = 2015)
メジャーに Total Sales for 2015 という名前が付けられていることに注目してください。 CALCULATE 関数を使用してコンテキストをオーバーライドする場合は、どのようにオーバーライドしているかを正確に示すような名前をメジャーに付けると便利です。 この例では、前のメジャーで行ったのと同じように、CALCULATE によって Total Price 列が集計されています。 ただし、フィルター コンテキストによって指示される内容を使用しながらデータセット全体を操作する代わりに、2015 年用にフィルター コンテキストをオーバーライドしています。 他のレポートのフィルターとして選択された年に関係なく、このメジャーを使用して 2015 年の合計が常に取得されます。その他のすべてのフィルターは引き続き適用されます。 次の例では、この概念の実際の動作が示されています。
前の視覚エフェクトに両方のメジャーを追加すると、次のスクリーンショットのようになります。
前のスクリーンショットに示されているように、Total Sales は引き続き 135 万米国ドルですが、2015 年の Total Sales は 66 万米国ドルです。
前に行ったように、レポートに他の視覚エフェクトを追加して、2015 年を選択すると、結果は次の画像のようになります。 2016 年を選択した場合、2015 年の Total Sales は 66 万米国ドルのままになります。
両方のメジャーが同様に同じ量になったことに注意してください。 地域、従業員、製品など、他の条件でフィルター処理を行う場合でも、フィルター コンテキストはやはり両方のメジャーに適用されます。 そのメジャーに適用されないのは、年のフィルターだけです。
ヘルプが必要ですか? Microsoft のトラブルシューティング ガイドをご覧になるか、問題を報告して具体的なフィードバックをお送りください。