ステップ 2: グレーンを特定する

各ファクト表およびビジネス・プロセスの細分度を特定します。 このプロセスでは、ファクト表のタイプと、ディメンションおよびメジャーの予備候補を特定します。
以下は、グレーン特定のいくつかの特徴的な点です。
レコードに何が格納されているかを指定する
グレーンの特定時には、ファクト表のレコードに何が格納されているかを厳密に指定します。 グレーンは、ファクト表のメジャーに関連付けられた詳細度のレベルを表します。 グレーンの特定時には、ディメンション・モデル内で使用可能にする詳細度のレベルも決定します。 詳細度を高くすると、細分度のレベルは低くなります。 詳細度を低くすると、細分度のレベルは高くなります。
詳細さのレベルの特定
スター・スキーマで利用できる詳細さのレベルは、グレーンと呼ばれています。 各ファクト表およびディメンション表には、独自のグレーンつまり細分度があります。 各表 (ファクトまたはディメンション) には、関連付けられた詳細度があります。 ディメンション・モデルのグレーンは、ファクト表とディメンション表の結合時に暗黙的に適用される最も細かなレベルの詳細さです。 例えば、ディメンション Date、Store、および Product で構成されるディメンション・モデルの細分度は、1 日に店舗で販売される製品 になります。
データの特定
各行は、同じタイプのデータを格納します。 例えば、各行には、店舗別製品別の毎日の販売額、または店舗別の毎日の品目が格納される場合があります。
例えば、グレーン定義は以下の項目を含むことができます。

ファクト表およびディメンション表には、細分度が関連付けられています。 ディメンション・モデリングでは、細分度とは、表に保管される詳細さのレベルを表します。 例えば、(Year および Quarter の階層を持つ) Date などのディメンションには、四半期レベルの細分度がありますが、個々の曜日または月に関する情報はありません。 それに対して、(Year、Quarter、および Month の階層を持つ) Date ディメンション表には月レベルの細分度がありますが、曜日レベルの情報はありません。

複数のファクト表 (日単位、月単位、および年単位の表) を使用することで、異なるデータ細分度を扱うことがきます。 また、細分度フラグまたは表のグレーンを示す列を含む 1 つの表を使用することもできます。 ただし、細分度の異なるデータを 1 つのファクト表に保管しないでください。

データ・オブジェクトのグレーンを特定するには、次のステップを実施します。
  1. ファクト表の細分度を決定する
  2. 複数の異なるグレーンの処理方法を決定する
  3. 使用するファクト表のタイプを決定する
  4. グレーンの原子性を調べる
  5. 作成したグレーン定義に基づいて上位のディメンションおよびメジャーを決定する
  6. 作成したグレーン定義のレポートを作成する

グレーンのメタデータを特定する

このフェーズでは、次のメタデータを収集します。

ファクト表の細分度を決定する

グレーンの詳細さは、『ステップ 1: ビジネス・プロセス要件を特定する』で分析および文書化した要件の調査結果に基づきます。 送り状、受領書、発注メモなどの文書を収集します。 これらの文書には、グレーンの定義に使用できる情報が含まれていることがよくあります。 また、これらの文書には、ディメンション・モデルのディメンションおよびメジャーの特定に役立つ情報も含まれています。

選択したグレーンによって、ディメンション・モデルで利用できる情報の詳細レベルが決まります。

グレーン定義は、すべてのディメンション・モデルのベースです。 グレーン定義によって、利用できる情報のレベルが決まります。 グレーン定義を選択する際のガイドラインには、次の考慮事項が含まれます。
  • ビジネス要件の収集段階では、送り状フォーム、発注フォーム、売上領収書などの文書をすべて収集するようにしてください。 通常、これらの文書には、発注番号や送り状番号などのトランザクション・データが付随しています。
  • 文書は、顧客や製品などの、ビジネスの重要要素を示すことがよくあります。 文書には、ビジネスに必要な最低レベルの情報が含まれていることがよくあります。
  • もう 1 つの重要な考慮事項として、日付があります。 顧客、製品、またはサプライヤーに、どのレベルの詳細さが関連付けられているかを把握します。 ソース・システム内の情報は、日単位、月単位、または年単位のどのレベルで利用できるのかを確認します。

