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 サービスまたは Fabric ポータル ワークスペースで、コンテキスト メニューから [ DAX クエリの記述 ] を選択します。
Power BI サービスまたは Fabric ポータルのセマンティック モデルの詳細ページで、ページの上部から [ DAX クエリの記述 ] を選択します。
DAX クエリ ビュー レイアウト
Power BI Desktop の DAX クエリ ビューを詳しく見てみましょう。
DAX クエリ ビューには、以下の要素があります。
リボン
DAX クエリ ビュー リボンには、DAX クエリを記述するときに使用される一般的なアクションがあります。
リボン内の要素を詳しく見てみましょう。
クエリの形式設定
[ クエリの書式設定 ] リボン ボタンを選択するか、Shift + Alt + F キーを押して現在のクエリの書式を設定します。 クエリはタブでインデントされます。 DAX 関数は大文字に変更され、行が追加されます。 DAX クエリの書式設定を行うことはベスト プラクティスと見なされており、DAX クエリの読みやすさを向上させます。 また、書式設定では、クエリのセクションを折りたたんだり展開したりできるようにインデントが行われます。
コメントとコメント解除
[ コメント ] リボン ボタンを選択して、カーソルがある行の先頭または選択したすべての行の先頭に二重円記号 (//) を追加します。 このアクションによって行がコメントアウトされ、DAX クエリが実行されると、それらの行は無視されます。
[コメント 解除 ] リボン ボタンを選択して、カーソルがある行の先頭にある // 、または選択したすべての行を削除します。 これは複数行コメント表記が追加されている行では機能しません。
CTRL + / キーを使用して、コメントとコメント解除を切り替えることもできます。
検索と置換
[ 検索 ] リボン ボタンを選択するか、CTRL + F キーを押して DAX クエリ エディターでテキストを検索します。 検索には、大文字と小文字の区別、単語全体のマッチ、正規表現の使用、現在のクエリに一致するものすべての巡回のオプションが含まれます。 検索 ボックスの 左側にあるシェブロンを選択して、「置換」と入力することもできます。
リボンの [ 置換 ] ボタンを選択するか、CTRL + H キーを押して DAX クエリ エディターでテキストを検索および置換します。 置換には、大文字小文字を保持したり、一度に 1 つずつまたは一括で置換したりするオプションがあります。
コマンド パレット
コマンド パレット リボン ボタンを選択するか、Ctrl + Alt + P キーを押してコマンド パレット ボックスを開きます。 その他の DAX クエリ エディター アクションを検索し、関連するキーボード ショートカットを確認できます。
操作バー
DAX クエリ ビューのコマンド バーには、DAX クエリ ビューを使用する際の最も重要なアクションが含まれています。
実行とキャンセル
[ 実行 ] ボタンは、DAX クエリまたはクエリの選択された行を実行します。 実行後のクエリの状態は、下部のステータス バーに表示されます。
クエリが実行されている場合、ボタンは [キャンセル] ボタンになり、実行中のクエリを停止するために使用できます。
変更を反映してモデルを更新
変更を反映してモデルを更新 ボタンは、DAXクエリでスコープされたメジャーに基づくDAX数式を使用し、モデルメジャーを追加または上書きします。 DAX クエリ スコープメジャーは、 DEFINE MEASURE ブロック内の DAX 数式です。 また、各モデル メジャーの上に表示される CodeLens テキストを使用して、そのメジャーを個別に追加または上書きすることもできます。
DAX クエリ エディター
DAX クエリ ビューには、クエリを記述して編集できるクエリ エディターが含まれています。 これは、ただの大きめの DAX 数式バーではありません。 もっと強力で、VS Code で利用できる DAX エディターと多くの類似点を持ちます。
DAX クエリ エディターには、以下の要素があります。
提案と Intellisense
クエリを入力して編集中に提案と Intellisense からの支援を受けることができます。
Enter キーまたは Tab キーを使用して強調表示された IntelliSense を追加するか、SHIFT + ENTER キーまたは ALT + ENTER キーを使用して IntelliSense オプションを追加せずに別の行に移動します。 ESC キーを選択すると、すべてのオーバーレイが閉じます。
メジャー式を表示する方法
DAX クエリにメジャーが含まれている場合は、そのメジャーにカーソルを合わせると、式、名前、説明が表示されます。
選択してメジャーの電球クイック アクションを表示します
DEFINE ステートメントのないクエリ内の EVALUATE ステートメント内のメジャーを選択すると、クイック アクション電球が表示されます。 [ 定義] または [ 参照を含む定義] を選択して、このメジャーの数式を含む DEFINE ステートメントを作成します。これは、参照メジャー DAX 数式の有無に関係なく行います。
CodeLens を使用してモデルの測定基準を更新する
DEFINE MEASURE を使用すると、最初に DAX クエリ スコープメジャーとしてメジャーを作成できるようにすることで、メジャーを作成するときに役立ちます。 1 つのウィンドウで複数のメジャーを編集してから、クエリを実行して、すべてのメジャーまたは列による特定のグループを持つ一部のメジャーだけの結果を表示できます。 [レポート] ビューでテーブル ビジュアルを作成したり、メジャー式を切り替えたりする必要はありません。 CodeLens では、モデルにメジャーが既に存在する場合にプロンプトを表示することで、この手順をさらに 1 ステップ進めます。 これらは、メジャーを追加したり、モデル内のメジャーを上書きしたりするためのクイック リンクを提供します。
CodeLens は、DEFINE MEASURE ブロックの上に表示されるクリック可能なテキストです。 モデルにまだ存在しない DAX クエリ スコープメジャーの場合、[ モデルの更新: Add new measure CodeLens]\(新しいメジャーの追加\) CodeLens が表示され、クリックされたときにモデル メジャーが追加されます。 モデルですでに存在する DAX クエリのスコープを持つメジャーがあり、DAX スコープメジャーの DAX 数式が異なる場合には、モデルの更新: メジャーを上書きする CodeLens が表示され、これをクリックすると、モデルメジャーがこの DAX 数式に変更されます。
または、コマンド バーの [変更によるモデルの更新] ボタンをクリックして、複数のメジャーを一度に追加または上書きすることもできます。
指標更新ワークフロー
電球クイック アクションと CodeLens は、以下のように完全なワークフローの中で一緒に使用できます。
- メジャーのコンテキスト メニューで [クイック クエリ]、[評価] の順に選択して、新しい [クエリ] タブでクエリを自動作成します。
- クエリ内のメジャーを選択し [定義] または [参照有りで定義] を実行して、DEFINE ステートメントを追加します。
- メジャーに対して DAX 式を更新し、DAX クエリを実行して結果を確認します。
- 変化内容が期待どおりであるようなら、CodeLens の [モデルの更新: メジャーの上書き] を使用してメジャーをモデルに保存し直します。
ワークフローを理解するためのより視覚的な方法を次に示します。
結果表
クエリを実行すると、結果が 結果 グリッドに表示されます。
クエリ エディターに複数の EVALUATE ステートメントがある場合は、複数の結果が返される可能性があります。 [結果] ドロップダウンを使用して、それらを切り替えることができます。 [ コピー ] ボタンをクリックすると、グリッド全体がタブ区切りテーブルとしてヘッダー付きでコピーされます。 右上隅の矢印または結果グリッドとクエリ エディターの間の境界線をドラッグして、グリッドのサイズを変更します。
クエリでエラーが発生した場合は、結果グリッドにエラーが表示されます。
コピー ボタンによって、エラーがクリップボードに転送されます。 エラーの先頭は、クエリ内のエラーの場所を示しています。 上の図でのエラーは次のとおりです。
"Query (4, 23) 'Sales 2' の値を特定できません。列が存在しないか、この列の現在の行がありません。"
"Query (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 クエリ ビューのタブは閉じると破棄されます。
データ ペイン
[データ] ペインには、クエリの記述に役立つモデル内の項目が表示されます。 これらのアイテムの大部分の編集パスは、クエリ ビューでブロックされています。
簡単な質問
[データ] ペインのコンテキスト メニューには、クイック クエリが含まれています。 クイック クエリを使用して、新しいクエリ タブでテーブル、列、そして尺度のクエリを作成します。 クイック クエリは、一般的なタスクの生産性を向上させるために設計されており、さらに変更することが容易なように構築されています。 すべてのクイック クエリは新しいクエリ タブに作成され、自動的に実行されます。
任意の場所
モデル内のすべてのメジャーを定義すると、クエリに 表示されるすべてのメジャー数式を含むクエリが作成されます。 すべての計算式を簡単に検索できます。
新しいメジャーを定義 すると、メジャー定義ブロックを含むクエリが作成されます。 これを使用して、DAX クエリ ビューで独自のメジャーを作成し、準備ができたらモデルに追加します。
表
上位 100 行を表示 すると、SELECTCOLUMNS() を使用してクエリが作成され、テーブルの上位 100 行が表示されます。 行のコメントアウトによる簡単な変更が可能なように、各行で列が一覧表示されます。 並べ替え順序を指定するための ORDER BY も含まれています。
列統計を表示 すると、テーブル内のすべての列の統計情報を示すクエリが作成されます。 MIN、MAX、AVERAGE、COUNT などの列を集計する方法については、多くの式を参照してください。
このテーブル内のすべてのメジャーを定義 すると、クエリに表示されるこのテーブルのメジャー数式を使用してクエリが作成されます。
列
データ プレビューを表示 すると、DISTINCT() を使用してクエリが作成され、列の値が表示されます。
列統計を表示 すると、この特定の列の統計情報を示すクエリが作成されます。 MIN、MAX、AVERAGE、COUNT などの列を集計する方法については、多くの式を参照してください。 返されるクエリは、列のデータ型によって異なり、数値、テキスト、および日付列のさまざまな統計情報を表示します。
対策
[評価] では、メジャーの結果を表示するクエリが作成されます。 SUMMARIZECOLUMNS() は、国、製品などの特定のグループ別にメジャーを表示するために、列による何らかのグループを追加するために使用できます。
定義と評価 では、メジャーの結果を表示するクエリが作成され、その後変更できる DEFINE ステートメントにメジャーの数式が表示されます。
参照を定義して評価 すると、メジャーの結果を表示するクエリが作成され、変更できる DEFINE ステートメント内のメジャーの数式だけでなく、メジャー数式で参照されるその他のメジャーも表示されます。 措置の全体的な文脈の中で任意の部分を編集してください。
パフォーマンス アナライザーからのビジュアル 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 を使用する必要があります。
クエリのリンク共有
Web の DAX クエリ ビューへの URL リンクがサポートされなくなった後、?query= を使用してパラメーターとして追加された DAX クエリ。
考慮事項と制限事項
留意すべき考慮事項を次に示します。
- DAX クエリ エディターの内容が 500 行以上になると、入力時に顕著なラグが発生します。
- メジャーの電球クイック アクションは、クエリ タブに DEFINE ステートメントがない場合にのみ表示されます。
- コマンド パレットには、まだ機能しないコマンドがいくつか表示されます。
- 結果グリッドには、通貨、千の位の整数など、特定の形式を使用する列とメジャーは表示されません。
- ワークスペーからの初回 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 サービスのデータ モデルの編集に関するページを参照してください