Slide 1

Slide 1 text

ディメンショナル モデリング入門 みんなのデータモデル講座 第2回 進化編 snowvillage.slack.com #みんなのシリーズ

Slide 2

Slide 2 text

アジェンダ ● 自己紹介 ● 概要 ● 実践 ● まとめ

Slide 3

Slide 3 text

自己紹介 ぺい @pei0804 近森淳平(チカモリ ジュンペイ) CARTA HOLDINGS (旧VOYAGE GROUP) Zucks システム局 エンジニア

Slide 4

Slide 4 text

techblog.cartaholdings.co.jp, The Zen of Zucks, 2022/06/10, https://techblog.cartaholdings.co.jp/entry/the-zen-of-zucks

Slide 5

Slide 5 text

講座のゴール ● 会話をモデルに、落とし込む勘所を掴む。

Slide 6

Slide 6 text

話さないこと ● データをどのように集めるかについては、言及しません。 ○ データがある程度、揃ってる前提で話をします。

Slide 7

Slide 7 text

アジェンダ ● 自己紹介 ● 概要 ● 実践 ● まとめ

Slide 8

Slide 8 text

ディメンショナルモデリングとは

Slide 9

Slide 9 text

世界には、2つの情報システムがある。

Slide 10

Slide 10 text

それが、業務システムと分析システム。

Slide 11

Slide 11 text

業務システム・分析システム ビジネスプロセスの実行支援する業務システム、 ビジネスプロセスを分析支援する分析システムがあります。 それぞれ根本的に異なる目的があるため、 異なる原則に基づき設計が進化してきました。

Slide 12

Slide 12 text

第3正規化とディメンショナルモデリング 業務システムの目的は、ビジネスプロセスで発生した 重要な事実や行動を記録する。一般的にはトランザクションシステムと呼ばれ ている。このようなシステムをリレーショナル・データベースで実装する時に、業 務システムに最適なスキーマ設計として、 第3正規化が広く活用されている。 一方で、分析システムは、実行されたビジネスプロセスの評価をする。 このビジネスプロセスの評価に、ディメンショナルモデリングが 非常に有効な手法である。

Slide 13

Slide 13 text

ビジネスプロセスとは

Slide 14

Slide 14 text

ビジネスプロセスとは ビジネスプロセスとは、組織が行う業務活動のこと。 ● 広告を表示する。 ● 注文を受ける。 ● 請求書を発行する。 ● 支払いを受ける。 ● 学生を登録する。 ● 医療処置の実行する。

Slide 15

Slide 15 text

ディメンショナルモデリングを使うことで、 業務活動が分析可能になります。

Slide 16

Slide 16 text

難しそうですが、 会話をモデリングするだけです。

Slide 17

Slide 17 text

アジェンダ ● 自己紹介 ● 概要 ● 実践 ● まとめ

Slide 18

Slide 18 text

アドテクのビジネスプロセスを モデリングしてみよう アドテクを題材にやっていきます。 簡単な例を使って、データをモデリングしていく工程を、 お見せできればと思います。 実際の現場のデータは、もっとカオスだとは思いますが、 本質的なところは大きく変わらないので、参考になると思います。

Slide 19

Slide 19 text

Four-Step Dimensional Design Process

Slide 20

Slide 20 text

www.kimballgroup.com/data-warehouse-business-intelligence-resources/ kimball-techniques/dimensional-modeling-techniques/four-4-step-design-process

Slide 21

Slide 21 text

Four-Step Dimensional Design Process 1. ビジネスプロセスの選択。(Select the business process) 2. 粒度を宣言する。(Declare the Grain) 3. ディメンションを特定する。(Identify the dimensions) 4. ファクトを特定する。(Identify the facts)

Slide 22

Slide 22 text

Four-Step Dimensional Design Process 1. ビジネスプロセスの選択。(Select the business process) 2. 粒度を宣言する。(Declare the Grain) 3. ディメンションを特定する。(Identify the dimensions) 4. ファクトを特定する。(Identify the facts)