複数の異なるグレーンを処理する

ディメンション・モデルの設計対象であるビジネス・プロセスに、複数のグレーンが関連付けられているかどうかを判断します。 1 つのビジネス・プロセスに複数のグレーン定義が関連付けられている可能性があります。 そのような場合、グレーンごとに別々のファクト表を設計します。 すべてのメジャーを 1 つのファクト表に無理に格納しないでください。

異なるデータ細分度は、複数のファクト表 (例えば、日単位、月単位、および年単位の表) を使用することで処理できます。 また、複数の細分度の処理方法を決定する場合は、データやスペースの容量およびパフォーマンスの要件も考慮に入れてください。

1 つまたは複数のファクト表に関する基準
1 つまたは複数のファクト表のどちらを使用するかを決定する場合、以下の基準を参考にします。
  • メジャーを考慮します。 複数のメジャーを 1 つのファクト表にまとめるか、またはグレーンの異なる別々のファクト表に格納するかを決定します。
  • 複数の OLTP ソース・システムが関与しているかどうか。 各ソース・システムは、特定の目的で設計されています。 2 つのソース・システムの目的が違わない場合は、それらのシステムを 1 つのソースに統合します。 システムを別々にしておく必要がある場合、各ソース・システムはビジネスの特定の要件に対応します。 ビジネス・プロセスに注文管理、店舗在庫、または倉庫在庫が関連している場合、おそらく別々のソース・システムが使用されています。 そのような場合、別々のファクト表を使用します。
  • 複数の、関連のないビジネス・プロセスが関与しているかどうかを判断します。 相互に関連のないビジネス・プロセスには、別々のファクト表を作成します。 1 つのビジネス・プロセスに異なるレベルの細分度が必要な場合、別々のファクト表を作成してそれらのレベルを処理します。
  • あるディメンションがグレーン定義を満たさない場合、独自のグレーン定義を指定して新規のファクト表を設計します。
  • イベントのタイミングと順序を考慮します。 1 つのイベントを処理するのに、別々のプロセスが必要な場合があります。 例えば、ある会社が自社製品をマーケティングするとします。 顧客が製品を注文します。 売掛部門が請求書を作成します。 顧客が請求書に対して支払います。 購入後、顧客は一部の製品を返品、または修理のために返送することがあります。 いずれかの製品の保証が切れている場合、このプロセスには新たな料金がかかります。 1 つの連続した購入イベントに、複数のプロセスが関与しています。 これらの各プロセスは、特定の、異なる時点に発生している可能性があります。 これらの各プロセスは、別々のファクト表を使用して処理されます。
1 つファクト表内の複数の細分度
1 つのファクト表で複数のグレーンを使用する場合、細分度フラグと呼ばれる列を追加します。 この列は、表のグレーンを示します。 この列は、日、週、月、または年のどの単位のレベルで情報が保管されているかを定義します。
注: 複数のグレーンを 1 つのファクト表に保管することができますが、このアプローチは推奨されません。 グレーン定義ごとに別個のファクト表とスター・スキーマを設計してください。

使用するファクト表のタイプを特定する

ディメンション・モデルの設計に使用するファクト表のタイプを特定します。 ファクト表の詳細は、『ファクト表およびエンティティー』を参照してください。

グレーンの原子性を確認する

グレーンの原子性 (詳細さのレベル) を見直して、最も詳細なレベルであることを確認します。 この決定の際には、ビジネス要件の変化に伴う再設計の必要性を最小限にするために、予測される将来のニーズも検討します。

ディメンション・モデルの設計時には、ディメンション・モデルのグレーンが重要になります。 ビジネス要件では情報が必要なのは月または四半期の単位のレベルであっても、日単位でその情報を入手できるようにします。 ディメンションが詳細 (原子的) であればあるほど、ビジネスが取り出すことのできる情報は詳細になります。

