初めに
こんにちは。tdiソリューション本部 AI&データマネジメント推進部の川上です。業務でPower BI Desktop を使用したので、データ加工で使用するPower QueryとDAXの違いから使い方までを中心にまとめてみました。対象読者はPower BI初心者の方です。Power BI初心者以外の方もぜひ最後まで読んでみてください。
Power QueryとDAXの違い
Power BIにおけるデータ加工にはPower QueryとDAXの2種類あります。Power Queryは「M言語」を、DAXは「DAX関数」を利用します。大きな違いは以下です。
- Power Queryはinputデータを※1データモデルに保存する前に利用します。
- DAXは加工データをデータモデルに保存した後に利用します。
データの加工フロー
※1データモデル:分析用に複数の※2データセットに関係性を持たせたものです。
※2データセット:プログラムで処理されるデータの集合体のことです。
M言語とは
M言語はPower Queryエディター上で使用する言語です。データモデルにinputデータを保存する前にフィルターや置換などのデータの前処理を行います。以下の式がM言語の書き方になります。大文字と小文字を区別するため、入力する際は気を付けてください。
M言語によるデータ加工の全処理は詳細エディターで確認できます。M言語の構造はletとinの2ブロックで作成します。let内に「変数=加工処理の式」を定義し、in内に「加工ステップの最終出力」を表示します。
Power Queryの使い方
Power Queryエディターでのフィルターや置換などの簡単な処理は、M言語を意識せずにUIベースでデータの前処理を実施できます。UIベースで加工した処理は自動的にM言語に変換されます。また、UIベース以外に詳細エディターで直接処理を記載する方法があります。今回はUIベースの方法で手順をまとめました。
例)「カスタム列」で「製品番号」_「製品」という形式の列を追加する場合の手順
手順①Power BI Desktopを立ち上げ、「ホーム」タブ内に「データの変換」をクリックし、Power Queryエディターを開いて下さい。
手順②左上部の「列の追加」→「カスタム列」をクリックして下さい。
手順③「新しい列名」に適切な列名を入力し、「カスタム列の式」に式を入力して下さい。
例)製品番号_製品 = [製品番号] & “_” & [製品]
手順④「構文エラーが検出されませんでした。」と表示されていることを確認し、「OK」をクリックして下さい。
DAXとは
DAXはData Analysis Expressionsの略で、リレーションデータを操作するための数式言語です。データモデルにロード済みのデータに関数や演算子などを利用し、「売上、利益などの項目」や「合計、平均などの集計項目」を作成できます。関数にはExcelの関数と同じものもあります。
DAXの構造は「新しい列名/メジャー名 = 関数(‘テーブル名'[列名])」です。計算式を記載する際ですが、大文字と小文字を区別しません。計算式の追加方法は「新しいテーブル」、「新しい列」、「新しいメジャー」の3種類です。
新しいテーブル
「新しいテーブル」ではロード済みデータを利用して新しいテーブルを作成します。用途はスライサー用のデータとして利用することが多いです。
例)売上実績テーブルの注文日を利用し、カレンダーテーブルを作成する場合の手順
手順①「テーブルツール」タブ内の「新しいテーブル」をクリックしてください。
手順②式を記述して下さい。
例)カレンダー = CALENDAR(FIRSTDATE(‘売上事績’[注文日]),LASTDATE(‘売上実績’[注文日]))
新しい列
「新しい列」ではテーブルに新しい計算列を追加します。Power Queryエディターでも使用できます。
例)カレンダーテーブルのDateを利用し、年の列を作成する場合の手順
手順①フィールドから列を追加したいテーブルを選択し、「モデリング」タブの「新しい列」をクリックして下さい。
手順②計算式を記述して下さい。
例)年=YEAR([Date])
新しいメジャー
「新しいメジャー」とは新しい計算式を作成し、保持します。軸の切り口によって値が変化するような合計や平均などの集計時に利用します。集計されるタイミングは表や棒グラフなどのビジュアルが表示されるときに計算式が実行されます。
例)売上実績テーブルに売上というメジャーを作成する場合の手順
手順①フィールドからメジャーを追加したいテーブルを選択し、「テーブル」タブの「新しいメジャー」をクリックして下さい。
手順②計算式を入力して下さい。
例)売上 = [金額] * [個数]
Power QueryとDAXの使い分け方
Power Query と DAX の使い分けはレポート作成時にどのような分析を加えたいのか、データ量などで決定します。例えば、以下のデータを使い、3つの条件処理を実施する場合で使い分け方をまとめました。
上記の条件をPower Queryで処理した場合、以下のように計算済みC,E列のみが保持されます。メリットは不要なA,B列分のデータ量を削減できます。デメリットは以下の2点です。
- 計算結果としてC,E列を保持しているため、その分のデータ量が増えます。
- 分析時の切り口が固定されてしまうため、柔軟な計算ができません。
次に上記の条件をDAXで処理した場合、以下のようにA,B,D列と計算式としてC,E列が保持されます。メリットは柔軟な計算ができることですが、デメリットとして不要なA,B列が残ります。
そこでPower QueryとDAXそれぞれの好いとこ取りをした方法が以下です。
手順① Power QueryでA,B列を使い、計算結果としてC列を作成した後、不要なA,B列を削除します。
手順②DAXでC,D列を使い、計算式としてE列を保持させます。
上記の方法で加工を実施することで、不要なデータ量を削減でき、柔軟な計算ができます。
最後に
Power QueryとDAXの違いから使い方そして、その使い分けまでをまとめました。実際にPower BIでデータ加工・分析する際にこれらの情報を知っていると、データの持ち方の検討へのヒント、加工処理の方法が明確になると思うので、参考程度に読んでいただけると幸いです。最後まで読んでくださり、ありがとうございました。
執筆者プロフィール
- BIツールを活用し、データ加工からデータの可視化までを担当。