Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@3book_777

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

More than 1 year has passed since last update.

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

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

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?