見出し画像

Power BI- 列の追加とメジャーの作成の違い(DAX関数とM言語)

Power BI desktop(ちなみに、Power BIを調べ始めたころ、Power BI desktopとPower BI Serviceの違いもよくわからない状態から始めたので、ここに書くときはきちんとdesktopならdesktopとちゃんとつけたいと思う)を始めたばっかりの頃、Excel関数を使えそうで使えない場合もあったりして、もやもやしていた。

そのうえ、M言語というものまであるらしいと分かって、詳細エディターでM言語が自動で記述されていく様子を見て、「これできるようになるのかな」と不安になった。

1. 「列の追加」はどこでするべき?

「列の追加」には、次の二種類がある(と覚えている)。


1. Query Editor上で「例からの列」「カスタム列」「カスタム関数の呼び出し」「条件列」「インデックス列」を使って列を追加する
(※Query Editorは「データの変換」から移動する画面。インプットしたデータを整形する場所)


2. 「レポート」や「データ」画面から「列ツール」>「新しい列」から列を追加する


そして、M言語とDAX関数をどこで使うかというと、(もういっこのメジャーも含めて)以下の通り。


M言語: Query Editorで「列を追加」するときに使用する

DAX関数:「レポート」や「データ」画面で「列を追加」するときに使用する
     「レポート」や「データ」画面で「メジャーを作成」するときに使用する


ここで、M言語は「列の追加」のみならず、Power BI desktopのQuery Editorを包括的に操作可能な言語としても使用されている。「詳細エディター」に記録されるQuery操作の履歴も、このM言語で自動的に記述されていく。

なので、こう覚えておくと、覚えやすいかもしれない。(Excel好きな人にとっては。てか、「どこで使うものか」だけ覚えておけばいい)


M言語:ExcelでいうところのVBA

DAX関数:Excelでいうところの関数(SUMとかINDEX,MATCHとか)


なぜこんなことをわざわざ書いているかというと、
Power BIを始めたころ、
「Query Editorで列を追加するのと、Query Editorを閉じた後に出てくる「データ」画面で列を追加することの違い(どういう目的で使い分けたらいいのか)」がわからなかったから。

使っていると、その違いって別にゴリゴリ明確にする必要もないのかなと思い始めた。(その理由は、Power BIをいじくりまくっていると分かってきます。リクエストがあれば、どこかのタイミングで書きます)

ただ、基本的には、「どこで列を作るか」について、僕は次のように整理している。

Query Editor → 分析に必要なデータセットを整形したり、追加したりして用意する場所

「データ」画面 → Query Editorから引っ張ってきたデータをもとに、メジャーを使って分析したり、複数のテーブル間の関係性を明示するために、列を追加する場所


2. M言語とDAX関数は似て非なるもの。リファレンスに戻る癖をつけよう

Power BIには「自習書」や、最近ではやっと日本で初めてのPower BI専用の書籍が「できるシリーズ」から出たが、それまでは海外の本しか解説書が存在しなかった。

Googleで「Power BI + ○○」と調べると、Qiitaのサイトに最近よくHitするようになっていて、このサイトもとても分かりやすく説明されている(ありがたい)。

ただ、教科書的にいつもM言語とDAX関数のリファレンスを置いておきたい人は、やっぱり次をブックマークしておくことがおすすめ。


M言語:マイクロソフトのリファレンス


DAX関数:マイクロソフトのリファレンス


まぁでも、、まだ日本にはExcelほどにPower BI関連の記事が充実していないので、疑問をWeb検索していけば最後はマイクロソフトの上記サイトに帰っていく。

そして苦悶した挙句に、イメージする最適な関数が組めず、「しばらく寝かせてからまた考える」状態に入る。


また、備忘的に記載します。でわ。

3. (追記) 「列」はクエリエディタで追加するべきか、データ画面で追加するべきか

技術的にどっちで追加するべきかというよりも、レポートを作成する際に、どういう分析を加えたいかを意識して決める必要がある。

重要なことは、クエリ上で列の削除やフィルター操作によって非表示にしたデータは、その後のデータ画面では処理対象ではなくなるということ。

つまり、例えば次の計算結果Cをレポートに表示したいとする。

A+B=C
(ただし、A=D+E)

考え方の基礎となる条件を列挙すると、

① Power BIに取り込んだデータには、BとDとEしかない
② DとEはレポートの作成に必要ない  ←ここ重要
③ Aは「A+B」というメジャー(または列)を作成するためにデータ画面で必要

この条件をPower BIのどの段階(クエリエディター or データ画面)で処理に反映させると余計な表示や処理を減らせるかを考えると、

① → A=D+Eはクエリエディタでもデータ画面でも、どちらで列として取り込んでもよい

ただし、

② → DとEはレポート作成上使用しないのだから、クエリエディタの段階でデータ量を絞り込んでおきたい。
従って、A を表示する列は、クエリエディタ上で作成してから、クエリエディタ上でDとEを削除してデータ画面に持ち込むデータ量を減らすべき

以上から、

③ → クエリエディタで作成されたAが表示された列を使用して、A+B を計算するメジャーをデータ画面で作成するべき。

多分これが、クエリエディタで列を追加するべきか、データ画面で列を追加するべきかの基本的な発想なんだと思う。

いいなと思ったら応援しよう!