DAX クエリ ビューの操作

Power BI の DAX クエリ ビューを使用すると、セマンティック モデルの Data Analysis Expressions (DAX) クエリを表示して操作できます。

DAX クエリ

Power BI では、DAX "式"を使用してデータのさまざまな種類の計算を定義できるほか、ロール セキュリティの定義にも使用できます。 一方、DAX "クエリ" は、モデルからデータを返すために使用できます。

DAX クエリは、自分が既に持っているデータを表示できるという点で SQL クエリに似ています。 DAX クエリでは、モデル内のアイテムやレポート内のビジュアルは作成されません。

DAX クエリには、以下の 2 つの主要要素があります。

  • EVALUATE ステートメント。これは必須です。 これは、クエリ内でどのデータがどのように返されるかを指定します。
  • DEFINE ステートメント。これは省略可能です。 これにより、クエリで使用するメジャーなどの DAX 式を定義できます。 DAX クエリ DEFINE MEASURE を使用して作成または更新されたメジャーは、DAX クエリ スコープ メジャーであり、DAX クエリのコンテキストでのみ実行されます。 DAX クエリ スコープ メジャーは、CodeLens モデル更新アクションまたは [変更してモデルを更新] ボタンを使用してモデルに追加することができます。

クエリの使用方法の詳細については、DAX リファレンス内の「DAX クエリ」を参照してください。

DAX クエリ ビューを開く

Power BI Desktop で、左側にある [DAX クエリ ビュー] アイコンを選択します。

Power BI Desktop 内の DAX クエリ ビュー アイコンのスクリーンショット。

Power BI サービスまたは Fabric ポータル ワークスペースで、コンテキスト メニューから [DAX クエリを記述] を選択します。

Power BI サービスまたは Fabric ポータルのセマンティック モデルの詳細ページで、ページの上部から [DAX クエリを記述] を選択します。

DAX クエリ ビュー レイアウト

Power BI Desktop の DAX クエリ ビューを詳しく見てみましょう。

DAX クエリ ビューのレイアウトを示す図。

DAX クエリ ビューには、以下の要素があります。

リボン

DAX クエリ ビュー リボンには、DAX クエリを記述するときに使用される一般的なアクションがあります。

DAX クエリ ビュー リボンのスクリーンショット。

リボン内の要素を詳しく見てみましょう。

クエリの形式設定

[クエリの書式設定] リボン ボタンを選択するか、SHIFT+ALT+F キーを使用して現在のクエリの書式設定を行います。 クエリはタブでインデントされます。 DAX 関数が大文字に変更され、行が追加されます。 DAX クエリの書式設定を行うことはベスト プラクティスと見なされており、DAX クエリの読みやすさを向上させます。 また、書式設定では、クエリのセクションを折りたたんだり展開したりできるようにインデントが行われます。

[クエリの書式設定] ボタンのスクリーンショット。

コメントとコメント解除

