狠狠撸

狠狠撸Share a Scribd company logo
2018.12.22 Power BI 勉強会@東京 #11
初心者さんの
DAX?メジャー
「モヤモヤ」が晴れるまで
Power BI 勉強会@東京 #11
2018.12.22 小室阳子
2018.12.22 Power BI 勉強会@東京 #11 2
自己紹介
小室 阳子(こむろ ようこ)
トヨタコネクティッド株式会社
?管理会計レポーティング→PowerBI
?働き方改革(脱Excel帳票?紙文化)→Sharepoint+PowerApps+Flow
最近になって、Office365がすごく便利に進化していることに気づき、新しい機能をおためし中???
2018.12.22 Power BI 勉強会@東京 #11 3
Power BIでのレポート作成の流れ
ソース
あちこち
いろいろ
Power
Query
取得と変換 モデリング
リレーション
設定
列やテーブ
ルの補完
式
式
メジャー
の定義 レポート
ビジュアル
の配置
2018.12.22 Power BI 勉強会@東京 #11 4
Power BIでのレポート作成の流れ
ソース
あちこち
いろいろ
Power
Query
取得と変換 モデリング
リレーション
設定
列やテーブ
ルの補完
式
式
メジャー
の定義 レポート
ビジュアル
の配置
DAX
DAX
2018.12.22 Power BI 勉強会@東京 #11 5
本日のお話
Power BIでのレポート作成に必須の「メジャー」、
どう作ったらいいんだろう?
何もかも分からなさすぎて、リファレンスを読んでも書いてあることが理解できない、そん
な状態から、おおよそのセオリーが理解できて、分からないことを自分で調べて解決でき
るようになるまでに気づいたことをお話したいと思います。
「メジャー」を理解すると、レポート作成がぐっと楽になると思うので、そのポイントと思う点お話します。
2018.12.22 Power BI 勉強会@東京 #11 6
よくあるモヤモヤ
? 計算列とメジャーの違いがわからない
? クイックメジャーをつかったら何となくできたけど、しくみがわからない
? 自分でメジャーを書こうとしたけれど、エラーが出て書けない
? メジャーをつくってみたけど、レポート画面においてみたら挙動不審
2018.12.22 Power BI 勉強会@東京 #11 7
解決ポイント
1.メジャーが「集計式」であることを理解する
2.メジャーと「フィルタ」の関係を理解する
3.「リレーションシップ」の挙動を理解する
+空白(BLANK)を理解する
2018.12.22 Power BI 勉強会@東京 #11
1.メジャーが「集計値式」
であることを理解する
2018.12.22 Power BI 勉強会@東京 #11 9
メジャーとは
データモデル
式
式
メジャー
データが存在し、ストレージされる 式の定義があるだけ
ビジュアル
表示されるときに、
メジャーの式にしたがって
値が計算される
2018.12.22 Power BI 勉強会@東京 #11 10
RPGゲームに例えると
データモデル メジャー ビジュアル
戦士
魔法使い
癒し手
大剣
鎧
杖
薬
…
攻撃力
=関数(体力,スキル,レベル…)
宝箱空ける成否
=関数(対象宝箱難易度,幸運度,乱数…)
戦闘場面
攻撃のターン
宝箱を開ける
イベント
2018.12.22 Power BI 勉強会@東京 #11 11
料理に例えると
データモデル ビジュアル
じゃがいも
タマネギ
にんじん
鶏肉
カレールー
ホワイトソース
塩
胡椒
…
カレーのレシピ
ホワイトシチューのレシピ
カレー
福神漬けぞえ
ホワイトシチュー
とニンジンサラダ
ニンジンサラダのレシピ
メジャー
2018.12.22 Power BI 勉強会@東京 #11 12
メジャー
メジャー
メジャー
例
予定個数SUM = SUM('予定'[個数])
実績個数SUM = SUM('実績'[個数])
個数予実差 = [実績個数SUM]-[予定個数SUM]
予定テーブル個数行
実績テーブル個数行
メジャー メジャー
列の参照
‘テーブル名’[列名]
メジャーの参照
[メジャー名]
‘予定’
‘実績’
2018.12.22 Power BI 勉強会@東京 #11 13
メジャーはテーブルを移動できる
2018.12.22 Power BI 勉強会@東京 #11 14
まとめ
① メジャーとは「集計式」
ビジュアルで表示されるときに計算される
② メジャーはテーブルに紐づかない(外にある)
2018.12.22 Power BI 勉強会@東京 #11
2.メジャーと「フィルタ」
の関係を理解する
2018.12.22 Power BI 勉強会@東京 #11 16
こんな風に思ってませんか?
ビジュアル
合計「900」が、マス目で
分割されて表示されている
2018.12.22 Power BI 勉強会@東京 #11 17
なぜって…
Excelで、「合計値」は「マス目の合計」であることに慣れている
2018.12.22 Power BI 勉強会@東京 #11 18
こんな風に思ってませんか?
ビジュアル
合計「900」が、マス目で
分割されて表示されている
2018.12.22 Power BI 勉強会@東京 #11 19
こんな風に思ってませんか?
ビジュアル
合計「900」が、マス目で
分割されて表示されている
Power BIでは違います!
2018.12.22 Power BI 勉強会@東京 #11 20
Power BIでは「総計」から出発する
‘販売予定‘ テーブル SUM
販売予定個数SUM
= SUM('販売予定'[個数])
メジャー
何を?
‘販売予定個数’ テーブルの
[個数]列
合計する
2018.12.22 Power BI 勉強会@東京 #11 21
[基本]ビジュアルのマス目ごとのフィルタ条件で計算
全行を出発点に、
商品=商品A&地域=名古屋
でフィルタを掛けて残った行を計算
商品Aでフィルタ
掛けた値を表示
する仕様
名古屋でフィルタ
掛けた値を表示する仕様
SUM‘販売予定‘ テーブル
SUM‘販売予定‘ テーブル
2018.12.22 Power BI 勉強会@東京 #11 22
フィルタを調整して総計を出す
メジャー
何を?
[販売予定個数SUM]
というメジャー
販売予定個数TOTAL
= CALCULATE([販売予定個数SUM],ALL('販売予定'))
フィルタを修正して
計算する
フィルタの修正内容は?
‘販売予定’テーブルを
すべての行採用
SUM‘販売予定‘ テーブル
SUM‘販売予定‘ テーブル
2018.12.22 Power BI 勉強会@東京 #11 23
総計を利用して割合%を出す
メジャー
販売予定個数占有率%
= [販売予定個数SUM]/[販売予定個数TOTAL]
販売予定個数占有率%
販売予定個数SUM
販売予定個数TOTAL
2018.12.22 Power BI 勉強会@東京 #11 24
さらにフィルターを掛けてカテゴリ合計を出す
メジャー
販売予定個数地域別 =
CALCULATE (
[販売予定個数SUM],
FILTER (
ALL ( '販売予定' ),
'販売予定'[地域]
= SELECTEDVALUE ( '販売予定'[地域] )
)
)
‘販売予定’テーブルのすべての行を採用した状態を元に
ビジュアルで選ばれている地域の値に等しい行に絞る
計算対象
フィルタを修正して計算する
フィルタの修正内容
※ALLのかわりにALLSELECTEDを使う場合もありますが、
ここでは分かりやすくするため、ALLに統一しています
ビジュアル各行で選ばれている地域
に等しい行の合計
SUM‘販売予定‘ テーブル
2018.12.22 Power BI 勉強会@東京 #11 25
日付フィルタを調整して累計や過去数値を出す
月初日~
ビジュアル各行で選ばれている日付
までの合計
ビジュアル各行で選ばれている日付
の1日前の値
月度累計SUM
SUM 昨日
2018.12.22 Power BI 勉強会@東京 #11 26
まとめ
① メジャーは「総計」を元に、ビジュアルの各マスごとの
条件でフィルタされて計算される
② DAX式でフィルタの掛かり方を修正することができる。
これにより、様々な統計値を出すことができる
統計値を出すには「フィルタ」の使いこなしがとっても大事
まずは考えをしっかり持っておくと、適する関数を探しやすい
2018.12.22 Power BI 勉強会@東京 #11
3.「リレーションシップ」
の挙動を理解する
2018.12.22 Power BI 勉強会@東京 #11 28
いきなりですが、ダメな例
予定と実績を結んでみた
※日付列?担当者列などが隠れていると思って見てください
‘予定’
‘実績’
2018.12.22 Power BI 勉強会@東京 #11 29
いきなりですが、ダメな例
多対多であるという注意書き
2018.12.22 Power BI 勉強会@東京 #11 30
こんな困った症状が出ます
Dが出ない? Cが出ない?
合計がおかしい? 合計がおかしい?
2018.12.22 Power BI 勉強会@東京 #11 31
原因
実績の商品列を
使っている
予定の商品列を
使っている
2018.12.22 Power BI 勉強会@東京 #11 32
原因
実績の商品列を
使っている
予定の商品列を
使っている
‘予定’
ABCしかない
‘実績’ SUM ‘予定’ ‘実績’
予定にある値
しか出ない
実績にある値
しか出ない
SUM
ABDしかない
2018.12.22 Power BI 勉強会@東京 #11 33
原因
合計はフィルタが掛からないので
各全行を計算
実績の商品列を
使っている
予定の商品列を
使っている
予定にある値
しか出ない
実績にある値
しか出ない
‘実績’ SUM ‘予定’ SUM
2018.12.22 Power BI 勉強会@東京 #11 34
「マスタ」を用意する
‘商品マスタ’
★一意の値(重複しない)
★全ての値を含む
リレーションシップ
を掛ける(1対多)
トランザクション
発生した出来事の記録
ディメンション
テーブル
属性が格納される
ファクトテーブル
数値(メジャー)が
格納される
2018.12.22 Power BI 勉強会@東京 #11 35
ダメな例2
マスタを用意してリレーション掛けたのに、
直らないどころかもっと変になっちゃった?
2018.12.22 Power BI 勉強会@東京 #11 36
そりゃそうですよ…
予定の商品列を
使っている
リレーション
が無い!
フィルタ
されない
2018.12.22 Power BI 勉強会@東京 #11 37
解決策 「親」の項目を
使う!
フィルタは
「親」から「子」
へ伝播する
正しくなった!
2018.12.22 Power BI 勉強会@東京 #11 38
「子」の項目は非表示に
非表示
非表示
これを使う
メジャーも整理する
とこうなる
2018.12.22 Power BI 勉強会@東京 #11 39
まとめ
① ディメンジョン(分類)は、一意になる「マスタ」を用意する
② リレーションシップはマスタからトランザクション(出来事の
記録)へ、「1対多」でタコ足状につなぐ
③ フィルターは、リレーションシップの
「親(1)→子(多)」の一方向に伝播する
④ レポートビジュアルには、「親」の項目を使う
2018.12.22 Power BI 勉強会@東京 #11 40
リファレンス
?DAXガイド https://dax.guide/
?Qiita
? メジャー とはなんだろうと考える
https://qiita.com/PowerBIxyz/items/94e171e05ef7beb83897
? AVERAGEX 関数 (DAX) で 平均を求める
https://qiita.com/PowerBIxyz/items/b1fa63e3502e5acaa1f6
? メジャーの特性 や 見出しの階層に合わせて集計する には
https://qiita.com/PowerBIxyz/items/17d5d531ea074a43867b
? 予算実績を集計比較する データモデル パターン
https://qiita.com/PowerBIxyz/items/bb9b6dcc44721d77aad8
?BIシステム構築実践入門(青い本)
https://www.amazon.co.jp/dp/4798109312
2018.12.22 Power BI 勉強会@東京 #11
おわり
Good Luck!

