##なんでもかんでもPower Queryでこねくり回し
Power BIを触り始めて早2年が経とうとしております。(2019年6月現在)
最初はとにかくメジャーが分からなくて、なんでもかんでもPower Query(自分的名称・裏)でこねくり回していたのですが、DAXせねば!と一念発起して、最近、夢の中でもメジャーを書けるようにになりました。(実話。出席者をカウントするメジャーを書いてました。何の出席者かは不明。)
ちなみに、メジャーを理解するのにとても助かったのが、名古屋の姐さんこと小室さんのこちらのプレゼンでした。
もしモヤモヤしてる方がいたら是非参考にしてみてください。
「Power BI 初心者さんのDAX・メジャー「モヤモヤ」晴れるまで」
https://www.slideshare.net/YokoKomuro/power-bi-dax
##メジャー開眼前
データソースの違う2種類のデータを1つのマトリクスで表現したい時。
出荷実績と納入実績が別ソース。
こんな感じにしたいのですが、
カレンダーテーブルに出荷実績と納入実績をリレーションしてそれぞれの実績を値に入れると、こうなっちゃうんです。
出荷実績と納入実績を別々のマトリクスにして、うまいこと重ねて表示・・・は力技すぎる・・・。
ので、メジャー開眼前のわたしが出した結論は、**裏でクエリを追加して1つのクエリにまとちゃう!**というものでした。
##メジャー開眼後
つい今週、同じデータソースで同じようなレポートを作った時、
カレンダーテーブルに出荷データと納入データをリレーション
↓
マトリクスで年を行、MMDDを列、出荷実績と納入実績を値に入れる
↓
2番目の図のようなカタチになる。
と同じ轍を進んだのですが、ここで自然と(←ココ重要)
「前年当年の出荷と納入実績をメジャーで出せばいいんじゃん」
と思いつきました。
そして、年をベタ打ちではなく、年が変わったら当年と前年が自動で変わるように、年フラグ列を作成。
出荷当年=CALCULATE(SUM('出荷データ'[実績]),'カレンダー'[年フラグ]=0)
出荷前年=CALCULATE(SUM('出荷データ'[実績]),'カレンダー'[年フラグ]=-1)
納入当年=CALCULATE(SUM('納入データ'[実績]),'カレンダー'[年フラグ]=0)
納入前年=CALCULATE(SUM('納入データ'[実績]),'カレンダー'[年フラグ]=-1)
上記4つのメジャーを書いて、マトリクスの値にぶち込む。
じゃーん!
##本当に当たり前のことだけど千里の道も一歩から
わが社で「こういうレポートが欲しい!」というリクエストって、Excelをイメージされているものが多くて(つまり表!BIなのに)、自由度が高すぎるExcel表をPowerBIで表現しようとすると、今まではPowerQueryでグループ化したりマージしたりピボットしたりしてこねこねとこねくり回していたのですが、すっと「こうすれば裏でやらなくてもできるな」って思いつけるようになった、自分の成長が嬉しかったというお話でした。