例えば、Year 属性のみを持つ Date ディメンションがあるとします。 属性は 1 つしかないので、四半期、月、または日のレベルでは情報を照会できません。 利用できる情報を最大限にするために、詳細な原子性のグレーンを選択してください。 この例では、グレーンを日単位レベルに定義することができます。

例えば、ある店舗で販売された 1 つの製品のグレーンがあるとします。 その製品の行は 1 つしかないため、購入された特定の製品に顧客を関連付けることはできません。 その製品が、数千人の異なる顧客によって数千回購入された場合、その情報を見つけることはできません。

常に、最も原子的で詳細なデータを集約して使用することにより、ビジネス・プロセスに対してより高いレベルのグレーンを宣言することができます。 ただし、より高レベルのグレーンを選択すると、ディメンション数が制限されるため、細分度が低くなることがあります。 そのような細分度の低いディメンションにドリルダウンして、より低レベルの詳細を入手することはできません。

細分度は、次のような、データウェアハウジングにおける重要な問題間のトレードオフの機会を提供します。
  • パフォーマンス対データの量 (およびデータの保管コスト)
  • 詳細レベルでデータにアクセスする機能対パフォーマンス (および大容量のデータの保管とアクセスに要するコスト)
適切なレベルの細分度の選択は、データウェアハウスのデータ量に大きく影響します。 また、適切なレベルの細分度の選択は、データウェアハウスが照会要件を満たせるかどうかも左右します。

ディスク・スペースとデータの量を検討する場合、細分度を高くすれば、細分度が低い場合よりも効率のよいデータ保管方法が提供されます。 また、データの索引用のディスク・スペースも考慮する必要があります。 索引を使用すれば、ディスク・スペースをさらに節約できます。 また、大容量データの操作も考慮してください。 データ操作は、より多くの処理能力を必要とし、パフォーマンスに影響を与えることがあります。

データの処理では、常にトレードオフがあります。 例えば、細分度が高くなるほど、(より詳細なレベルのデータを必要とする) さまざまな照会に回答できる能力は低くなります。 表が低いレベルの細分度を使用する場合、ストレージ・スペースの増大とパフォーマンスの低下という犠牲を払うことにより、そのデータを使用するすべての照会をサポートすることができます。

ある照会に回答できるかどうかを細分度が左右することはありませんが、システムは同じ照会を実行するためより多くのリソース必要とする可能性があります。 取引詳細を含む表と、月別の勘定をまとめたサマリー表という、異なるレベルの細分度の 2 つの表があるとします。 月単位の勘定レポートを作成する場合、細分度に依存することなく、どちらの表も使用できます。 ただし、詳細取引表の照会ではより多くのデータが検索され、結果を算出するための処理が必要になります。 月単位の勘定サマリー表に必要なリソースはそれより少なくなります。

細分度のレベルを決定する場合、データ量のコストと、照会への回答能力の間のトレードオフを考慮してください。

上位のディメンションおよびメジャーを特定する

グレーン定義について習得した内容に基づいて、上位の予備ディメンションとメジャーを特定します。 これらの予備ディメンションとメジャーを特定するための詳細分析は行いません。 グレーンを適切に定義していれば、予備ディメンションとメジャーは簡単に見つけることができます。

予備メジャーは、グレーン定義を見れば簡単に特定できるメジャーです。 例えば、単価、数量、割引率などのメジャーは、グレーンを見れば簡単に特定できます。 ただし、経費、製造価格、輸送費などの詳細メジャーは、グレーンによって特定される予備メジャーではありません。 このタイプのメジャーは隠れたメジャーであり、通常は、レポート上に表れることはありません。 予備メジャーは、最終的なメジャーセットではありません。 正式な詳細メジャーの特定は、メジャーを特定するときに行います。

これら予備の上位ディメンションおよびメジャーは、ディメンションを正式に特定するときに役に立ちます。

グレーン特定フェーズのレポートを作成する

このフェーズのグレーン定義レポートを作成します。 レポートには、ビジネス・プロセスのグレーンの 1 つ以上の定義を記載し、ファクト表のタイプを定義します。 レポートには、上位の予備ディメンションおよびメジャーも含めます。


フィードバック