More Related Content

Power BI 初心者さんのDAX?メジャー「モヤモヤ」晴れるまで

  • 1. 2018.12.22 Power BI 勉強会@東京 #11 初心者さんの DAX?メジャー 「モヤモヤ」が晴れるまで Power BI 勉強会@東京 #11 2018.12.22 小室阳子
  • 2. 2018.12.22 Power BI 勉強会@東京 #11 2 自己紹介 小室 阳子(こむろ ようこ) トヨタコネクティッド株式会社 ?管理会計レポーティング→PowerBI ?働き方改革(脱Excel帳票?紙文化)→Sharepoint+PowerApps+Flow 最近になって、Office365がすごく便利に進化していることに気づき、新しい機能をおためし中???
  • 3. 2018.12.22 Power BI 勉強会@東京 #11 3 Power BIでのレポート作成の流れ ソース あちこち いろいろ Power Query 取得と変換 モデリング リレーション 設定 列やテーブ ルの補完 式 式 メジャー の定義 レポート ビジュアル の配置
  • 4. 2018.12.22 Power BI 勉強会@東京 #11 4 Power BIでのレポート作成の流れ ソース あちこち いろいろ Power Query 取得と変換 モデリング リレーション 設定 列やテーブ ルの補完 式 式 メジャー の定義 レポート ビジュアル の配置 DAX DAX
  • 5. 2018.12.22 Power BI 勉強会@東京 #11 5 本日のお話 Power BIでのレポート作成に必須の「メジャー」、 どう作ったらいいんだろう? 何もかも分からなさすぎて、リファレンスを読んでも書いてあることが理解できない、そん な状態から、おおよそのセオリーが理解できて、分からないことを自分で調べて解決でき るようになるまでに気づいたことをお話したいと思います。 「メジャー」を理解すると、レポート作成がぐっと楽になると思うので、そのポイントと思う点お話します。
  • 6. 2018.12.22 Power BI 勉強会@東京 #11 6 よくあるモヤモヤ ? 計算列とメジャーの違いがわからない ? クイックメジャーをつかったら何となくできたけど、しくみがわからない ? 自分でメジャーを書こうとしたけれど、エラーが出て書けない ? メジャーをつくってみたけど、レポート画面においてみたら挙動不審
  • 7. 2018.12.22 Power BI 勉強会@東京 #11 7 解決ポイント 1.メジャーが「集計式」であることを理解する 2.メジャーと「フィルタ」の関係を理解する 3.「リレーションシップ」の挙動を理解する +空白(BLANK)を理解する
  • 8. 2018.12.22 Power BI 勉強会@東京 #11 1.メジャーが「集計値式」 であることを理解する
  • 9. 2018.12.22 Power BI 勉強会@東京 #11 9 メジャーとは データモデル 式 式 メジャー データが存在し、ストレージされる 式の定義があるだけ ビジュアル 表示されるときに、 メジャーの式にしたがって 値が計算される
  • 10. 2018.12.22 Power BI 勉強会@東京 #11 10 RPGゲームに例えると データモデル メジャー ビジュアル 戦士 魔法使い 癒し手 大剣 鎧 杖 薬 … 攻撃力 =関数(体力,スキル,レベル…) 宝箱空ける成否 =関数(対象宝箱難易度,幸運度,乱数…) 戦闘場面 攻撃のターン 宝箱を開ける イベント
  • 11. 2018.12.22 Power BI 勉強会@東京 #11 11 料理に例えると データモデル ビジュアル じゃがいも タマネギ にんじん 鶏肉 カレールー ホワイトソース 塩 胡椒 … カレーのレシピ ホワイトシチューのレシピ カレー 福神漬けぞえ ホワイトシチュー とニンジンサラダ ニンジンサラダのレシピ メジャー
  • 12. 2018.12.22 Power BI 勉強会@東京 #11 12 メジャー メジャー メジャー 例 予定個数SUM = SUM('予定'[個数]) 実績個数SUM = SUM('実績'[個数]) 個数予実差 = [実績個数SUM]-[予定個数SUM] 予定テーブル個数行 実績テーブル個数行 メジャー メジャー 列の参照 ‘テーブル名’[列名] メジャーの参照 [メジャー名] ‘予定’ ‘実績’
  • 13. 2018.12.22 Power BI 勉強会@東京 #11 13 メジャーはテーブルを移動できる
  • 14. 2018.12.22 Power BI 勉強会@東京 #11 14 まとめ ① メジャーとは「集計式」 ビジュアルで表示されるときに計算される ② メジャーはテーブルに紐づかない(外にある)
  • 15. 2018.12.22 Power BI 勉強会@東京 #11 2.メジャーと「フィルタ」 の関係を理解する
  • 16. 2018.12.22 Power BI 勉強会@東京 #11 16 こんな風に思ってませんか? ビジュアル 合計「900」が、マス目で 分割されて表示されている
  • 17. 2018.12.22 Power BI 勉強会@東京 #11 17 なぜって… Excelで、「合計値」は「マス目の合計」であることに慣れている
  • 18. 2018.12.22 Power BI 勉強会@東京 #11 18 こんな風に思ってませんか? ビジュアル 合計「900」が、マス目で 分割されて表示されている
  • 19. 2018.12.22 Power BI 勉強会@東京 #11 19 こんな風に思ってませんか? ビジュアル 合計「900」が、マス目で 分割されて表示されている Power BIでは違います!
  • 20. 2018.12.22 Power BI 勉強会@東京 #11 20 Power BIでは「総計」から出発する ‘販売予定‘ テーブル SUM 販売予定個数SUM = SUM('販売予定'[個数]) メジャー 何を? ‘販売予定個数’ テーブルの [個数]列 合計する
  • 21. 2018.12.22 Power BI 勉強会@東京 #11 21 [基本]ビジュアルのマス目ごとのフィルタ条件で計算 全行を出発点に、 商品=商品A&地域=名古屋 でフィルタを掛けて残った行を計算 商品Aでフィルタ 掛けた値を表示 する仕様 名古屋でフィルタ 掛けた値を表示する仕様 SUM‘販売予定‘ テーブル SUM‘販売予定‘ テーブル
  • 22. 2018.12.22 Power BI 勉強会@東京 #11 22 フィルタを調整して総計を出す メジャー 何を? [販売予定個数SUM] というメジャー 販売予定個数TOTAL = CALCULATE([販売予定個数SUM],ALL('販売予定')) フィルタを修正して 計算する フィルタの修正内容は? ‘販売予定’テーブルを すべての行採用 SUM‘販売予定‘ テーブル SUM‘販売予定‘ テーブル
  • 23. 2018.12.22 Power BI 勉強会@東京 #11 23 総計を利用して割合%を出す メジャー 販売予定個数占有率% = [販売予定個数SUM]/[販売予定個数TOTAL] 販売予定個数占有率% 販売予定個数SUM 販売予定個数TOTAL
  • 24. 2018.12.22 Power BI 勉強会@東京 #11 24 さらにフィルターを掛けてカテゴリ合計を出す メジャー 販売予定個数地域別 = CALCULATE ( [販売予定個数SUM], FILTER ( ALL ( '販売予定' ), '販売予定'[地域] = SELECTEDVALUE ( '販売予定'[地域] ) ) ) ‘販売予定’テーブルのすべての行を採用した状態を元に ビジュアルで選ばれている地域の値に等しい行に絞る 計算対象 フィルタを修正して計算する フィルタの修正内容 ※ALLのかわりにALLSELECTEDを使う場合もありますが、 ここでは分かりやすくするため、ALLに統一しています ビジュアル各行で選ばれている地域 に等しい行の合計 SUM‘販売予定‘ テーブル
  • 25. 2018.12.22 Power BI 勉強会@東京 #11 25 日付フィルタを調整して累計や過去数値を出す 月初日~ ビジュアル各行で選ばれている日付 までの合計 ビジュアル各行で選ばれている日付 の1日前の値 月度累計SUM SUM 昨日
  • 26. 2018.12.22 Power BI 勉強会@東京 #11 26 まとめ ① メジャーは「総計」を元に、ビジュアルの各マスごとの 条件でフィルタされて計算される ② DAX式でフィルタの掛かり方を修正することができる。 これにより、様々な統計値を出すことができる 統計値を出すには「フィルタ」の使いこなしがとっても大事 まずは考えをしっかり持っておくと、適する関数を探しやすい
  • 27. 2018.12.22 Power BI 勉強会@東京 #11 3.「リレーションシップ」 の挙動を理解する
  • 28. 2018.12.22 Power BI 勉強会@東京 #11 28 いきなりですが、ダメな例 予定と実績を結んでみた ※日付列?担当者列などが隠れていると思って見てください ‘予定’ ‘実績’
  • 29. 2018.12.22 Power BI 勉強会@東京 #11 29 いきなりですが、ダメな例 多対多であるという注意書き
  • 30. 2018.12.22 Power BI 勉強会@東京 #11 30 こんな困った症状が出ます Dが出ない? Cが出ない? 合計がおかしい? 合計がおかしい?
  • 31. 2018.12.22 Power BI 勉強会@東京 #11 31 原因 実績の商品列を 使っている 予定の商品列を 使っている
  • 32. 2018.12.22 Power BI 勉強会@東京 #11 32 原因 実績の商品列を 使っている 予定の商品列を 使っている ‘予定’ ABCしかない ‘実績’ SUM ‘予定’ ‘実績’ 予定にある値 しか出ない 実績にある値 しか出ない SUM ABDしかない
  • 33. 2018.12.22 Power BI 勉強会@東京 #11 33 原因 合計はフィルタが掛からないので 各全行を計算 実績の商品列を 使っている 予定の商品列を 使っている 予定にある値 しか出ない 実績にある値 しか出ない ‘実績’ SUM ‘予定’ SUM
  • 34. 2018.12.22 Power BI 勉強会@東京 #11 34 「マスタ」を用意する ‘商品マスタ’ ★一意の値(重複しない) ★全ての値を含む リレーションシップ を掛ける(1対多) トランザクション 発生した出来事の記録 ディメンション テーブル 属性が格納される ファクトテーブル 数値(メジャー)が 格納される
  • 35. 2018.12.22 Power BI 勉強会@東京 #11 35 ダメな例2 マスタを用意してリレーション掛けたのに、 直らないどころかもっと変になっちゃった?
  • 36. 2018.12.22 Power BI 勉強会@東京 #11 36 そりゃそうですよ… 予定の商品列を 使っている リレーション が無い! フィルタ されない
  • 37. 2018.12.22 Power BI 勉強会@東京 #11 37 解決策 「親」の項目を 使う! フィルタは 「親」から「子」 へ伝播する 正しくなった!
  • 38. 2018.12.22 Power BI 勉強会@東京 #11 38 「子」の項目は非表示に 非表示 非表示 これを使う メジャーも整理する とこうなる
  • 39. 2018.12.22 Power BI 勉強会@東京 #11 39 まとめ ① ディメンジョン(分類)は、一意になる「マスタ」を用意する ② リレーションシップはマスタからトランザクション(出来事の 記録)へ、「1対多」でタコ足状につなぐ ③ フィルターは、リレーションシップの 「親(1)→子(多)」の一方向に伝播する ④ レポートビジュアルには、「親」の項目を使う
  • 40. 2018.12.22 Power BI 勉強会@東京 #11 40 リファレンス ?DAXガイド https://dax.guide/ ?Qiita ? メジャー とはなんだろうと考える https://qiita.com/PowerBIxyz/items/94e171e05ef7beb83897 ? AVERAGEX 関数 (DAX) で 平均を求める https://qiita.com/PowerBIxyz/items/b1fa63e3502e5acaa1f6 ? メジャーの特性 や 見出しの階層に合わせて集計する には https://qiita.com/PowerBIxyz/items/17d5d531ea074a43867b ? 予算実績を集計比較する データモデル パターン https://qiita.com/PowerBIxyz/items/bb9b6dcc44721d77aad8 ?BIシステム構築実践入門(青い本) https://www.amazon.co.jp/dp/4798109312
  • 41. 2018.12.22 Power BI 勉強会@東京 #11 おわり Good Luck!

Editor's Notes

  1. PowerQuery(インポート) →テーブル(DAXで列やテーブルを補足、リレーション) →メジャー(DAXで計算を定義する) →ビジュアルに配置 インポート コネクタPowerQuery データモデル リレーションシップ/型/列やテーブルの追加 メジャーの設定 メジャー レポート ビジュアル
  2. PowerQuery(インポート) →テーブル(DAXで列やテーブルを補足、リレーション) →メジャー(DAXで計算を定義する) →ビジュアルに配置 インポート コネクタPowerQuery データモデル リレーションシップ/型/列やテーブルの追加 メジャーの設定 メジャー レポート ビジュアル
  3. テーブル