Categories: Power BI

Power BI道場 Dax Studioの使い方

Dax StudioはDax関数のテストに便利なツールです。
オープンソースで無料でインストール可能です。

  • Dax関数をよく使う人
  • 思った通りの値にならなくてテストに時間がかかっている人

におすすめのツールです。

Power BI以外にも使えますがこの記事ではPower BIに絞ってます。
実際に私が使っている手順のコマンドを紹介します。

私が使っていて感じるメリットは
・動作が早い
・結果のデータをすぐに見れる
ということです。

Dax Studioのダウンロードと簡単な使い方

こちらのDax Studioのホームページからダウンロードしてください。

Dax関数を使いたいPower BIのファイルを開きます。
外部ツールの中にDAX Studioのアイコンが追加されていますので、それを選択します。

次にPower BIのテーブルのデータをそのまま出してみます。

  1. コマンド画面に”Evaluate”と入力します。
    この場所がDax関数のコマンドを入力する場所です。

    ”Evaluate”はその後ろのDaxコマンドの結果を表示するという意味です。
  2. テーブル名をダブルクリック
    左の一覧からテーブル名や項目名をダブルクリックするとコマンド画面にその値を表示されます。

    EVALUATE
    テーブル名


    という形にコマンドラインがなったと思います。
  3. Format Queryを押す
    Format Queryはコマンドを見やすいように整形する機能です
    ここでは何もおきないと思いますが、手順として行ったほうがいいです。
  4. Runを実行
    実行すると選択したテーブルのデータが表示されます

Dax関数の実行結果のデータをすぐに確認できるのがメリットです。
ショートカットキーを使うとさらに手早く実行できます。
 Format Query : F6
 Run : F5

Power BIでのテスト方法

次にDax関数のテストでDax Studioをどのように使うかを紹介します。

Dax QueryのDEFINEとEVALUATE

Dax Studioに書く内容はDax Queryといってプログラムです。
プログラムといっても覚えるのは2つだけです。

  • DEFINE
    変数の定義文を書きます。
    複雑になる場合に利用します。
  • EVALUATE
    式の結果を出力します。

EVALUATEの使い方

Dax Studioで出す内容はテーブルです。

例えば売上テーブルの金額の集計をテストするためにこのように書きます。

EVALUATE
  SUM ( '売上'[金額] )

この結果はエラーとなります。
テーブルの結果を出しているのではなくて項目の値を出しているからです。

項目の値のチェックをする時に次の3パターンがありますので、目的にあったのを利用してください。

  • 全体集計
  • 集計なし
  • 特定項目で集計
全体集計
EVALUATE
  ROW ('売上'
  , "合計", SUM('売上'[金額]))

ROW関数を使うことで、1行の結果を出すことができます。
パラメータ
 第1:テーブル名
 第2-1:追加の項目名
 第2-2:Dax関数

*第2パラメータは複数設定可

集計なし
EVALUATE
  ADDCOLUMNS (
     '売上',
     "合計", MAX ( '売上'[金額] )
  )

ADDCOLUMNSで既存のテーブルに項目を追加して結果を確認します。
パラメータ
 第1:テーブル名
 第2-1:追加の項目名
 第2-2:Dax関数

*第2パラメータは複数設定可

特定項目で集計
EVALUATE
  SUMMARIZECOLUMNS(
    '売上'[商品],
    '売上',
    "合計", MAX('貸借対照表明細1'[金額])
  )

SUMMARIZECOLUMNSを使うことで特定項目での集計結果を返します。

パラメータ
 第1:集計グループ項目
 第2:テーブル名
 第3-1:追加の項目名
 第3-2:Dax関数

*第1,3パラメータは複数設定可

DEFINEの使い方

DEFINEを使うのは

  • 抽出条件を変えてテストしたい
  • 式が複雑になりすぎてわかりにくい

というときです。
それぞれについて説明します。

抽出条件を変えてテストしたい

