それでは、ここから2つ目の大きなテーマに入っていきます。今回のテーマは、「管理が楽になるデータの持ち方」です。言い換えると、「データをどのように整理して持っておくと、分析や運用がしやすくなるのか」というお話です。
本棚をイメージしてみてください。本が整理されずに置かれていると、読みたい本を探すのも、元の場所に戻すのも大変です。本棚は、きれいに整理整頓されているほうが管理しやすくなります。
データもこれと同じです。表計算ソフトの表を「棚」だと考えてみてください。その棚の中に、さまざまなデータが格納されています。ただし、実際の業務では、扱うデータが増えてくると、棚も一つでは足りなくなってきます。
売上データ、商品データ、顧客データ、社員データなど、さまざまなテーブルを用意し、それらをリレーションで関連付けながら分析していくことになります。そこで重要になってくるのが、「分析に適したテーブルの持ち方」です。Power BIでは、このデータ構造を考えるうえで「スタースキーマ」という考え方が重要になります。
ここから少し専門用語が出てきますが、まずはイメージから理解していきましょう。
スタースキーマには、中心となる「ファクトテーブル」と、その周囲に配置される「ディメンションテーブル」があります。
ファクトテーブルを中心にして、その周囲にディメンションテーブルが配置されることで、星のような形になる。これが「スタースキーマ」という名前の由来です。
では、ファクトテーブルとは何でしょうか。「ファクト」という言葉には、「事実」や「実績」といった意味があります。Power BIでいうファクトテーブルには、分析の対象となる実績データを格納します。たとえば、売上数量、売上金額、経費金額、申請件数など、分析したい数値データが入っているテーブルです。
一方、ディメンションテーブルは、分析するときの「軸」となる情報を格納します。
たとえば、経費申請のデータを分析するとしましょう。申請者である社員の情報があり、その社員がどの課に所属しているのか、さらにその課がどの部に所属しているのか、といった情報があります。
「社員」
→「課」
→「部」
→「会社」
というように、データが階層構造を持つこともあります。こうした「誰なのか」「いつなのか」「どの商品なのか」「どの部署なのか」といった分析の切り口となる情報を、ディメンションテーブルとして整理していきます。
第8回で見た「取引先マスタ」と「販売実績」の関係を思い出してください。販売実績がファクトテーブル、取引先マスタがディメンションテーブルです。実は、あのときすでに、小さなスタースキーマを作っていたわけです。
スタースキーマには、大きく2つのメリットがあります。
1つ目は、構造がシンプルになることです。実績データと分析軸となるデータを分けることで、それぞれのテーブルの役割が明確になります。
2つ目は、拡張性が高いことです。たとえば、新しい分析軸が必要になった場合でも、新しいディメンションテーブルを追加して対応することができます。
このように、データを役割ごとに整理しておくことで、Power BIでの分析や運用がしやすくなります。ちなみに、スタースキーマからさらにディメンションテーブルを分割し、そこから枝葉が伸びるような構造を「スノーフレークスキーマ」と呼びます。こちらもデータベースの世界では重要な考え方ですが、この講座では扱いません。
では、もう少しだけデータの整理について見ていきます。一つの大きなテーブルにすべての情報を入れていると、同じ部署名や商品名など、同じ情報が何度も繰り返し登場することがあります。このように重複する情報を整理していく考え方が、データベースの「正規化」です。
重複する情報を別のテーブルに分け、元のデータとリレーションで関連付けることで、データの重複を減らすことができます。データベースの世界では、これを「第1正規形」「第2正規形」「第3正規形」といった段階で考えますが、この講座では深く掘り下げません。
ただし、「一つの大きな表に情報を詰め込むのではなく、役割ごとにテーブルを分けてリレーションで関連付ける」という考え方は、Power BIでも重要です。この考え方をデータモデルとして分かりやすく表現したものの一つが、今回学習したスタースキーマです。
では、ここからは実際に手を動かしてみましょう。経費申請のサンプルデータは、申請日・申請者・課・部・経費区分・金額がすべて一つの表にまとめられた状態になっています。まず、このデータを確認してみてください。
そして、「どのデータが繰り返されているのか」「どの情報を別のテーブルとして分けることができるのか」を考えてみましょう。社員と所属(課・部)の情報は、申請のたびに同じ内容が繰り返されているはずです。
この繰り返されている部分を「社員マスタ」のようなディメンションテーブルとして切り出し、残った申請日・申請者・経費区分・金額をファクトテーブルとして、Power BIのモデルビューで両者をリレーションで結んでみてください。これが、スタースキーマの形に整理する正規化の体験です。