[コメント] リボン ボタンを選択して、カーソルがある行または選択されたすべての行の先頭に二重バックスラッシュ (//) を追加します。 これにより行がコメントアウトされ、DAX クエリの実行時には、これらの行は無視されます。

[コメント解除] リボン ボタンを選択して、カーソルがある行または選択されたすべての行の先頭にある // を削除します。 これは複数行コメント表記が追加されている行では機能しません。

CTRL + / キーを使用して、コメントとコメント解除を切り替えることもできます。

DAX クエリ ビュー リボンの [コメント] ボタンと [コメント解除] ボタンのスクリーンショット。

検索と置換

[検索] リボン ボタンを選択するか、CTRL+F キーを使用して DAX クエリ エディター内のテキストを検索します。 検索には、大文字と小文字の区別、単語全体のマッチ、正規表現の使用、現在のクエリに一致するものすべての巡回のオプションが含まれます。 [検索] ボックスの左側にあるシェブロンを選択して、[置換] に入ることもできます。

DAX クエリ ビュー リボンの [検索] ボタンのスクリーンショット。

リボンの [置換] ボタンを選択するか、CTRL+H キーを使用して DAX クエリ エディター内のテキストを検索して置換します。 置換には、大文字小文字の保持、一度に 1 つずつまたは一括での置換のオプションが含まれます。

DAX クエリ ビュー リボンの置換機能のスクリーンショット。

コマンド パレット

[コマンド パレット] リボン ボタンを選択するか、CTRL+ALT+P キーを使用してコマンド パレット ボックスを開きます。 その他の DAX クエリ エディター アクションを検索し、それらに関連付けられたキーボード ショートカットを確認できます。

DAX クエリ ビューのコマンド パレットのスクリーンショット。

コマンド バー

DAX クエリ ビューのコマンド バーには、DAX クエリ ビューを使用する際の最も重要なアクションが含まれています。

実行してキャンセル

[実行] ボタンは、DAX クエリまたはクエリの選択された行を実行します。 実行後のクエリの状態は、下部のステータス バーに表示されます。

DAX クエリ ビューのコマンド バーのスクリーンショット。

クエリの実行中、ボタンは [キャンセル] ボタンになり、実行中のクエリを停止するために使用できます。

DAX クエリ ビューのキャンセルのスクリーンショット。

変更してモデルを更新

[変更してモデルを更新] ボタンにより、DAX クエリ スコープ メジャーから DAX 数式でモデル メジャーが追加または上書きされます。 DAX クエリ スコープ メジャーは、DEFINE MEASURE ブロック内のメジャーです。 また、各モデル メジャーの上に表示される CodeLens テキストを使用して、そのメジャーを個別に追加または上書きすることもできます。

DAX クエリ エディター

DAX クエリ ビューには、クエリを記述して編集できるクエリ エディターが含まれています。 これは、ただの大きめの DAX 数式バーではありません。 もっと強力で、VS Code で利用できる DAX エディターと多くの類似点を持ちます。

DAX クエリ エディターには、以下の要素があります。

提案と Intellisense

クエリを入力して編集中に提案と Intellisense からの支援を受けることができます。

DAX クエリ エディターの Intellisense のスクリーンショット。

Enter キーまたは Tab キーを使用して強調表示された IntelliSense を追加するか、SHIFT + ENTER キーまたは ALT + ENTER キーを使用して IntelliSense オプションを追加せずに別の行に移動します。 ESC キーを選択すると、すべてのオーバーレイが閉じます。

カーソルを合わせてメジャー式を表示する

DAX クエリにメジャーが含まれている場合は、そのメジャーにカーソルを合わせると、式、名前、説明が表示されます。

メジャー数式機能を表示するためのホバーのスクリーンショット。

メジャーの電球クイック アクションを表示するための選択

DEFINE ステートメントのないクエリ内の EVALUATE ステートメント内のメジャーを選択すると、クイック アクション電球が表示されます。 [定義] または [参照有りで定義] を選択して、参照メジャー DAX 式有り、または無しで、このメジャーの式で DEFINE ステートメントを作成します。

CodeLens を使用してモデル メジャーを更新する

DEFINE MEASURE を使用すると、最初にメジャーを DAX クエリ スコープ メジャーとして作成できるため、メジャーを作成するときに役立ちます。 1 つのウィンドウで複数のメジャーを編集してから、クエリを実行して、すべてのメジャーまたは列による特定のグループを持つ一部のメジャーだけの結果を表示できます。 [レポート] ビューでテーブル ビジュアルを作成し、メジャー式を切り替える必要はありません。 CodeLens はこれにとどまらず、モデルにメジャーが既に存在する場合はプロンプトを表示し、存在しない場合はそれを追加することができます。

CodeLens は、DEFINE MEASURE ブロックの上に表示されるクリック可能なテキストです。 モデルにまだ存在しない DAX クエリ スコープ メジャーの場合、モデルの更新: 新しいメジャーの追加 CodeLens が表示され、これをクリックすると、モデル メジャーが追加されます。 モデルに既に存在する DAX クエリ スコープ メジャーの場合、DAX スコープ メジャーの DAX 数式が異なると、モデルの更新: メジャーの上書き CodeLens が表示され、これをクリックすると、モデル メジャーがこの DAX 数式に変更されます。

または、コマンド バーの [変更してモデルを更新] ボタンをクリックして、複数のメジャーを一度に追加または上書きすることもできます。

メジャー更新ワークフロー

電球クイック アクションと CodeLens は、以下のように完全なワークフローの中で一緒に使用できます。

  1. メジャーのコンテキスト メニューで、[クイック クエリ] を選択した後、[評価] を選択して、新しい [クエリ] タブでクエリを自動的に作成します。
  2. クエリ内のメジャーを選択して [定義] または [参照有りで定義] を実行して、DEFINE ステートメントを追加します。
  3. メジャーに対して式の更新を行った後、DAX クエリを実行してどのように変化したかを表示します。
  4. 変化内容が期待どおりであるようなら、CodeLens の [モデルの更新: メジャーの上書き] を使用してメジャーをモデルに保存し直します。

ワークフローを理解するためのより視覚的な方法を次に示します。

ワークフローの図。

結果グリッド

クエリを実行すると、結果は [結果] グリッドに表示されます。

結果グリッドのスクリーンショット。

クエリ エディターに複数の EVALUATE ステートメントがある場合は、複数の結果が返される可能性があります。 [結果] ドロップダウンを使用して、それらを切り替えることができます。 [コピー] ボタンは、グリッド全体をヘッダー付きのタブ区切りテーブルとしてコピーします。 グリッドのサイズ変更は、右上隅の矢印を使用するか、結果グリッドとクエリ エディターの間の境界線にカーソルを置くことで手動で行えます。

クエリでエラーが発生した場合は、結果グリッドにエラーが表示されます。

結果グリッド内のエラー メッセージのスクリーンショット。

コピー ボタンによって、エラーがクリップボードに転送されます。 エラーの先頭は、クエリ内のエラーの場所を示しています。 上の図でのエラーは次のとおりです。

"クエリ (4, 23) 'Sales 2' の値を決定できません。列が存在しないか、この列には現在の行が存在しません。"

そして、"クエリ (4, 23)" は、エラーが 4 行目の 23 文字目にあることを示しています。

クエリ タブ

DAX クエリ ビューには、複数のクエリ タブを含めることができ、タブは名前を変更または削除できます。 また、クエリの現在の状態も表示されます。

[クエリ] タブのスクリーンショット。

各タブには、以下のような状態インジケーターが含まれています。

  • クエリが実行されるまでインジケーターは表示されません。
  • 緑色のチェックマークは、クエリの実行が成功したことを示します。
  • 赤い十字は、エラーが発生したことを示します。
  • 円の中の塗りつぶされた四角形は、クエリがキャンセルされたことを示します。
  • 時計マークは、クエリが実行中であることを示します。

クエリはバックグラウンドで実行できるため、他のクエリ タブで作業を続けることができます。

DAX クエリの保存

Power BI Desktop から保存すると、DAX クエリ ビューのクエリ タブがファイルに保存されるため、ファイルを再度開いたときに中断した位置から続行できます。 開発者モードで Power BI プロジェクトを保存すると、各クエリ タブは、セマンティック モデル フォルダーの DAXQueries フォルダーに .dax ファイルとして、また、ライブ接続されたレポートで作成されている場合は、レポート フォルダーに含まれています。 「Power BI 開発者モードのドキュメント」で詳細を確認してください。

現在のところ、Power BI サービスの Power BI Desktop で、以前追加された DAX クエリを表示または編集することはできません。 レポートまたはセマンティック モデルの閲覧者には、セマンティック モデルと共に保存された DAX クエリは表示されません。

Power BI サービスまたは Fabric ポータルから DAX クエリを記述すると、閉じるときに、DAX クエリ ビューのタブは破棄されます。

データ ペイン

[データ] ペインには、クエリの記述に役立つモデル内のアイテムが表示されます。 これらのアイテムの大部分の編集パスは、クエリ ビューでブロックされています。

クイック クエリ

[データ] ペイン コンテキスト メニューには、[クイック クエリ] が含まれています。 クイック クエリを使用して新しいクエリ タブにテーブル、列、メジャーのクエリを作成します。 クイック クエリは、一般的なタスクの生産性を向上させるために設計されており、さらに変更することが容易なように構築されています。 すべてのクイック クエリは新しいクエリ タブに作成され、自動的に実行されます。

任意の場所

モデル内のすべてのメジャーを定義すると、クエリに表示されるすべてのメジャー式を含むクエリが作成されます。 すべてのメジャー式を簡単に検索できます。

Tables
  • [先頭 100 行の表示] では、SELECTCOLUMNS() を使用してクエリが作成され、テーブルの先頭 100 行が表示されます。 行のコメントアウトによる簡単な変更が可能なように、各行で列が一覧表示されます。 並べ替え順序を指定するための ORDER BY も含まれています。

    上位 100 行の表示のスクリーンショット。

  • [列統計の表示] では、テーブル内のすべての列の統計情報を示すクエリが作成されます。 MIN、MAX、AVERAGE、COUNT などの列を集計する方法については、多くの式を参照してください。

  • [このテーブル内のすべてのメジャーを定義する] では、クエリに表示されるこのテーブルのメジャー式を使用してクエリが作成されます。

  • [データ プレビューの表示] では、列の値を表示するために DISTINCT() を使用するクエリが作成されます。

    データ プレビューの表示のスクリーンショット。

  • [列統計の表示] では、その特定の列の統計情報を示すクエリが作成されます。 MIN、MAX、AVERAGE、COUNT などの列を集計する方法については、多くの式を参照してください。 返されるクエリは、列のデータ型によって異なり、数値、テキスト、および日付列のさまざまな統計情報を表示します。

    列プレビューの表示のスクリーンショット。

メジャー
  • [評価] では、メジャーの結果を表示するクエリが作成されます。 SUMMARIZECOLUMNS() は、国、製品などの特定のグループ別にメジャーを表示するために、列による何らかのグループを追加するために使用できます。

    メジャーの評価のスクリーンショット。

  • [定義と評価] では、メジャーの結果を表示し、後の変更が可能な DEFINE ステートメント内のメジャー式を表示するクエリが作成されます。

    メジャーの定義と評価のスクリーンショット。

  • [参照有りの定義と評価] では、メジャーの結果を表示し、後の変更が可能な DEFINE ステートメント内のメジャー式だけでなく、そのメジャー式内で参照されているその他のすべてのメジャーも表示するクエリが作成されます。 メジャーの完全なコンテキスト内の任意の部分を編集します。

    参照有りで定義と評価のスクリーンショット。

パフォーマンス アナライザーからのビジュアル DAX クエリの取得

[レポート] ビュー内のビジュアルは、DAX クエリを作成することでモデルからデータを取得します。 ビジュアル クエリは、パフォーマンス アナライザーを使用することで DAX クエリ ビューで表示できます。 パフォーマンス アナライザーは、ビジュアルに予期しない値が表示されている場合の理由についての分析情報を提供したり、後の修正が可能なクエリを素早く開始するための単純な方法として機能します。

[レポート ビュー] で、[最適化] リボンに移動した後、[パフォーマンス アナライザー] を選択します。 [記録の開始][視覚化の更新] の順に選択します。 下の表で、ビジュアルを展開して、クエリをコピーするか DAX クエリ ビューで実行するためのオプションを表示します。 DAX クエリ ビューで [実行] を選択すると、視覚化クエリが取得され、それが DAX クエリ ビュー内の新しい [クエリ] タブとして追加された後に、実行されます。

パフォーマンス アナライザー機能の視覚化 DAX クエリのスクリーンショット。

Power BI Desktop での DAX クエリ ビューとライブ接続

Power BI Desktop は、OneLake データ ハブでセマンティック モデルが選択されているときに [接続] をクリックして、発行された Power BI セマンティック モデルにライブ接続できます。 レポート ビューの右下隅には、Power BI セマンティック モデルにライブ接続済みであることが表示されます。 DAX クエリ ビューを使用すると、ライブ接続時に DAX クエリを記述できます。

モデル メジャー

発行された Power BI セマンティック モデルにライブ接続されているときは、モデル メジャーを表示または編集できません。 クイック クエリ オプションは、評価のみに制限されています。

レポート メジャー

発行された Power BI セマンティック モデルにライブ接続されているとき、レポート メジャーは作成できます。 レポート メジャーは、レポート ビューとモデル ビューの新しいメジャー アクションを使用して作成できますが、名前が示すように、現在のレポートでのみ使用できます。 作成されたら、DAX クエリ ビューのクイック クエリには、参照を使用して定義し評価するオプションが表示されます。 DAX クエリはセマンティック モデルで実行されます。したがって、レポート メジャーを実行するには、必ず DEFINE MEASURE ブロックで DAX クエリ スコープ メジャーに変換する必要があります。それがモデル自体には存在しないためです。

[変更してモデルを更新] ボタンとモデルを更新するための CodeLens オプションは、レポート メジャーでは使用できません。

Web での DAX クエリ ビュー

発行されたセマンティック モデルから DAX クエリを記述するには、Web で DAX クエリ ビューを使用します。 Web の DAX クエリ ビューのエクスペリエンスは、Power BI Desktop と同じですが、例外がいくつかあります。

  • ユーザーが Power BI サービスでデータ モデルを編集できる (プレビュー)。DAX クエリを記述するには、Power BI ワークスペース設定を有効にする必要があります。 詳細については、Power BI サービスでのデータ モデルの編集に関するページを参照してください。
  • DAX クエリは、閉じると破棄される。 Power BI Desktop の DAX クエリはモデルに保存され、セマンティック モデルでは、DAX クエリが既にモデルに保存されている可能性があります。 現在、Web の DAX クエリ ビューには、セマンティック モデルに存在する可能性がある以前保存された DAX クエリは表示されません。また、Web で作成されたクエリは、ブラウザーを閉じた後は保持されません。
  • DAX クエリを記述するには、セマンティック モデルに対する書き込みアクセス許可が必要。 ワークスペース ビューアーが DAX クエリを記述するには、セマンティック モデルにライブ接続して Power BI Desktop を使用する必要があります。

考慮事項と制限事項

留意すべき考慮事項を次に示します。

  • DAX クエリ エディターの内容が 500 行以上になると、入力時に顕著なラグが発生します。
  • メジャーの電球クイック アクションは、クエリ タブに DEFINE ステートメントがない場合にのみ表示されます。
  • コマンド パレットには、まだ機能しないコマンドがいくつか表示されています。
  • 結果グリッドでは、通貨、千単位区切りの整数など、指定した形式で列とメジャーを表示することはまだできません。
  • Power BI サービスから "このファイルをダウンロード" しても、発行されたセマンティック モデルに保存された DAX クエリは含まれません。
  • ワークスペース "から" の "初期" Git 統合の設定には、発行されたセマンティック モデルに保存された DAX クエリは含まれません。 詳細については、Fabric の Git 統合に関する記事を参照してください。

そして、以下に示す制限事項に注意する必要があります。

  • クエリあたりの最大データ サイズは 15 MB。 15 MB が超過されると、現在行は完了しますが、それ以降の行は書き込まれません。
  • クエリあたりの値の最大個数は 1,000,000 個。 20 列のクエリを実行すると、最大で 50,000 行 (1,000,000 を 20 で割った数) を取得することができます。
  • [このテーブルまたはモデル内のすべてのメジャーを定義] は、500 を超えるメジャーがある場合は利用できません。

Web での DAX クエリを実行するには、追加の制限があります。

  • クエリあたり最大 99,999 行が返されます。
  • セマンティック モデルの書き込みアクセス許可。 ビルド アクセス許可を持つビューアーが、Power BI Desktop を使用してライブ接続し、DAX クエリ ビューを使用して DAX クエリを実行できます。
  • 既定以外のセマンティック モデルでのみ使用できます。 Power BI Desktop を使用して、既定のセマンティック モデルにライブ接続し、DAX クエリ ビューを使用して DAX クエリを実行できます。
  • ユーザーが Power BI サービスでデータ モデルを編集できる (プレビュー)。DAX クエリを記述するには、Power BI ワークスペース設定を有効にする必要があります。 詳細については、Power BI サービスでのデータ モデルの編集に関するページを参照してください