ステップ 4: メジャーを特定する

ディメンション・モデル設計サイクルのこのステップでは、ディメンション・モデルに組み込むメジャーとメジャーのタイプを特定します。

メジャーの詳細は、『メジャー』を参照してください。

メジャーを定義する場合、次のメタデータを収集します。
ディメンション・モデルのメジャーを特定するには、次のステップを実施します。
  1. 表のグレーンを満たすメジャーを特定する
  2. モデル内のメジャーのタイプを特定する
  3. 表が年単位の合計を集約するファクト表でない場合、年初来のメジャーがそのファクト表に含まれていないことを確認する
  4. 表がイベント・ベースのファクト表である場合、イベントの処理方法を決定する
  5. ファクト表の増大度を予測する

グレーンを満たすメジャーを特定する

モデルのメジャーを設計する場合、各レベルのモデルのグレーンを満たすメジャーを特定します。 ディメンション・モデルのグレーンを特定した際に、予備メジャーを特定しました。 グレーン定義を調べることによって、他の詳細なメジャーを決定することができます。 例えば、個々の製品別の経費や、製品当たりの製造人件費などの詳細メジャーが特定されている場合、そのモデル内の残りのメジャーをすべて特定します。

メジャーのタイプを特定する

ディメンション・モデルでどのタイプのメジャーが使用されているかを判別します。 ファクト表内の各メジャーに、デフォルトの集約 (または導出) 規則が必要です。

年初来のメジャーの処理方法を決定する

年初来のメジャーとは、年初から現在の日付までの集計で構成される数値のことです。 そのようなメジャーが、原子レベルの品目を含むファクト表に含まれていないことを確認する必要があります。

2005 年度の販売額データがファクト表に保管されていると仮定します。 各月の販売額は加算項目であり、販売額を加算して年初来の合計を算出します。 Sales_$$_Year_To_Date といった年初来のファクトを作成した場合に、このファクトを 2005 年 8 月に照会すると、2005 年 8 月までのすべての販売額の総額が返されます。

ディメンション・モデルの作成者は、集約された年初来のメジャーをファクト表に含めて、年初来の照会が実行されたときのパフォーマンスを改善し、複雑さを軽減することができます。 ただし、混乱を避けるため、このようなメジャーはレポート・アプリケーションで計算します。

年初来メジャーは、次の方法で処理します。
  • OLAP ベースのアプリケーション
  • ビュー内の SQL 関数またはストアード・プロシージャー

イベントの処理方法を決定する

表がイベント・ベースのファクト表である場合、イベントの処理方法を決定する必要があります。

イベント・ファクト表は、Web ページのクリックや従業員または学生の出欠状況などのイベントを記録するのに使用します。 イベントは必ずしもメジャーを生成するとは限りません。 イベント・ベースのシナリオを処理するケースでメジャーがない場合、疑似ファクトまたはファクトレス・ファクトのどちらかで構成されるイベント・ファクト表を使用します。

イベント・ベースのファクト表に関連した次の考慮事項に留意してください。
  • イベント・ベースのファクト表には、通常、疑似ファクトが含まれているか、またはまったくファクトが含まれていません。
  • カウント操作の実行には、疑似ファクトを使用します。
  • ファクトレス・ファクトのイベント表には、外部キーのみがあって、ファクトはありません。 カウント操作の実行には、外部キーを使用します。

ファクト表の増大度を予測する

ファクト表のサイズおよび増大度を予測し、ディメンション・モデルのパフォーマンスをチューニングする方法を決定します。

以下のいずれかのステップを実行して、ファクト表のサイズおよび増大度を推定することができます。

ビジネスを理解する
例えば、ある小売り販売ビジネスの総売上が 1 億ドルになるとします。 また、品目の平均価格は 2 ドルであるとします。 必要となる品目の数量を計算するには、次のように、品目の平均価格で総収入を除算します。
100000000 / 2 = 50000000 行
したがって、このグレーンの小売り販売ビジネス・プロセスに関しては、5000 万行がスター・スキーマに挿入されます。
テクニカルな観点から計算する
外部キー、逆ディメンション、メジャーのサイズを判別します。 すべての店舗で毎日販売されるすべての製品を想定したうえで、この列数に、挿入されるであろう行数を乗算します。 例えば、小売り販売ビジネス・プロセスでは、次のステップを実施します。
  1. 次のように、各ディメンション内の行数を計算します。
    時間ディメンション: 4 行
    日付ディメンション: 1 年に 365 行
    製品ディメンション: 100 行 (100 種の製品)
    店舗ディメンション: 2 行 (2 店舗)
    顧客ディメンション: 1000000 人の顧客
    サプライヤー・ディメンション: 50 社のサプライヤー
    従業員ディメンション: 10 人の従業員
  2. 各ディメンションの行数を掛け合わせることにより、ファクト・レコードの基本レベルを計算します。 前のステップで収集した数値を使用します。
    4 * 365 * 100 * 2 * 1000000 * 50 * 10 = 730000000 行
    注: この数値は、思ったよりも大きいかもしれません。 この数値が当てはまるのは、各製品が各店舗で各従業員により各顧客に販売される場合のみです。
  3. ファクト表のサイズの最大増大率を計算します。
    外部キーの数: 8
    逆ディメンションの数: 1
    メジャーの数: 8
    ファクト表は、INTEGER 列 4 バイト使用すると仮定し、次のように 1 つの行のサイズを計算します。
    (8 + 1 + 8) * 4 バイト = 68 バイト
    次のように、ディメンション・モデルの 1 年間のデータの最大増大率を計算します。
    730000000 行 * 68 バイト = 45 GB

フィードバック