テクテク日記

テクテク=テクノロジー&一歩ずつ(テクテク)

DAX Query View (DQV)のいろいろ①

2023年11月のPower BI Desktopには、DAX Query View(以下、DQVと略します)が新たに追加されました。DQVは、DAX数式バーの進化版とも言える高機能なDAXクエリエディタであり、DAXを習得する上で非常に役立つ可能性を秘めています。今回はDQVについて簡単に紹介したいと思います。

ちなみに、DAXの神様であるMarcoさんが早速紹介動画を出してくれたので、こちらも観ておくことをお勧めします。

youtu.be

DAX Query Viewの設定

Power BIに初めて登場する全ての新機能は必ずプレビュー扱いとなります。そこでまずDQVを有効にするため、Power BI Desktopのオプションと設定を開きます。なお、2023年11月版のPower BI Desktopがインストールされている必要あります。

設定の開き方は多くあるため、ここでは全ての紹介を割愛しますが、例として空のpbixを開き、以下のように「オプションと設定」をクリックします。

一旦Power BI Desktopを閉じ、再起動すれば下図のような画面になります。

DAX Query Viewの機能を試す

「百聞は一見に如かず」ということで、概念を説明するよりも実際に操作してみることが効果的です。今回は、訪日外国人のサンプルレポートを利用して実践してみます。

DQVをクリックすると、以下の画面になります。

① リボン: DQV用のリボン

② DQV (DAX Query View): 4番目のタブ

DAXクエリエディター: DAXクエリを記述する場所

④ 結果グリッド: DAXクエリの結果テーブル

⑤ クエリタブ: 複数のDAXクエリの実行状況を確認可能なタブ

⑥ データペイン: DAXクエリに使用するためのデータモデルのテーブルや列

初めてDQVを選択すると、以下の数式がディフォルトで表示されるようになります。

EVALUATE
    TOPN(100, 'Data')

この式はDataというテーブルのトップ100行を抽出してくるDAXクエリであり、左上の「実行」ボタンをクリックして実行(F5でも可)すると、以下の結果を返します。

TOPNは、結果をテーブルとして返すDAX関数であり、特定の条件に基づいて上位のデータを取得する際に使用されます。一般的に、上位の販売額などのメジャーを計算する場合に利用されます。SQLを少し知っている人にとっては、データベースのテーブルから即座に結果を表示するために「SELECT TOP (100) * FROM Data」というSQLクエリを使用することと同等であることに気づくと思います。

これだけでは面白くないので、現在このデータモデルに定義されている全てのDAXメジャーを取得します。

①から③の順にクリックすると、モデル内の全てのDAXメジャーが抽出され、結果グリッドに表示されます。DAXメジャーが多い場合、右側にあるミニマップを使用して簡単にスクロールして確認することができます。

ここで下のほうにスクロールさせていくと、以下のDAXクエリが記述されています。

//全てのメジャーを結果グリッドへ抽出
EVALUATE
    SUMMARIZECOLUMNS(
        "# VisitingCustomer", 'Data'[# VisitingCustomer],
        "Check", 'Data'[Check],
        "title_selected_period", 'Data'[title_selected_period],
        "Pct of selected Country_visitor", 'Data'[Pct of selected Country_visitor],
        "Korea", 'Data'[Korea],
        "flag_複数年度", 'DimCalendar'[flag_複数年度],
        "flag_複数年度_チェック", 'DimCalendar'[flag_複数年度_チェック]
    )

DAXクエリの結果を表示するためには、EVALUATEステートメントが必要ですが、実際にはデータが横長の形で全て抽出されるため、メジャーが多い場合には非常に見にくくなることがあります。

モデル全体または特定のテーブル内のDAXメジャーを抽出する理由は様々で、バックアップ目的や既存のメジャーを把握するための調査などが一般的ですが、各メジャーが具体的にどのような結果を返すのかを詳細に見るためのものではないことが殆どです。とはいえ、Power Queryのように縦横を入れ替える(Transpose)というニーズもあるでしょうから、以下のように変更します。

この状態で「実行」or F5をクリックすると、以下のように横長が縦長に調整された状態で結果が表示されます。

なお、列名[Value1]と[Value2]を変更したい場合は、列の選択&列名の変更が可能なSELECTCOLUMNSを使用します。

※行の複数選択について参考にしたのはこちらの記事となります。
nonbiri3.com

まとめ

DQVはさまざまな使い方が可能であり、それを紹介するために複数回に分けて取り上げていきたいと考えています。初回は少々マニアックな内容だったかもしれませんが、なかなか面白かったのではないでしょうか。次回は、DQVのメリット、留意点などについても詳しく考察してみたいと考えています。