Slide 23

Slide 23 text

1.ビジネスプロセスの選択

Slide 24

Slide 24 text

ビジネスプロセスの選択 データをモデリングする前に、ビジネスを理解することは重要です。 用意されたデータに目を通して、モデリングすることは簡単ですが、 最も良いのは、社内の色々な従業員と対話して、 人々が何をしたいのかを理解することです。 また、この工程は全体の中で、最も重要です。 ここで失敗すると、修復困難な欠陥が、連鎖的に発生することになります。 ビジネスプロセスの整理には、Business Process Modelling Notation (BPMN)やUnified Modelling Language (UML)が使えます。

Slide 25

Slide 25 text

どっから手をつければ・・・

Slide 26

Slide 26 text

秘伝のエクセル

Slide 27

Slide 27 text

需要は秘伝のエクセルに宿る これからデータ基盤を作る人に、おすすめの方法があります。 それは、ビジネスユーザーの手元にあるエクセルを貰うことです。 用意された環境だけでは、得られない本当にほしいデータまでの ラストワンマイルが、表現されていることがよくあります。 勿論どういった背景で、そのシートが作られているか聞きましょう。 その上で、同等のものが出せるモデリングをしましょう。 恐らく人々は、モデリングの力に感動するでしょう。

Slide 28

Slide 28 text

選択するビジネスプロセス 今回は、「先月の広告クリック数を、広告掲載メディア別で見たい。」を、 ビジネスユーザーが見たいという前提で進めます。 実際には、対話を通じて、何に何故、興味があるかを引き出しましょう。

Slide 29

Slide 29 text

Four-Step Dimensional Design Process 1. ビジネスプロセスの選択。(Select the business process) 2. 粒度を宣言する。(Declare the Grain) 3. ディメンションを特定する。(Identify the dimensions) 4. ファクトを特定する。(Identify the facts)

Slide 30

Slide 30 text

2.粒度を宣言する

Slide 31

Slide 31 text

粒度を宣言する 粒度の宣言とは、個々のファクトの行が、 何を表しているかを正確に指定します。 粒度とは、ファクトの測定値に関する詳細度を決めるものです。 もう少し具体的に書くと、 「ファクトテーブルの単一行をどのように表現するか」を決めます。

Slide 32

Slide 32 text

ファクトとは ビジネスプロセスに関連する量的な数値や指標を表します。 よくあるファクトの例。 ● 売上 ● 費用 ● 利益 ● 在庫量

Slide 33

Slide 33 text

粒度の宣言例 粒度は、業務システムなどで発生するビジネスプロセスが、 補足できる内容で決定されることがほとんどです。 例えば、以下のようなものが粒度の宣言例です。 ● 顧客の販売取引で、個々の商品のスキャンごとに1行。 ● 空港のゲートでスキャンされた個々の搭乗券1枚につき1行。

Slide 34

Slide 34 text

粒度の宣言の重要性 無視をしてよさそうな工程ですが、実は非常に重要です。 現場で働いていて、最も混乱が起きるポイントでもあります。 粒度の認識に齟齬がある場合に何が起きるか、 例えばファクトを横断した分析は非常に困難になります。 具体例を出すと、月次のデータと日次のデータを、 日次で横断して分析したいと言われても出来ませんよね? データの粒度が揃っていないと、すぐに破綻して、 このステップに戻ってくることになります。

Slide 35

Slide 35 text

粒度は最小粒度で宣言する 将来的に、どのような質問が来るかはわかりません。 そのため、粒度を宣言する時は、最小粒度を推奨します。 常に最小粒度にしておけば、出そうと思えば出せる状態になります。 例えば、時間別のデータがあるとします。このデータから、 日次、月次、年次のデータにすることは、可能ですが、 年次のデータを月次に戻すことはできませんといった具合に、 低い粒度から、高い粒度は、表現できても、逆は無理だからです。

Slide 36

Slide 36 text

【問題】広告へのクリックの最小粒度は?

Slide 37

Slide 37 text

