スター スキーマの設計
Power BI セマンティック モデルが単一のテーブルで構成されることは、ほぼありません。 単一テーブル モデルはシンプルな設計にすることができ、データ探索タスクや概念実証に適していますが、最適モデル設計ではありません。 最適なモデル設計は、"スター スキーマ" の設計原則に準拠しています。 スター スキーマはユーザーフレンドリな構造を提供し、ハイ パフォーマンスの分析クエリをサポートするため、リレーショナル データ ウェアハウス デザイナーによって一般的に使用される設計アプローチです。
モデル テーブルを "ファクト" または "ディメンション" として分類するため、この設計原則はスター スキーマと呼ばれます。 図では、ファクト テーブルが星の中心を形成し、ファクト テーブルを囲むように配置されたディメンション テーブルが星の角を表します。
ファクト テーブル
ファクト テーブルの役割は、特定のビジネス アクティビティを記録している観測やイベントを表す行の累積を格納することです。 たとえば、Sales ファクト テーブルに格納されるイベントには、販売注文と注文明細が考えられます。 ファクト テーブルを使用して、株価の変動、株式取引残高、または毎日の通貨為替レートを記録することもできます。 一般に、ファクト テーブルには多数の行が含まれます。 時間の経過とともに、ファクト テーブルの行が累積されます。 分析クエリ (このモジュールで後ほど定義ます) で、ファクト テーブルのデータが集計され、売上や数量などの値が生成されます。
ディメンション テーブル
ディメンション テーブルは、一般にユーザー、場所、製品、または概念を表すビジネス エンティティを記述します。 ディメンション テーブルの一般的な例として、日付ごとに 1 つの行を含む Date ディメンション テーブルがあります。 ディメンション テーブルの列を使用して、ファクト テーブルのデータをフィルター処理してグループ化できます。
各ディメンション テーブルには、キー列と呼ばれる一意の列が必要です。 一意の列には、重複する値は含まれません。また、値の欠落も許容されません。 Product ディメンション テーブルでは、この列に ProductKey または ProductID いう名前を付けることができます。 追加の列には、製品名、サブカテゴリ、カテゴリ、色などの説明的な値が格納される可能性があります。 分析クエリでは、これらの列を使用して、データのフィルター処理とグループ化が実行されます。
ファクト テーブルとディメンション テーブルを比較する
次の図は、ファクト テーブルとディメンション テーブルの特性を比較したものです。
特徴 | ディメンション テーブル | ファクト テーブル |
---|---|---|
モデルの目的 | ビジネス エンティティを格納する | イベントまたは観測を格納する |
テーブルの構造 | フィルター処理とグループ化を行うためのキー列と記述列が含まれる | 集計可能なディメンション キー列と数値メジャー列が含まれる |
データ ボリューム | 通常は (ファクト テーブルと比べて) 少ない行 | 多数の行を格納できる |
クエリの目的 | フィルター処理とグループ化を行うため | 集計するため |
スター スキーマのテーブルを関連付ける
モデルでは、1 対多のリレーションシップを使用して、ディメンション テーブルがファクト テーブルに関連付けられます。 リレーションシップによって、ディメンション テーブルの列に適用されるフィルターとグループをファクト テーブルに反映できます。 これが一般的な設計パターンです。
ディメンション テーブルを使用して複数のファクト テーブルをフィルター処理でき、複数のディメンション テーブルによってファクト テーブルをフィルター処理できます。 ただし、ファクト テーブルを別のファクト テーブルに直接関連付けることはお勧めできません。
この概念を実践するには、Adventure Works DW 2020 M01 ファイルをダウンロードした後、そのファイルを開き、モデル図に切り替えます。
このモデルは 7 つのテーブルで構成されていること、そのうちの 1 つに Sales という名前が付けられており、ファクト テーブルであることに注意してください。 残りのテーブルはディメンション テーブルであり、次の名前が付けられています。
- Customer
- Date
- Product
- Reseller
- Sales Order
- Sales Territory
ディメンション テーブルとファクト テーブル間のリレーションシップと、各リレーションシップのフィルター方向がファクト テーブルを指していることに注意してください。 その結果、(列の値でフィルター処理またはグループ化するために) ディメンション テーブルの列にフィルターが適用されると、関連するファクトがフィルター処理されて集計されます。
このパターンを調べると、星形になっていることがわかります。
スター スキーマ設計の詳細については、「スター スキーマと Power BI での重要性を理解する」を参照してください。