商品単位の合計金額の式についてテストしているとします。

EVALUATE
  SUMMARIZECOLUMNS(
    '売上'[商品],
    '売上',
    "合計", MAX('貸借対照表明細1'[金額])
  )

「画面上から売上日の条件を指定された時にどのようにデータが変わるか?」
を確認したい時にDEFINEを使うとわかりやすくなります。

緑色の部分が今回変更した箇所です。
2月を抽出した時の結果を確認することができます。

DEFINE
  VAR FILTER_TABLE =
    FILTER ('売上', '売上'[売上日] = "2月" )

EVALUATE
  SUMMARIZECOLUMNS(
    '売上'[商品],
    FILTER_TABLE,
    "合計", MAX('貸借対照表明細1'[金額])
  )

今回はMAX関数を使用しているので便利さがわかりにくいですが、
 「ALL」「ALLSELECTED」「ALLEXCEPT」
といった抽出条件に関係する関数を使っている場合に便利です。

式が複雑になりすぎてわかりにくい

カテゴリ別の売上比率を出したいとします。
出すためには
 ・全体の合計金額
 ・カテゴリ別の合計金額
が必要です。
縦のレコードが違うものどうしの計算は複雑になります。
この時DEFINEは便利です。

緑がDEFINEを使って全体の合計金額を出した式です。
EVALUATEで各売上金額を合計金額で割っているので売上比率を出すことができます。

DEFINE
    VAR Total = SUM('売上'[金額])
EVALUATE
SUMMARIZECOLUMNS (
    '売上'[商品],
    '売上',
   "比率", SUMX('売上','売上'[金額] / Total)
 )

Dax Studioで作成した式をPower BIに反映

Dax関数のテストと修正が終わったらPower BIに反映します。
DEFINEとEVALUATEはPower BIでは使えないので変換が必要です。

EVALUATEのみの場合

Power BIで「新しいメジャーの作成」から、式の部分のみ貼り付けます。
*今までのサンプルで赤の部分です

合計金額 = SUM('売上'[金額])

という形になります。

DEFINEを使っている場合

式を次のように変換します。

・DEFINEを削除
・EVALUATEをRETURNに変更
・EVALUATEを式(赤色)の部分のみとする

変換後Power BIの「新しいメジャーの作成」をして、式を貼り付けます。
サンプルはこのようになります

DEFINE  売上比率 = 
    VAR Total = SUM('売上'[金額])
EVALUATE RETURN
SUMMARIZECOLUMNS (
    '売上'[商品],
    '売上',
   "比率", SUMX('売上','売上'[金額] / Total)
 )

結果だけ書くとこのようになります。

売上比率 = 
    VAR Total = SUM('売上'[金額])
RETURN
  SUMX('売上','売上'[金額] / Total)

まとめ

Dax Studioを使うとメジャーのテストスピードが早くなります。
ただし追加で式を書く必要があります。
そのためある程度Dax関数を書ける人でないと逆に難しくなってしまいます。

この記事では汎用的に使えるサンプルを紹介しました。
開発やテストするまジャーによって使うテンプレートをを固定すれば、作りたいメジャーのロジックだけに集中できます。

紹介したパターンは次となります。

EVALUATE

  • 全体集計
  • 集計なし
  • 特定項目で集計

DEFINE

  • 画面上の抽出条件を設定した時のテスト
  • 複雑な式を作成する時の方法

複雑なメジャーを作成する場合はご利用ください。

Katahira

Recent Posts

トランザクションテーブルの特徴を知ろう

この記事で解決できる疑問 トラ…

3年 ago

マスタテーブルの設計で注意すべき3点を紹介

この記事で解決できる疑問 マス…

3年 ago

Power BI道場 コンテンツ紹介

ここでは筆者が提供しているPo…

3年 ago

Power BI道場 ヒストグラムの作成。知っていれば簡単!!

この記事で解決できる疑問 ヒス…

3年 ago
Close Bitnami banner
Bitnami