Posted at

DAX Boot Camp#0に参加してちょっぴりだけ前に進めたような気がしてきた件

参加後、熱い気持ちが冷めないうちに書きます!


DAXは書けるようになったものの・・・

Power BI歴2年ちょっとのわたしが、やっとDAXとはなんぞやということがちょっぴり分かってきて、書けるようになったよってなことを先日Qiita記事に書いたわけなのですが。

https://qiita.com/3book_777/items/38aab8158943949a4758

書けるようになったよって言っても、まーだいたいはCALICULATE関数でSUMしたりCOUNTしたり。

しばらくはそれでキャッキャウフフしてたものの、なんか次に進める感がない。

https://qiita.com/3book_777/items/31547321bf37569f39e2

この記事で敗北したあたりから、なんかやさぐれておりました。

方法はどうやろうが、目的の数字がでればいいわけだし。とかなんとか。


【連戦敗北】去年実績がなくて今年実績がある顧客数をカウントしたい!

2018Rev=CALCULATE(SUM(実績[売上]),Calender[Year]=2018)

2019Rev=CALCULATE(SUM(実績[売上]),Calender[Year]=2019)

↑上記メジャーで2018年と2019年の実績を出します。このメジャーを使って、2018年に実績がなくて、2019年に実績がある施設数をカウントさせようとして、↓みたいなメジャーを書きました。

顧客数=CALCULATE(DISTINCTCOUNT(顧客マスタ[顧客ID]),[2018Rev]<=0,[2019Rev]>0)

どーん。

Qiita1.PNG

怒られる。そしてなんで怒られてるかわからない・・・・

結局、メジャーでは実現できず、裏(Power Query)でピボットして、条件列を追加してIF文書いて・・・・完全に敗北しました・・・・。


20191005 DAX Boot Camp #0

何が分かっていて、何が分からないのかも分からず、前に進める気がしないモヤモヤの中、去る10月5日のDAX Boot Camp #0に参加しました。

まずは神からのDax Studioのご紹介があり、早速インストールしました。

そして、次のsuiさんのプレゼンを聞いたわたし。

Qiita2.jpg

「EXCELは計算式、DAXは列単位で考える」!!!!!!

これまでのわたしのメジャーの理解は、「メジャーは計算式ではなく、集計式」

なので、(恥ずかしながら・・・)ビジュアルに出力した時に初めて値が決まると思っていました。

例えば、先述の

2018Rev=CALCULATE(SUM(実績[売上]),Calender[Year]=2018)

このメジャーを、顧客名と一緒にテーブルに入れてやれば、顧客ごとの2018年の実績が返ってくるし、営業担当と一緒にテーブルに入れてやれば、営業担当ごとの2018年の実績が返ってくる。

だがしかし!!!

メジャーの中でどの粒度で集計するかを指定してあげるんです!!


【もう一度】去年実績がなくて今年実績がある顧客数をカウントしたい!

suiさんのプレゼンを聞いてうっすら何かが繋がった気がして、再チャレンジ。

https://qiita.com/3book_777/items/31547321bf37569f39e2

こちらの記事で使用したデータを使って、

2018年に20回以上指名があって、2019年10回以下しか指名のないメンバーをカウントしたいと思います。

2018年と2019年の指名数を集計するメジャーを書いて、テーブルにメンバー名、2018指名数、2019指名数を配置するとこうなります。

Qiita3.PNG

2018年に20回以上指名があって、2019年10回以下しか指名のないメンバーは

アッピー・コーディー・フーディー・ブレイズの4人ですね。

これをBootCamp以前のわたしならこう書きました。

Qiita15.PNG

怒られますね。

でも、BootCamp後のわたしには、何を怒られているか何となく分かります。

なので、何ベースでカウントすればいいのかを書いてあげます。

成績不振メンバー =

CALCULATE (
DISTINCTCOUNT ( 'メンバー'[名前] ),
FILTER ( VALUES ( 'メンバー'[名前] ), '指名履歴'[2018客数] >= 20 && '指名履歴'[2019客数] < 10 )
)

「FILTER ( VALUES ( 'メンバー'[名前] )」の部分です。

そして、こんなことはちゃんと公式ページにも書いてありました。


フィルター式には 2 つの部分があります。最初の部分は、フィルターが適用されるテーブルを指定します。 2 番目の部分は、フィルター条件として使う式を定義します。


そして結果。

Qiita6.PNG

できました!!!!


前に進む前の停滞=高く飛ぶための踏み込み

恐らく、モヤモヤ期間がなければBootCampに参加しても得るものはなかったかもしれません。

思う存分モヤモヤして、自分の中の課題を見つめて、モヤモヤを膨らまられるだけ膨らませた後に、こんな瞬間がくるのかなと思いました。

Qiita2.jpg

suiさんのプレゼンの資料はこちら。

「DAX Boot Camp-DAXに関する知識の共有」

https://www.slideshare.net/EikiSui/dax-boot-camp-0-179333102