5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

##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)

どーん。
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さんのプレゼンを聞いてうっすら何かが繋がった気がして、再チャレンジ。

こちらの記事で使用したデータを使って、
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

5
4
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?