Kinball 本を読まないでデータモデリングを学ぶ①: fct の1行は「出来事1回」
どうも、tomon です!
今回学んだのは、fct テーブルの1行の考え方です。結論から言うと、fct の1行はモノでも集計でもなく「出来事1回」です。そして「月でどう数えるか」のような集計の解釈は、fct ではなくセマンティック層が持つものでした。
この記事は、Kimball らの『The Data Warehouse Toolkit』を AI に読んでもらい、対話で教わりながら書いています。
自社では fct を「メトリック×時間次元」で作っていた
自社では、モデルを全部「メトリック×時間次元」の単位で作っていました。たとえば fct_売上_month のようなテーブルです。日次の集計が必要だと言われて、fct_売上_date も作り足しました。
まずは fct の1行が何を表すのかを、予約の例で見ていきます。
11月のキャンセル料の合計を出すには
DWH で「11月のキャンセル料の合計」を出したいとします。要るのは、キャンセルした日とキャンセル料です。
ところがアプリの DB では、予約テーブルの status を上書きしていきます。上書きしてしまうと、いつキャンセルされたかはもう残っていません。
下の図は、予約の状態遷移図(例)と、予約1件がそれをたどるところです。上が状態遷移図、左下がアプリの DB の1行、右下が DWH に増える fct の行です。段を進めると、いまの遷移が光り、DB の1行と fct の行がそれに合わせて変わります。
予約がとりうる状態と遷移の全体(例)。段を進めると、予約 #1 がこの図をたどり、アプリの DB の1行と DWH の fct がどう変わるかが出る