広告へのクリックの最小粒度 「表示された広告に対するクリック1回につき、1行。」になります。 クリックは、これ以上細かい表現にすることは無理そうなので、 恐らくこれが最小粒度になるはずです。 実践では、すぐに最小粒度を特定できないかもしれませんが、 基本的には、これ以上細かく分割が出来ない状態になってれば、 それは最小粒度になっているはずです。

Slide 38

Slide 38 text

粒度を間違えてるデータあるある 粒度を間違えることある?と思う人も居るでしょう。 確かに、この工程を踏んでいれば、間違えることはないです。 粒度を意識してモデリングするのは、実は難しいです。 例えば、複数のことを扱っているテーブルなんだけど、 typeカラムで、うまく分岐させてるみたいなテーブル見たことありませんか? その手のテーブルは、基本的に粒度を間違えています。 あとは、何かの事実を取得する際に、必ずWhere句が必須なデータとかも、 粒度が怪しい可能性があります。意外と身近にあるので探してみてください。

Slide 39

Slide 39 text

タイプで分岐させるテーブルの例 SELECT id, amount FROM score WHERE score_type = 1

Slide 40

Slide 40 text

ログから改善する ログから改善する価値については、 過去に発表しているので、 興味ある方は、 こちらの資料を御覧ください。 https://speakerdeck.com/pei0804/modeling-over-shiny-tech

Slide 41

Slide 41 text

Four-Step Dimensional Design Process 1. ビジネスプロセスの選択。(Select the business process) 2. 粒度を宣言する。(Declare the Grain) 3. ディメンションを特定する。(Identify the dimensions) 4. ファクトを特定する。(Identify the facts)

Slide 42

Slide 42 text

3.ディメンションを特定する

Slide 43

Slide 43 text

ディメンションとは 事実(ファクト)に文脈を提供します。 これは一般的にビジネスの観点からの属性や特性を表します。 よくあるディメンションの例。 ● 時間(年、四半期、月、日) ● 地理(国、州、都市) ● 製品(カテゴリ、製品名) ● 顧客(年齢、性別、地域)

Slide 44

Slide 44 text

ディメンションの役割 ビジネスプロセスを評価する上で、ファクト(事実)に意味はないです。 ディメンション(文脈)がセットになって、ファクトは情報になります。 冒頭に出した広告クリックに関する質問例も、 広告クリックの数だけもらっても意味はなくて、 そこに、文脈を付け加えることで情報になります。

Slide 45

Slide 45 text

【問題】先月の広告クリック数を、 広告掲載メディア別で見たい。 のディメンション(文脈)は?

Slide 46

Slide 46 text

ディメンションを特定する 「先月の広告クリック数を、広告掲載メディア別で見たい。」の ディメンションは、先月を表現する日付とメディアの2つです。 作成するとしたら、以下のようなディメンションになります。 ● media_key = bar ● media_id = 1 ● media_name = メディア名 ● etc… メディア ディメンション ● date_key = hoge ● date_day = 2023-06-12 ● day_of_month = 06 ● etc… 日付ディメンション

Slide 47

Slide 47 text

Four-Step Dimensional Design Process 1. ビジネスプロセスの選択。(Select the business process) 2. 粒度を宣言する。(Declare the Grain) 3. ディメンションを特定する。(Identify the dimensions) 4. ファクトを特定する。(Identify the facts)

Slide 48

Slide 48 text

4.ファクトを特定する

Slide 49

Slide 49 text

ファクトの特定 この工程では、「このプロセスは何を測定しているのか?」 という問いに、答えることでファクトを特定します。 基本的に、この工程では、粒度が適切に宣言されている場合には、 特定作業で苦労することはありませんが、 実データが宣言通りではないケースに、遭遇することがよくあります。

Slide 50

Slide 50 text

ファクトの特定 粒度の宣言を行っている場合、宣言した粒度通りに、 ファクトを特定するだけです。 テーブル構造的には、以下のようなイメージ。 ● date_key = hoge ● click_key = fuga ● media_key = bar ● click_id = hoge ● media_id = 1 ● clicked_at = 2022-06-12 … ● click_amount = 1 ● etc… クリック ファクト 宣言した粒度 「表示された広告に対するクリック1回につき、1行。」

