Power BI で DAX フィルター コンテキストを変更する
ラボのストーリー
このラボでは、フィルター コンテキストの操作を伴う DAX 式を使用してメジャーを作成します。
学習内容は次のとおりです。
CALCULATE関数を使用してフィルター コンテキストを操作する。
この配信には約 30 分かかります。
作業の開始
この演習を完了するには、まず Web ブラウザーを開き、次の URL を入力して zip ファイルをダウンロードします。
https://github.com/MicrosoftLearning/PL-300-Microsoft-Power-BI-Data-Analyst/raw/Main/Allfiles/Labs/05-modify-dax-filter-context/05-modify-dax-filter-context.zip
ファイルをC:\Users\Student\Downloads\05-modify-dax-filter-context フォルダーに展開します。
05-Starter-Sales Analysis.pbix ファイルを開きます。
注:ファイルが読み込まれると、サインイン ダイアログが表示されることがあります。[キャンセル] を選択してサインイン ダイアログを閉じます。他のすべての情報ウィンドウを閉じます。変更の適用を求めるメッセージが表示されたら、[後で適用] を選択します。
行列の視覚エフェクトを作成する
このタスクでは、新しいメジャーのテストをサポートするためのマトリックス ビジュアルを作成します。
-
Power BI Desktop で、新しいレポート ページを作成します。
-
[ページ 3] で、行列の視覚エフェクトを追加します。

-
ページ全体に合わせて行列の視覚エフェクトのサイズを変更します。
-
マトリックスの視覚エフェクトのフィールドを構成するには、[データ] ペインから
Region | Regions階層をドラッグして、視覚エフェクト内にドロップします。“このラボでは、フィールドまたは階層を参照するために簡略表記を使用します。 次のようになります:
Region | Regions。 この例では、Regionはテーブル名、Regionsは階層名です。_ -
Sales | Salesフィールドを [値] ウェルに追加します。 -
階層全体を展開するには、行列の視覚エフェクトの右上にある 2 つに分かれた矢印アイコンを 2 回選択します。

-
視覚エフェクトを書式設定するには、[視覚化] ペインにある [書式] ペインを選択します。

-
[検索] ボックスに「Layout」と入力します。
-
[Layout] プロパティを [Tabular] に設定します。

-
マトリックス ビジュアルに 4 つの列見出しができたことを確認します。

“Adventure Works では、販売地域はグループ、国、地域に分類されます。すべての国 (米国を除く) には地域が 1 つだけあり、その国にちなんだ名前が付けられています。米国は非常に大きな販売地域であるため、5 つの販売地域に分かれています。
この演習ではさまざまなメジャーを作成し、マトリックスの視覚エフェクトに追加してテストします。
フィルター コンテキストを操作する
このタスクでは、CALCULATE 関数を使用してフィルター コンテキストを操作する DAX 式を使って、いくつかのメジャーを作成します。
CALCULATE関数は、フィルター コンテキストを操作するために使用できる強力な関数です。最初の引数では、式またはメジャーを受け取ります (メジャーは単に名前付きの式です)。その後の引数によって、フィルター コンテキストを変更できます。”
-
次の式に基づいて、
Salesテーブルにメジャーを追加します。注:参考までに、このラボのすべての DAX 定義はC:\Users\Student\Downloads\05-modify-dax-filter-context\Snippets.txt ファイルからコピーできます。
Sales All Region = CALCULATE( SUM(Sales[Sales]), REMOVEFILTERS(Region) )REMOVEFILTERS関数は、アクティブなフィルターを削除します。引数を指定しないことも、テーブル、列、または複数の列を引数として指定することもできます。”この数式では、メジャーは、変更されたフィルター コンテキストの
Sales列の合計を評価します。これにより、Regionテーブルの列に適用されているフィルターがすべて削除されます。__ -
マトリックスの視覚エフェクトに
Sales All Regionメジャーを追加します。
-
このメジャーによって、各地域、国 (小計)、およびグループ (小計) のすべての地域売上の合計が計算されていることに注目してください。
“新しいメジャーはまだ有用な結果を提供していません。グループ、国、または地域の販売をこの値で割ると、「総計の割合」と呼ばれる有用な比率が生成されます。
-
[データ] ペインで、
Sales All Regionメジャーが選択されていることを確認し (選択されている場合は、背景が濃い灰色になります)、数式バーでメジャー名と数式を次の数式に置き換えます。'’ヒント: 既存の数式を置き換えるには、まずスニペットをコピーします。次に、数式バー内を選択し、Ctrl + A キーを押してすべてのテキストを選びます。次に、Ctrl + V キーを押してスニペットを貼り付け、選択したテキストを上書きします。次に、Enter キーを押します。’‘__
Sales % All Region = DIVIDE( SUM(Sales[Sales]), CALCULATE( SUM(Sales[Sales]), REMOVEFILTERS(Region) ) )“更新された数式の内容を正確に反映するように、メジャーの名前が変更されました。__
DIVIDE関数は、Sales列 (フィルター コンテキストによって変更されていない) の合計を、変更されたコンテキストのSales列の合計で割ります。これにより、Regionテーブルに適用されているフィルターがすべて削除されます。 -
マトリックス ビジュアルで、メジャーの名前が変更され、グループ、国、および地域ごとに異なる値が表示されるようになったこと注目してください。
-
Sales % All Regionメジャーは、小数点以下 2 桁のパーセンテージとして書式設定してください。 -
マトリックスの視覚エフェクトで、
Sales % All Regionメジャー値を確認します。
-
次の式に基づいて、
Salesテーブルにもう 1 つのメジャーを追加し、パーセンテージとして書式設定します。Sales % Country = DIVIDE( SUM(Sales[Sales]), CALCULATE( SUM(Sales[Sales]), REMOVEFILTERS(Region[Region]) ) ) -
Sales % Countryメジャーの数式は、Sales % All Regionメジャーの数式とわずかに異なることに注意してください。異なるのは、分母でのフィルター コンテキストの変更が、
Regionテーブルのすべての列ではなく、RegionテーブルのRegion列に対するフィルターを削除することで行われている点です。これは、グループまたは国の列に適用されているすべてのフィルターが保持されることを意味します。これにより、国の割合として売上を表す結果が得られます。 -
マトリックスの視覚エフェクトに
Sales % Countryメジャーを追加します。 -
米国のリージョンのみが 100% ではない値を生成することに注意してください。

