参加後、熱い気持ちが冷めないうちに書きます!
##DAXは書けるようになったものの・・・
Power BI歴2年ちょっとのわたしが、やっとDAXとはなんぞやということがちょっぴり分かってきて、書けるようになったよってなことを先日Qiita記事に書いたわけなのですが。
書けるようになったよって言っても、まーだいたいはCALICULATE関数でSUMしたりCOUNTしたり。
しばらくはそれでキャッキャウフフしてたものの、なんか次に進める感がない。
この記事で敗北したあたりから、なんかやさぐれておりました。
方法はどうやろうが、目的の数字がでればいいわけだし。とかなんとか。
##【連戦敗北】去年実績がなくて今年実績がある顧客数をカウントしたい!
2018Rev=CALCULATE(SUM(実績[売上]),Calender[Year]=2018)
2019Rev=CALCULATE(SUM(実績[売上]),Calender[Year]=2019)
↑上記メジャーで2018年と2019年の実績を出します。このメジャーを使って、2018年に実績がなくて、2019年に実績がある施設数をカウントさせようとして、↓みたいなメジャーを書きました。
顧客数=CALCULATE(DISTINCTCOUNT(顧客マスタ[顧客ID]),[2018Rev]<=0,[2019Rev]>0)
怒られる。そしてなんで怒られてるかわからない・・・・
結局、メジャーでは実現できず、裏(Power Query)でピボットして、条件列を追加してIF文書いて・・・・完全に敗北しました・・・・。
##20191005 DAX Boot Camp #0
何が分かっていて、何が分からないのかも分からず、前に進める気がしないモヤモヤの中、去る10月5日のDAX Boot Camp #0に参加しました。
まずは神からのDax Studioのご紹介があり、早速インストールしました。
そして、次のsuiさんのプレゼンを聞いたわたし。
「EXCELは計算式、DAXは列単位で考える」!!!!!!
これまでのわたしのメジャーの理解は、「メジャーは計算式ではなく、集計式」。
なので、(恥ずかしながら・・・)ビジュアルに出力した時に初めて値が決まると思っていました。
例えば、先述の
2018Rev=CALCULATE(SUM(実績[売上]),Calender[Year]=2018)
このメジャーを、顧客名と一緒にテーブルに入れてやれば、顧客ごとの2018年の実績が返ってくるし、営業担当と一緒にテーブルに入れてやれば、営業担当ごとの2018年の実績が返ってくる。
だがしかし!!!
メジャーの中でどの粒度で集計するかを指定してあげるんです!!
##【もう一度】去年実績がなくて今年実績がある顧客数をカウントしたい!
suiさんのプレゼンを聞いてうっすら何かが繋がった気がして、再チャレンジ。
こちらの記事で使用したデータを使って、
2018年に20回以上指名があって、2019年10回以下しか指名のないメンバーをカウントしたいと思います。
2018年と2019年の指名数を集計するメジャーを書いて、テーブルにメンバー名、2018指名数、2019指名数を配置するとこうなります。
2018年に20回以上指名があって、2019年10回以下しか指名のないメンバーは
アッピー・コーディー・フーディー・ブレイズの4人ですね。
怒られますね。
でも、BootCamp後のわたしには、何を怒られているか何となく分かります。
なので、何ベースでカウントすればいいのかを書いてあげます。
成績不振メンバー =
CALCULATE (
DISTINCTCOUNT ( 'メンバー'[名前] ),
FILTER ( VALUES ( 'メンバー'[名前] ), '指名履歴'[2018客数] >= 20 && '指名履歴'[2019客数] < 10 )
)
**「FILTER ( VALUES ( 'メンバー'[名前] )」**の部分です。
そして、こんなことはちゃんと公式ページにも書いてありました。
フィルター式には 2 つの部分があります。最初の部分は、フィルターが適用されるテーブルを指定します。 2 番目の部分は、フィルター条件として使う式を定義します。
できました!!!!
##前に進む前の停滞=高く飛ぶための踏み込み
恐らく、モヤモヤ期間がなければBootCampに参加しても得るものはなかったかもしれません。
思う存分モヤモヤして、自分の中の課題を見つめて、モヤモヤを膨らまられるだけ膨らませた後に、こんな瞬間がくるのかなと思いました。
suiさんのプレゼンの資料はこちら。
「DAX Boot Camp-DAXに関する知識の共有」
https://www.slideshare.net/EikiSui/dax-boot-camp-0-179333102