Slide 51

Slide 51 text

データの理想と現実 この工程では、理想と現実に挟まれることが多くなります。 想定と実データが違うことで、簡単に実現できないなどです。 しかしながら、ユーザーの要求を優先することをおすすめします。 欲しいものがあるなら、それを実現する方が良いです。 システムの都合を優先すると、うまく行かないことの方が多いです。

Slide 52

Slide 52 text

扱いにくいデータに対しての戦い方 データを整理し始めの頃は、扱いにくいデータに囲まれるものです。 こういう場合にやれることは、2つあります。 データそのものに改善を入れることで、扱いやすくする。 加えて、データの作り方のベストプラクティスを示すことで、 良いデータとは何か?の共通認識を組織で持つことです。 データを整理するあなただけが、頑張るのではなく。 全員で取り組むべき課題として捉えるのが、おすすめです。 データは、営みから生まれるので、当然と言えば当然です。

Slide 53

Slide 53 text

平和に終われば、 テーブルを作成して、SQLを書くだけ。

Slide 54

Slide 54 text

● date_key = hoge ● click_key = fuga ● media_key = bar ● etc… クリック ファクト ● media_key = fuga ● etc… メディア ディメンション ● date_key = 1 ● etc… 日付ディメンション media_key date_key

Slide 55

Slide 55 text

先月の広告クリック数を、広告掲載メディア別で見る SELECT d_media.media_name, sum(fct_clicks.click_amount) AS click_amount FROM fct_clicks INNER JOIN dim_media ON fct_clicks.media_key = d_media.media_key INNER JOIN dim_date ON fct_clicks.order_date_key = d_date.date_key WHERE d_date.day_of_month = 6 GROUP BY 1

Slide 56

Slide 56 text

ディメンショナルモデリングのメリット ● 決まったポリシーで、モデリングが行えるので、 経験則に依存せずに、一定レベルの使い勝手を担保できる。 ● 正規化したテーブルより、集計や分析クエリのパフォーマンスが高い。 ● 分析業務の要求に対して柔軟に対応できる。 ○ 例えば、ファクトやディメンションの追加などが容易。

Slide 57

Slide 57 text

ディメンショナルモデリングのデメリット ● 読み取りに最適化されるため、トランザクションシステムには不向き。 ● ETLプロセスが複雑になる。 ○ 現代においては、便利なツールが増えたので、 大きなデメリットではなくなった。(dbt, Dataform, etc…) ● 日本語でアクセスできる情報が、正規化に比べると少ない。

Slide 58

Slide 58 text

さらに学びたい方へ ● ディメンションモデリング ○ https://zenn.dev/pei0804/articles/dimensional-modeling ● Building a Kimball dimensional model with dbt ○ https://docs.getdbt.com/blog/kimball-dimensional-model ● Star Schema The Complete Reference ○ 書籍です。

Slide 59

Slide 59 text

モデリングに関する質とスピード モデリングにかけるコストと、価値提供までのリードタイムは、 私の経験上、トレードオフの関係ではありません。 適切なモデリングが行われてない現場ほど、リードタイムが長いです。 例えば、少し違うレポートを出すだけで、クエリが大変なことになったりしてます。 残念ながら、モデリングをサボっても、価値提供は早くなりません。 むしろ、適切なモデリングが、素早い価値提供に直結します。

Slide 60

Slide 60 text

アジェンダ ● 自己紹介 ● 概要 ● 実践 ● まとめ

Slide 61

Slide 61 text

まとめ

Slide 62

Slide 62 text

【問題】今日の広告表示数を、広告種別ごとに見たい。 ディメンションとファクトはどれ?

Slide 63

Slide 63 text

今日の広告表示数を、広告種別ごとに見たい。 ディメンション ファクト

Slide 64

Slide 64 text

あとはやるだけ。