以前に説明したように、複数の地域があるのは米国のみです。__ 他の国はすべて 1 つの地域として扱われているため、すべての割合が 100% になっています。
-
視覚エフェクトでのこのメジャーの読みやすさを向上させるために、
Sales % Countryメジャーを次の改良された数式で上書きします。Sales % Country = IF( ISINSCOPE(Region[Region]), DIVIDE( SUM(Sales[Sales]), CALCULATE( SUM(Sales[Sales]), REMOVEFILTERS(Region[Region]) ) ) )IF関数はISINSCOPE関数を使用して、リージョン列がレベルの階層内のレベルであるかどうかをテストします。true の場合、DIVIDE関数が評価されます。false の場合、リージョン列がスコープ内にないため、BLANKが返されます。 -
Sales % Countryメジャーによって、地域がスコープ内にある場合にのみ値が返されるようになったことに注目してください。
-
次の式に基づいて、
Salesテーブルにもう 1 つのメジャーを追加し、パーセンテージとして書式設定します。Sales % Group = DIVIDE( SUM(Sales[Sales]), CALCULATE( SUM(Sales[Sales]), REMOVEFILTERS( Region[Region], Region[Country] ) ) )グループの割合としての売上を得るために、2 つのフィルターを適用して、2 つの列に対するフィルターを効果的に削除できます。
-
マトリックスの視覚エフェクトに
Sales % Groupメジャーを追加します。 -
視覚エフェクトにおけるこのメジャーの読みやすさを向上させるには、
Sales % Groupメジャーを次の数式で上書きします。Sales % Group = IF( ISINSCOPE(Region[Region]) || ISINSCOPE(Region[Country]), DIVIDE( SUM(Sales[Sales]), CALCULATE( SUM(Sales[Sales]), REMOVEFILTERS( Region[Region], Region[Country] ) ) ) ) -
Sales % Groupメジャーによって、地域または国がスコープ内にある場合にのみ値が返されるようになったことに注目してください。 -
モデル ビューで、3 つの新しいメジャーを_Ratios_ という名前の表示フォルダーに配置します。

-
Power BI Desktop ファイルを保存します。
Salesテーブルに追加されたメジャーによって、階層ナビゲーションを実現するためにフィルター コンテキストが変更されました。小計の計算を実現するためのパターンでは、フィルター コンテキストから一部の列を削除する必要があり、総計を得るためにはすべての列を削除する必要があることに注意してください。”
ラボが完了しました
このラボでは必要ありませんが、Power BI レポートを保存することもできます。 次の演習では、事前に作成されたスターター ファイルを使用します。
- 左上隅の [ファイル] メニューに移動し、[名前を付けて保存] を選択します。
- [このデバイスを参照する] を選択します。
- ファイルを保存するフォルダーを選択し、わかりやすい名前を付けます。
- [保存] ボタンを選択して、レポートを .pbix ファイルとして保存します。
- 保留中のクエリの変更について適用を求めるダイアログ ボックスが表示された場合は、[適用] を選択します。
- Power BI Desktop を閉じます。