Warehouse Builderでは、ディメンション・オブジェクトを定義、配布およびロードできます。ディメンション・オブジェクトの配布先は、リレーショナル・スキーマまたはデータベース内のアナリティック・ワークスペースです。
この章の内容は次のとおりです。
この項では、ディメンション・オブジェクトに関連する基本的な概念について説明します。ディメンション・オブジェクトの概念およびWarehouse Builderのディメンション・オブジェクトの実装タイプについて十分に理解している場合は、次のいくつかの項をスキップして「ディメンションの作成」から続けます。
データを識別および分類するための追加のメタデータが含まれるオブジェクトを、ディメンション・オブジェクトと呼びます。Warehouse Builderでは、ディメンションとキューブという2つのタイプのディメンション・オブジェクトを設計、配布およびロードできます。この章では、ディメンションとキューブの両方をディメンション・オブジェクトという語で表します。
ほとんどの分析問合せで時間ディメンションを使用する必要があります。Warehouse Builderには、簡単な質問に答えることで時間ディメンションを容易に作成し、移入できるツールが用意されています。
設計と実装
Warehouse Builderでは、ディメンション・オブジェクトの論理設計が記憶域から分離されています。論理設計(ビジネス・ルール)では、最初に、ディメンション・オブジェクトの構造と内容を重点的に考えることができます。次に、そのディメンション・オブジェクトに対して、リレーショナル、ROLAPまたはMOLAP実装を選択できます。
ROLAP実装およびリレーショナル実装では、データベースのリレーショナル・スキーマ内にディメンション・オブジェクトが格納されます。
MOLAP実装では、データベースのアナリティック・ワークスペース内にディメンション・オブジェクトが格納されます。
Warehouse Builderを使用すると、同じメタデータを使用して、リレーショナル・データ・ストアと多次元データ・ストアの両方を作成および管理できます。設計と実装の分離には、次の利点があります。
最初に設計し、その後で実装するため、実装が容易になります。
どのタイプの実装に対してもETLが同じであるため、タイプを意識せずに操作できます。
OLAPの使用
ビジネス組織には通常、複雑な分析、予測および計画の要件があります。分析ビジネス・インテリジェンス(BI)アプリケーションでは、データベース内のデータを使用して重要なビジネス上の問題に対応することで、ソリューションを提供します。
ディメンション・オブジェクトは、データ・ウェアハウスに対して複雑な分析機能を提供します。データをディメンション・オブジェクトにロードした後は、ツールやアプリケーションを使用して、ビジネス上の問題に対応する複雑な分析問合せを実行できます。これらの分析問合せには、時系列分析、行間計算、集計された履歴データおよび現行データへのアクセス、予測などがあります。多次元オブジェクトは、このような問合せに迅速に対応する点でより効果的です。
ディメンション・オブジェクトの作成は、次の4つの上位タスクで構成されます。
ディメンション・オブジェクトを定義するときは、より構造化された形式でデータを格納できるように、論理的な関係を記述します。たとえば、ディメンションを定義するには、属性、レベルおよび階層を記述します。
Warehouse Builderでは、次の2通りの方法でディメンション・オブジェクトを定義できます。
ウィザード: ディメンション・オブジェクトを簡単に作成するには、ウィザードを使用します。ウィザードでは、完全に機能するディメンション・オブジェクトが、ディメンション・オブジェクト・データを格納する実装オブジェクトとともに作成されます。多数のオプションが、最も一般的な設定にデフォルト設定されています。これらの設定は、エディタを使用して後で変更できます。
ディメンションの作成にはディメンションの作成ウィザード、時間ディメンションの作成には時間ディメンションの作成ウィザード、キューブの作成にはキューブの作成ウィザードをそれぞれ使用します。
エディタ: ディメンション・オブジェクトを作成または編集するには、エディタを使用します。ウィザードで使用されるデフォルト設定とは異なる設定を指定する場合は、ディメンション・オブジェクトの作成にエディタを使用します。また、ウィザードの使用時には使用できない特定の拡張オプションを使用するディメンション・オブジェクトを作成する場合も、エディタを使用します。たとえば、スノーフレーク・スキーマ実装を使用するリレーショナル・ディメンションを作成するには、エディタを使用する必要があります。ウィザードを使用した場合、使用されるデフォルト実装メソッドはスター・スキーマです。また、ディメンションの作成ウィザードを使用して、作成したディメンションを編集し、スノーフレーク・スキーマ実装を使用するために変更できます。
ディメンション・オブジェクトを実装するには、ディメンション・オブジェクトの物理構造を作成します。Warehouse Builderには、ディメンション・オブジェクトに対して次の実装が用意されています。
注意: MOLAP実装を使用するには、次の製品が必要です。
|
ディメンション・オブジェクトに対する実装のタイプを指定するには、「配布オプション」構成プロパティを設定します。このプロパティの設定の詳細は、「ディメンションの構成」および「キューブの構成」を参照してください。
リレーショナル実装を行うと、ディメンション・オブジェクトとそのデータがリレーショナル形式でデータベースに格納されます。ディメンション・オブジェクトのデータは実装オブジェクト(通常は表)に格納されます。ディメンション・オブジェクトに対して問合せを実行した場合、この表からデータが取得されます。Warehouse Builderにより、ディメンション・オブジェクトを作成するDDLスクリプトが作成されます。このスクリプトは、コントロール・センターを使用してデータベースに配布できます。
ウィザードを使用してディメンション・オブジェクトを定義すると、Warehouse Builderでは、ディメンション・オブジェクト・データを格納するデータベース表が作成されます。データ・オブジェクト・エディタを使用してディメンション・オブジェクトを定義する場合は、Warehouse Builderで実装表を作成するか、独自の表とビューにディメンション・オブジェクト・データを格納するかを決定できます。バインドに関する次の項では、ディメンション・オブジェクトとその実装オブジェクトの間の関係を指定する方法を説明します。
リレーショナル実装の場合、ディメンション・オブジェクトに格納されたデータを、データ・ビューアを使用して表示することはできません。ただし、ディメンション・オブジェクトの実装表に格納されたデータは、データ・ビューアを使用して表示できます。
バインドは、ディメンション・オブジェクトの属性を、そのデータが格納されている表またはビューの列に結合するプロセスです。バインドを実行するのは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみです。多次元オブジェクトについては、バインドは暗黙的であり、アナリティック・ワークスペースで解決されます。
ディメンションでは、レベル属性およびレベルの関係を実装オブジェクト内の列に接続します。キューブでは、メジャーおよびディメンション参照を実装表の列に接続します。
Warehouse Builderには、次の2通りのバインド方法があります。
自動バインド
手動バインド
自動バインド: 自動バインドでは、実装表がまだ存在しない場合はWarehouse Builderにより作成されます。次に、ディメンション・オブジェクトの属性と関係が、ディメンション・オブジェクト・データを格納する列にバインドされます。自動バインドは、ウィザードとエディタのどちらを使用しても実行できます。
ディメンションの場合、ディメンション・データの格納に使用される表の数は選択した格納オプションによって異なります。格納オプションの詳細は、「ディメンションのリレーショナルおよびROLAP実装」を参照してください。
エディタを使用してディメンション・オブジェクトを作成する場合は、自動バインドと手動バインドの両方を実行できます。
自動バインドを実行する手順は、次のとおりです。
プロジェクト・エクスプローラで、ディメンション・オブジェクトを右クリックして「エディタを開く」を選択します。
このディメンション・オブジェクトのデータ・オブジェクト・エディタが表示されます。
「ディメンショナル」タブで、「ディメンション・オブジェクト」ノードを右クリックして「バインド」を選択します。
または、キャンバスで「ディメンション・オブジェクト」ノードを選択し、「オブジェクト」メニューから「バインド」を選択します。
「バインド」オプションが有効でない場合は、ディメンション・オブジェクトによりリレーショナル実装またはROLAP実装が使用されているかどうかを検証します。このディメンションの場合は、「記憶域」タブの「実装」セクションで「手動」オプションが設定されていないことを確認します。
手動バインド: 手動バインドでは、ディメンション・オブジェクトの属性を、そのデータが格納されているデータベース列に明示的にバインドする必要があります。ディメンション・オブジェクトを既存の表またはビューにバインドする場合は、手動バインドを使用します。
ディメンション・オブジェクトの手動バインドを実行する手順は、次のとおりです。
ディメンション・オブジェクト・データの格納に使用する実装オブジェクト(表またはビュー)を作成します。
リレーショナルまたはROLAPディメンションの場合は、ディメンションのサロゲート識別子のロードに使用する順序を作成します。既存の順序を使用できます。
プロジェクト・エクスプローラで、ディメンション・オブジェクトを右クリックして「エディタを開く」を選択します。
そのディメンション・オブジェクトのデータ・オブジェクト・エディタが表示されます。キャンバスでは「ディメンショナル」タブがアクティブになります。
ディメンション・オブジェクトを右クリックして「詳細の表示」を選択します。
ディメンション・オブジェクトと同じ名前の新しいタブが表示されます。
パレットから、実装オブジェクトを表す演算子をキャンバスにドラッグ・アンド・ドロップします。
「新規または既存の<オブジェクト>を追加」ダイアログ・ボックスが表示されます。たとえば、ディメンション・データが表に格納されている場合は、パレットからキャンバスに表演算子をドラッグ・アンド・ドロップすると、「新規または既存の表を追加」ダイアログ・ボックスが表示されます。
「既存の<オブジェクト>を選択」オプションを選択し、選択ツリーに表示されるオブジェクトのリストからデータ・オブジェクトを選択します。
「OK」をクリックします。
追加したオブジェクトを表すノードがキャンバスに表示されます。
ディメンションでは、ディメンション・データの格納に複数のデータ・オブジェクトが使用される場合は、各データの実装オブジェクトについてステップ4から6を実行します。
ディメンションでは、ディメンションの各レベル内の属性をそれらのデータを格納する列にマッピングします。また、レベルの関係をそれらのデータを格納するデータベース列にマッピングします。
キューブでは、メジャーおよびディメンション参照をキューブ・データを格納する列にマッピングします。
実装オブジェクト列にマッピングするには、ディメンションまたはキューブ属性の上でマウスを押したままドラッグし、属性値が格納されている列の上にドロップします。
たとえば、「ディメンションの例」で説明しているPRODUCTS
ディメンションでは、PRODUCTS
ディメンションのGroupsレベル内のNAME
属性は、PRODUCTS_TAB
表のGROUP_NAME
属性内に格納されています。NAME
属性の上でマウスを押したままドラッグし、PRODUCTS_TAB
表のGROUP_NAME
属性の上にドロップします。
アンバインド: Warehouse Builderでは、ディメンション・オブジェクトのアンバインドも実行できます。アンバインドすると、ディメンション・オブジェクトと、そのデータが格納されている表の間の結合が削除されます。
現在の実装からディメンション・オブジェクトをアンバインドするには、キャンバスの「リレーショナル」タブでディメンション・オブジェクトを右クリックし、「アンバインド」を選択します。アンバインドすると、ディメンション・オブジェクトとその実装オブジェクトの間のバインドが削除されます。ただし、実装オブジェクトは変更されません。
ROLAP実装では、リレーショナル実装と同様に、ディメンション・オブジェクトとそのデータが、リレーショナル形式でデータベースに格納されます。ROLAP実装を使用すると、データベースに配布できるDDLスクリプトを作成する以外に、ディメンション・オブジェクトに対するCWM2メタデータをOLAPカタログに作成できます。
MOLAP実装では、ディメンション・オブジェクト・データが、Oracle Database 10gのアナリティック・ワークスペースに格納されます。このアナリティック・ワークスペースは、データベースに格納されます。
アナリティック・ワークスペースは、データを多次元形式で格納するOracleデータベース内のコンテナです。アナリティック・ワークスペースによって、OLAP処理に対する最適なサポートが実現します。アナリティック・ワークスペースには、ディメンションや変数など、様々なオブジェクトを格納できます。
アナリティック・ワークスペースは、リレーショナル・データベース表に格納されます。この表は、他の表と同様に、複数のディスク・ドライブにまたがってパーティション化できます。単一のスキーマ内に多数のアナリティック・ワークスペースを作成し、ユーザー間で共有できます。アナリティック・ワークスペースは特定のユーザーが所有し、他のユーザーにはそのアクセス権を付与できます。ディメンション・オブジェクトの名前は、所有者のスキーマ内で一意であることが必要です。アナリティック・ワークスペースの詳細は、Oracle OLAPユーザーズ・ガイド参照してください。
OLAPカタログは、OracleデータベースのOLAPオプション用に提供されているメタデータ・リポジトリです。このメタデータでは、リレーショナル表とアナリティック・ワークスペースの両方に格納されるデータが記述されます。
Warehouse Builderを使用してディメンション・オブジェクトを配布するときは、ディメンション・オブジェクト・メタデータをOLAPカタログに格納するかどうかを指定できます。
OLAPメタデータは、アクティブ・カタログ・ビュー(名前がALL_OLAP2_AWで始まるビュー)と呼ばれる一連のビューを介して動的に提示されます。
Oracle Database 10gでは、OLAPカタログのメタデータはOLAPツールおよびリレーショナル・スター・スキーマやスノーフレーク・スキーマに格納されたデータにアクセスするアプリケーションで使用されます。Discovererなどの外部アプリケーションではリレーショナル・データおよび多次元データに問合せを行うためにOLAPカタログが使用されます。アプリケーションでは、データがリレーショナル表にあるのかアナリティック・ワークスペースにあるのかは重要ではなく、またデータにアクセスするメカニズムも重要ではありません。
図14-1は、OLAPカタログを使用してリレーショナル表およびアナリティック・ワークスペースに格納されたデータにアクセスする方法を示しています。
OLAPカタログは、格納されているメタデータを使用して、リレーショナル表またはビューに格納されているデータにアクセスします。OLAPカタログによって、論理多次元オブジェクトが定義され、それらが物理データ・ソースにマッピングされます。論理オブジェクトはディメンションおよびキューブです。物理データ・ソースは、リレーショナル表またはビューの列です。
データベース内のディメンション・オブジェクトをインスタンス化するには、ディメンション・オブジェクトを配布する必要があります。ディメンション・オブジェクトの実装タイプを指定するには、配布オプションを設定します。構成パラメータの「配布オプション」により、配布オプションを設定できます。
Warehouse Builderでは、次のようなディメンション・オブジェクトの配布オプションが提供されます。
すべて配布: リレーショナル実装またはROLAP実装の場合は、ディメンション・オブジェクトがデータベースに配布され、CWM定義がOLAPカタログに配布されます。MOLAP実装の場合は、ディメンション・オブジェクトがアナリティック・ワークスペースに配布されます。
データ・オブジェクトのみ配布: ディメンション・オブジェクトのみをデータベースに配布します。このオプションは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみ選択できます。
カタログにのみ配布: CWM定義をOLAPカタログにのみ配布します。データのみを配布した後に、Discoverer for OLAPなどのアプリケーションでディメンション・オブジェクト・データにアクセスする場合にこのオプションを使用します。以前にデータ・オブジェクトのみを配布した場合は、このオプションを使用すると、再度データ・オブジェクトを配布せずにCWMカタログ定義を配布できます。
集計の配布: キューブ・メジャーに定義されている集計を配布します。このオプションは、キューブに対してのみ使用できます。
MOLAP実装を使用するディメンション・オブジェクトの配布
MOLAP実装を使用するディメンション・オブジェクトは、定義後すぐに配布できます。ディメンション・オブジェクトの配布には、デザイン・センターまたはコントロール・センター・マネージャを使用できます。
リレーショナル実装またはROLAP実装を使用するディメンション・オブジェクトの配布
リレーショナルまたはROLAPのディメンション・オブジェクトを配布する前に、実装詳細が指定されていることを確認します。つまり、ディメンション・オブジェクトがその実装オブジェクトにバインドされている必要があります。また、ディメンション・オブジェクトが有効であることも確認します。ディメンション・オブジェクトの実装の詳細は、「ディメンション・オブジェクトのリレーショナル実装」を参照してください。バインドの実行の詳細は、「バインド」を参照してください。
バインドを実行した後は、ディメンション・オブジェクトを配布します。ディメンション・オブジェクトを配布する前に、すべての実装オブジェクトが配布されていることを確認します。ディメンションの場合、これには、ディメンション・レベルのサロゲート識別子の生成に使用される順序が含まれます。または、実装オブジェクトをディメンション・オブジェクトと同時に配布することもできます。
ディメンション・オブジェクトを配布した後は、マッピングを作成して、ディメンション・オブジェクトにデータをロードします。マッピング・エディタを使用して、ソース・オブジェクトからディメンション・オブジェクトにデータをロードするマッピングを作成します。作成後、このマッピングを配布し、実行します。
ディメンションのロードの詳細は、「ターゲットとしてのディメンション演算子」を参照してください。キューブのロードの詳細は、「キューブ演算子」を参照してください。
ディメンションは、データを編成する構造です。一般的に使用されるディメンションの例には、顧客、時間および製品があります。
リレーショナル・ディメンションの場合は、ディメンションの使用によって、問合せパフォーマンスが向上します。これは、ユーザーが既知の階層をドリルダウンしてデータを分析することがよくあるためです。階層の例には、年、四半期、月、日という時間階層があります。Oracleデータベースでは、詳細表ではなくマテリアライズド・ビューからデータを取り出す問合せをリライトして、これらの定義済階層を使用します。
一般的なリレーショナル・ディメンション表には、次の特徴があります。
ウェアハウス・キーと呼ばれる、値が移入された単一列の主キーがあります。
ウェアハウス・キーは、ディメンションを管理し、ディメンション履歴を保持する技術をサポートし、キューブのサイズを削減します。
ディメンション・オブジェクトとして明示的に定義された1つ以上の階層があります。階層によって、Oracleサーバーによる問合せリライトの数が最大化されます。
Warehouse Builderを使用してディメンション・オブジェクトを作成するときは、該当するディメンションが次のルールに従っている必要があります。
ディメンションには、サロゲート識別子とビジネス識別子が必要です。
サロゲート識別子を構成できるのは、1つの属性のみです。ただし、ビジネス識別子は複数の属性で構成できます。
各ディメンション・レベルには、少なくとも1つの属性が必要です。
ディメンション属性は、サロゲート識別子、ビジネス識別子、親識別子または通常の属性のいずれかです。
同時に、通常の属性は、有効日、有効期限、またはトリガー属性のいずれか1つのロールを担当できます。
リレーショナル実装またはROLAP実装を使用するディメンションには、少なくとも1つのレベルが必要です。
リレーショナル実装またはROLAP実装を使用するディメンションを実装するすべてのデータベース表またはビューには、LONG
、LONG RAW
またはNCLOB
列が1つのみ必要です。
リレーショナル実装またはROLAP実装を使用するディメンションの場合は、すべてのレベル属性が、データベース表またはビューにのみバインドされている必要があります。
リレーショナル実装またはROLAP実装を使用するディメンションは、ディメンション・キー属性のロードに使用される順序に関連付けられている必要があります。
リレーショナル実装またはROLAP実装を使用するディメンションのディメンション・キー属性は、表の主キーにバインドされている必要があります。
タイプ2の緩やかに変化するディメンション(SCD)には、有効日、有効期限、および少なくとも1つのトリガー属性が必要です。
タイプ3の緩やかに変化するディメンション(SCD)には、有効日、有効期限、および少なくとも1つのトリガー属性が必要です。
ROLAP実装を使用するディメンションの場合、基礎となる表のレポート時またはOLAPカタログへの配布時に、各種ディメンション構造に関連した影響や制限があります。ディメンションを正常に配布できても、Oracle Discovererなどの他のアプリケーションがOLAPカタログにアクセスするときにエラーが発生する可能性があります。
この制限の影響を受ける事項は次のとおりです。
レポート作成ツールは、ユーザーが取得したディメンション・メタデータのあらゆる側面のメタデータを保持しているわけではありません。したがって、このメタデータを問合せ/レポートに取り込む必要があります。そうしないと、実装表にデータを移入する方法が原因で、不完全な情報が表示されます。
ディメンションおよびキューブの実装表には負のキー値を含む解決済の行が格納されます。この行は、問合せまたはレポートでフィルタできます。問合せまたはレポートを作成するときに、ディメンション自体ではなく、ディメンションに関連付けられたビューを使用します。ディメンションにはそれぞれビューが関連付けられています。ビュー名は、ディメンションまたはキューブの構成プロパティ「ビュー名」で指定します。
スキップレベル階層と不規則階層のメタデータはOLAPカタログに配布されません。
スキップレベル階層または不規則階層が含まれたディメンションを作成した場合、それらのメタデータはWarehouse Builderリポジトリに格納されますが、OLAPカタログには配布されません。
複数の階層を持つディメンションには、すべての階層にわたってすべてのディメンション属性をマッピングする必要があります。
ディメンションは、一連のレベルと、これらのレベルに定義されている一連の階層で構成されます。ディメンションを作成するには、次の内容を定義する必要があります。
ディメンション属性
レベル
レベル属性
階層
ディメンション属性は、ディメンション・メンバーの記述特性です。ディメンション属性には、名前とデータ型があり、ディメンション内の1つ以上のレベルに適用できます。これらは、データを格納するためのレベル属性として実装されます。
Warehouse Builderでは、ディメンションを定義するときにディメンション属性を定義します。ディメンション属性のリストには、ディメンションのすべてのレベルで必要となる可能性があるすべての属性を含める必要があります。ディメンション属性は、Discovererおよび他のOLAPツールで参照可能な唯一の属性です。
たとえば、Productsディメンションには、説明というディメンション属性があります。この属性は、すべてのレベルのTotal、GroupsおよびProductに適用でき、その中には、これらのレベルの各メンバーに対する説明が格納されます。
ディメンションのレベルは、データの集計レベルを表します。ディメンションには、少なくとも1つのレベルが含まれている必要があります。ただし、値ベース階層が含まれるディメンションは除きます。各レベルには、レベル属性およびレベル識別子が必要です。
たとえば、Productsディメンションには、 Total、GroupsおよびProductのレベルを設定できます。
サロゲート識別子、ビジネス識別子および親識別子
各レベルには、サロゲート識別子とビジネス識別子の2つの識別子が必要です。ディメンションを作成するときは、そのディメンションのサロゲート識別子およびビジネス識別子(複合ビジネス識別子の場合は属性)としてマーク付けされたディメンション属性が、各レベルで実装される必要があります。
サロゲート識別子は、ディメンションのすべてのレベルにまたがって、各レベルのレコードを一意に識別します。この識別子は、単一の属性で構成する必要があります。サロゲート識別子を使用すると、ファクトを最下位ディメンション・レベルのみでなく、どのディメンション・レベルにもフックできます。
リレーショナル実装またはROLAP実装を使用しているディメンションの場合、サロゲート識別子のデータ型はNUMBER
であることが必要です。サロゲート識別子の値は、すべてのディメンション・レベルにまたがって一意である必要があるため、すべてのディメンション・レベルのサロゲート識別子を生成するには、同じ順序を使用します。
リレーショナル実装の場合、サロゲート識別子は次の目的を果します。
子レベルが親レベルとは別の表に格納されている場合、各子レベルのレコードには、親レコードのサロゲート識別子が格納されます。
ファクト表の各キューブ・レコードには、参照先のディメンション・レコードのサロゲート識別子のみが格納されます。サロゲート識別子を格納することによって、キューブを実装するファクト表のサイズが削減されます。
ビジネス識別子はユーザーが選択する属性リストで構成されます。ビジネス識別子は、特定のレベルで一意であることが必要であり、常にデータ・ソースの自然キーから導出されます。ビジネス識別子はメンバーを一意に識別します。たとえば、Productレベルのビジネス識別子として統一商品コード(UPC)を使用できます。UPCは、各商品に対応する一意のコードです。
注意: MOLAP実装を保持するディメンションの場合、ビジネス識別子は単一の属性のみで構成できます。 |
ビジネス識別子は、次のように機能します。
ビジネス期間のレコードを識別します。
ファクトとディメンション間または2つのレベル間の論理的なリンクを提供します。
サロゲート・キーを参照可能にします。
ディメンションに子レベルを移入する場合は、その親レベルのビジネス識別子を指定する必要があります。キューブを移入する場合は、そのキューブが参照するディメンション・レベルのビジネス識別子を指定する必要があります。
親識別子を使用して、値ベース階層で親参照に注釈を付けます。値ベース階層の詳細は、「値ベース階層」を参照してください。
たとえば、値ベース階層のEMPLOYEE
ディメンションに、ID
、FIRST_NAME
、LAST_NAME
、EMAIL
、PHONE
、JOB_ID
、HIRE_DATE
およびMANAGER_ID
のディメンション属性があるとします。このディメンションでは、IDがサロゲート識別子で、MANAGER_ID
が親識別子です。
レベル属性とはレベル・メンバーを説明する特性です。ディメンションの各レベルには一連のレベル属性があります。レベル属性を定義するには、そのレベルで実装するディメンション属性を選択します。レベル属性には個別名とデータ型があります。データ型は、そのレベル属性に実装されているディメンション属性から継承されます。レベル属性の名前は、実装されているディメンション属性の名前とは異なる名前に変更できます。
すべてのレベルは、一連のディメンション属性のサロゲート識別子およびビジネス識別子としてマークされた属性を実装する必要があります。
ディメンション階層は、データの編成方法として、順序付けされたレベルまたは一連のデータ値(値ベース階層の場合)を使用する論理構造です。階層構造は一連のレベルの親子関係を説明します。レベル・ベース階層には少なくとも1つのレベルが必要です。複数の階層の一部を1つのレベルにできます。
たとえば、時間ディメンションには次の2つの階層が指定されます。
会計階層: 会計年度 > 会計年度四半期 > 会計年度月 > 会計年度週 > 日
カレンダ階層: カレンダ年 > カレンダ四半期 > カレンダ月 > 日
すべての階層は、完全な1対nの関係になります。親レベルの1つのレコードは子レベルの複数のレコードに対応します。一方、子レベルの1つのレコードは階層内で1つの親レコードにのみ対応します。
ディメンション・ロールとはディメンションの別名です。データ・ウェアハウスでは、キューブが同じディメンションを複数回参照する場合、参照する都度そのディメンションを格納する必要はありません。同じディメンションに対する複数回の参照は混乱の原因となります。そこで、ディメンションを参照するたびに別名を作成することで、結合を瞬時に理解できるようになります。このような場合は、同じディメンションがキューブ内の異なるディメンション・ロールを実行します。
たとえば、売上レコードには次の3つの時間値があります。
受注記帳時間
受注出荷時間
受注履行時間
3つの時間ディメンションを作成し、それらのディメンションにデータを移入するかわりに、ディメンション・ロールを使用できます。1つの時間ディメンションのモデルを作成し、そのディメンションに3つのロール(受注記帳時間、受注出荷時間、受注履行時間)を作成します。売上キューブでは、受注時間、出荷時間および受注履行時間のディメンションを参照できます。
ディメンションがデータベースに格納される場合は、1つのディメンションのみが作成され、各ディメンション・ロールがこのディメンションを参照します。一方、ディメンションがOLAPカタログに格納される場合は、各ディメンション・ロールに対して1つのディメンションが作成されます。したがって、時間ディメンションに3つのロールがある場合、OLAPカタログには3つのディメンションが作成されます。ただし、3つのディメンションはすべて同一の基礎となる表にマッピングされます。これは、OLAPカタログがディメンション・ロールをサポートしていないための対策です。
注意: ディメンション・ロールは、リレーショナル実装を持つディメンションに対してのみ作成できます。 |
レベルの関係とは、ディメンション階層内のレベル間のアソシエーションです。レベルの関係は、階層内の親レベルへの参照を格納するレベル属性を使用して実装されます。
たとえば、 Productsディメンションに「Total > Groups > Product」という階層があるとします。Warehouse Builderでは、2つのレベルの関係(Product to Groups、Groups to Total)が作成されます。2つの新しい属性には、このレベルの関係(Productレベルでの関係とGroupsレベルでの関係)が実装されます。これらの属性には、親レベルのサロゲートIDが格納されます。
ディメンションの一例として、製品データの編成に使用するProductsディメンションを示します。表14-1に、PRODUCTS
ディメンションの各レベルと、ディメンション内の各レベルのサロゲート識別子とビジネス識別子をリストします。
表14-1 Productsディメンション・レベルの詳細
レベル | 属性名 | 識別子 |
---|---|---|
Total |
ID |
サロゲート |
名前 |
ビジネス |
|
説明 |
||
Groups |
ID |
サロゲート |
名前 |
ビジネス |
|
説明 |
||
Product |
ID |
サロゲート |
UPC |
ビジネス |
|
名前 |
||
説明 |
||
パッケージ・タイプ |
||
パッケージ・サイズ |
PRODUCTS
ディメンションの階層は、次のとおりです。
階層1: Total > Groups > Product
Warehouse Builderにより、ファクト・データを各レベルのディメンションにリンクできるコントロール行が作成されます。たとえば、時間ディメンションを2つの異なるキューブで再利用して、予算データを月レベルで記録し、実際のデータを日レベルで記録する場合などです。ディメンションはコントロール行と一緒にロードされるため、追加定義をすることなくこれを実行できます。ディメンション階層の各メンバーは、単一のレコードを使用して表示されます。
すべての制御行には-2から始まる負のディメンション・キー値があります。上位レベルのレベル値では行が生成され、ファクト表に対して一意でリンクする行として動作できます。このリンクの下位レベルまたは制御行は無効化されます。
「ディメンションの例」で説明されているProductsディメンションを考慮します。4つの製品カテゴリを含む表からデータをこのディメンションにロードします。Warehouse Builderは表14-2に示されるディメンションに制御行を挿入します。これらの行により、どのディメンション・レベルでもキューブにリンクできます。表にはすべてのディメンション属性値が含まれるわけではありません。
表14-2 Productsディメンションに作成された制御行
ディメンション・キー | 合計名 | カテゴリ名 | 製品名 |
---|---|---|---|
-3 |
TOTAL |
||
-9 |
TOTAL |
ハードウェア |
|
-10 |
TOTAL |
ソフトウェア |
|
-11 |
TOTAL |
エレクトロニクス |
|
-12 |
TOTAL |
周辺機器 |
ディメンション内の行の実数を取得するには、NULL行を除いたWHERE
句を含む行の数を数えます。たとえば、「製品」上の数を取得するには、「製品」内のNULL行を除いたWHERE
句を含む行の数を数えます。
値ベース階層は、階層の関係が親ディメンション属性と子ディメンション属性によって定義されているディメンションです。これは、この章で階層と呼ばれている、階層の関係が各レベル間で定義されているレベル・ベース階層とは異なります。
親子関係を意味のあるレベルとして分類できない場合は、値ベース階層を作成します。値ベース階層にはレベルがありません。ディメンション属性を作成する場合は、親属性となるディメンション属性を指定する必要があります。
たとえば、ID
、FIRST_NAME
、LAST_NAME
、EMAIL
、PHONE
、JOB_ID
、HIRE_DATE
、DESCRIPTION
およびMANAGER_ID
のディメンション属性を持つEMPLOYEE
ディメンションがあるとします。このディメンションには、MANAGER_ID
属性で各従業員のマネージャを識別する親子関係があります。しかし、これらの関係では、組織全体として意味のあるレベルを形成できません。これは、従業員とCEOの間のレベル数が、従業員全体で同じにならないためです。従業員AとCEOの間には4つのレベルがあり、従業員BとCEOの間には6つのレベルがある可能性があります。このような場合は、MANAGER_ID
を親識別子として保持する値ベース階層を作成します。
値ベース階層はデータ・オブジェクト・エディタのみを使用して作成できます。親属性の指定に関する詳細は、「「属性」タブ」を参照してください。
注意: 値ベース階層は、MOLAP実装を使用するディメンションでのみ作成できます。 |
ディメンションの実装は、ディメンションとそのデータが物理的に格納される方法の指定で構成されます。リレーショナル実装、ROLAP実装またはMOLAP実装のいずれかの実装を選択できます。実装方法の設定に関する詳細は、「ディメンション・オブジェクトの実装」を参照してください。
ディメンション・データをリレーショナル形式で保存する場合は、次の方法のいずれかを使用してディメンションを実装できます。
スター・スキーマ実装では、ディメンション・データは単一の表に格納されます。同じ表またはビューに複数のディメンション・レベルのデータが格納されるため、表にディメンション・キーの列を指定する必要があります。ディメンション・キーの列は、ディメンションの主キーです。この列はキューブの外部キー参照も形成します。
各レベルには、ディメンション属性のサブセットが実装されます。デフォルトでは、レベル属性の名前はディメンション属性の名前と同じです。スター表の名前の指定には、すべてのレベルのデータが同じ表に格納されることで生じる名前の衝突を回避するために、次のガイドラインが使用されます。
レベル属性の名前が一意でない場合は、レベル名に接頭辞が付きます。
レベル属性の名前が一意の場合、接頭辞は使用されません。
注意: 接頭辞が使用されないようにするには、ディメンションの作成ウィザードまたはデータ・オブジェクト・エディタで、レベル属性の名前を明示的に変更する必要があります。 |
たとえば、スター・スキーマを使用してProductsディメンションを実装する場合、Warehouse Builderは単一の表を使用し、ディメンションにすべてのレベルを実装します。
図14-2は、Productsディメンションのスター・スキーマ実装を示しています。すべてのレベルの属性が、PRODUCTS
という1つの表のそれぞれの列にマッピングされています。DIMENSION_KEY
という列に、ディメンションのサロゲートIDが格納されています。この列は表の主キーです。
スター・スキーマ実装を使用するリレーショナル・ディメンションまたはROLAPディメンションでは、1つ以上のレベルから同じデータベース列に属性をバインドできます。1つ以上のディメンション・レベルから属性がバインドされたデータベース列は、共有列と呼ばれます。タイプ2のSCDでは、トリガー属性として共有列にバインドされるレベル属性を設定できません。
スノーフレーク・スキーマ実装では、複数の表を使用してディメンション・データが格納されます。個別のデータベース表またはビューに、ディメンションの各レベルに関するデータが格納されます。
図14-3に、PRODUCTS
ディメンションのスノーフレーク実装を示します。ディメンションの各レベルは異なる表にマップされます。
バインドを実行する場合は、各属性のデータおよびディメンション内のレベルの関係を格納するデータベース列を指定します。ディメンションに対して自動バインドまたは手動バインドを実行できます。バインドの詳細は、「バインド」を参照してください。
自動バインド: 自動バインドを実行すると、ディメンション・オブジェクトの属性がそのデータを格納するデータベース列にバインドされます。自動バインドを初めて実行する場合は、ディメンション・データの格納に使用される表も作成されます。
すでにバインド済のディメンションに対して自動バインドを実行する場合は、次のルールが使用されます。
ディメンションの実装方法が同じ場合、ディメンション・オブジェクトは既存の実装オブジェクトに再バインドされます。実装方法はスターまたはスノーフレークを使用できます。実装方法の詳細は、「ディメンションのリレーショナルおよびROLAP実装」を参照してください。
たとえば、スター・スキーマ実装方法を使用してProductsディメンションを作成し、自動バインドを実行したとします。ディメンション・データはProductsと呼ばれる表に格納されます。後日、ディメンション定義を変更しましたが、実装方法はスターのままです。この状況でProductsディメンションを自動バインドすると、Productsディメンションの属性は同じ実装表に再バインドされます。
ディメンションの実装方法を変更すると、古い実装オブジェクトが削除され、一連の新しい実装表が作成されます。古い実装オブジェクトを保持する場合は、自動バインドを実行する前に、ディメンション・オブジェクトをアンバインドする必要があります。実装方法の詳細は、「ディメンションのリレーショナルおよびROLAP実装」を参照してください。
たとえば、スター・スキーマ実装方法を使用してProductsディメンションを作成し、それを実装表にバインドしたとします。その後、このディメンションを編集し、実装方法をスノーフレークに変更しました。変更したProductsディメンションの自動バインドを実行すると、ディメンション・データが格納されていた表は削除され、新しい実装表が作成されて、ディメンション属性および関係が新しい実装表にバインドされます。
自動バインドの実行方法の詳細は、「自動バインド」を参照してください。自動バインドでは、「ディメンションのリレーショナルおよびROLAP実装」で説明している実装設定を使用します。
手動バインド: 通常は、手動バインドを使用して既存の表をディメンションにバインドします。自動バインドまたは再バインドが不要な場合は、手動バインドを使用します。
手動バインドの実行方法の詳細は、「手動バインド」を参照してください。
ディメンションがMOLAP環境に実装されている場合、ディメンション定義とデータはアナリティック・ワークスペースに格納されます。格納する際は、ディメンション、関係などのアナリティック・ワークスペース・オブジェクトが使用されます。同じアナリティック・ワークスペースには複数のキューブを格納できます。MOLAP実装の詳細は、「ディメンション・オブジェクトのMOLAP実装」を参照してください。
緩やかに変化するディメンション(SCD)は、現行データと履歴データの両方を一定期間にわたってデータ・ウェアハウスで保存および管理するディメンションです。データ・ウェアハウスでは、一般に認知されている3種類のSCDタイプがあります。
適切なライセンスでWarehouse Builderを使用すると、3種類のSCDタイプすべてを定義、配布およびロードできます。穏やかに変化するディメンションは、リレーショナル実装を使用するディメンションに対してのみ作成できます。
注意: タイプ1に追加ライセンスは不要です。ただし、タイプ2とタイプ3のSCDには、Oracle Databaseライセンス情報で説明されているWarehouse BuilderのEnterprise ETLオプションが必要です。 |
表14-3に、3つのタイプのSCDを示します。
表14-3 緩やかに変化するディメンションのタイプ
タイプ | 用途 | 説明 | 履歴データの保持 |
---|---|---|---|
タイプ1 |
上書き |
単一バージョンのディメンション・レコードのみが存在します。変更時に、レコードは上書きされ、履歴データは保存されません。 |
いいえ |
タイプ2 |
新バージョンのディメンション・レコードの作成 |
同じディメンション・レコードの複数のバージョンが存在し、変更時に新バージョンが作成されても、旧バージョンは保持されます。 |
はい |
タイプ3 |
現行値フィールドの作成 |
単一バージョンのディメンション・レコードが存在します。このレコードには、選択した属性について元の値と現行値が保存されます。 |
はい |
タイプ2またはタイプ3のSCDを作成するには、通常のディメンション属性に加え、次のロールを実行する追加属性が必要です。
トリガー属性: これらは履歴値を格納する必要がある属性です。たとえば、PRODUCTS
ディメンションでは、Productレベルの属性PACKAGE_TYPE
をトリガー属性にできます。これは、この属性の値を変更するときに、古い値を保存する必要があることを意味します。
有効日: この属性には、レコードの有効期間の開始日を格納します。
有効期限: この属性には、レコードの有効期間の終了日を格納します。
属性は前述のいずれか1つの役割のみを担当できます。たとえば、1つの属性が通常の属性と有効日属性の両方にはなりません。ウィザードを使用してタイプ2またはタイプ3のSCDを作成する場合は、必要な追加属性が作成されます。
タイプ1の緩やかに変化するディメンション(SCD)では、新しいデータで既存のデータが上書きされます。通常、このタイプはSCDとはみなされず、ほとんどのディメンションがこのタイプに該当します。したがって、既存のデータは他のどこにも格納されずに失われます。これはユーザーが作成するディメンションのデフォルトのタイプです。タイプ1のSCDを作成するために追加情報を指定する必要はありません。ビジネス上の特定の理由がないかぎり、タイプ1のSCDで十分と考えられます。タイプ1のSCDの定義方法と実装方法の詳細は、次の各項を参照してください。
タイプ2の緩やかに変化するディメンション(SCD)には、値の完全な履歴が保持されます。トリガー属性の値が変更されると、カレント・レコードはクローズされます。変更されたデータ値で新しいレコードが作成され、この新しいレコードがカレント・レコードになります。各レコードには、レコードがアクティブであった期間を識別する有効日と有効期限があります。NULL以外の特定の日付値を有効期限として設定することもできます。カレント・レコードは、有効期限がNULL値または以前に指定した値のレコードです。
ディメンションのすべてのレベルに履歴データを格納する必要はありません。通常は、最下位レベルのみがバージョン管理されます。
注意: 履歴データを格納していないディメンションのすべてのレベルが問合せツールに与える影響を確認してください。 |
タイプ2の緩やかに変化するディメンション(SCD)を定義する手順は、次のとおりです。
履歴データを格納するレベルに対して、有効日と有効期限として使用する属性を指定します。
履歴のバージョンの作成をトリガーするレベル属性を選択します。
サロゲートID、有効日属性または有効期限属性は、トリガー属性として選択できません。
レコードの各バージョンに異なるサロゲート識別子が割り当てられます。ビジネスIDは、論理的な意味で異なるバージョンを一緒に接続します。通常は、ビジネス・ニーズがある場合にタイプ2のSCDが使用されます。
タイプ2のSCDの例
Customers
のタイプ2のSCDに、HouseholdおよびCustomerという2つのレベルがあると想定します。表14-4に、Customers
のタイプ2のSCDのレベル属性がリストされています。
表14-4 Customersのタイプ2のSCD属性
属性名 | 識別子 |
---|---|
|
サロゲート識別子 |
|
ビジネス識別子 |
|
|
|
|
|
|
|
|
|
有効日 |
|
有効期限 |
Customerはリーフ・レベルで、Householdは非リーフ・レベルです。
Householdレベルでは、ID
、BUSN_ID
、ADDRESS
、ZIP
、EFFECTIVE_DATE
およびEXPIRATION_DATE
という属性が実装されています。Customerレベルでは、ID
、BUSN_ID
、MARITAL_STATUS
、HOME_PHONE
、EFFECTIVE_DATE
およびEXPIRATION_DATE
という属性が実装されています。このタイプ2のSCD(リレーショナル実装用またはROLAP実装用)を実装する表には、DIMENSION_KEY
、H_ID
、H_BUSN_ID
、H_ADDRESS
、H_ZIP
、H_EFFECTIVE_DATE
、H_EXPIRATION_DATE
、C_ID
、C_BUSN_ID
、C_MARITAL_STATUS
、C_HOME_PHONE
、C_EFFECTIVE_DATE
およびC_EXPIRATION_DATE
という列があります。
CUSTOMERS
のタイプ2のSCDを作成する手順は、次のとおりです。
HouseholdレベルのZIP
属性およびCustomerレベルのMARITAL_STATUS
属性をトリガー属性として指定します。
2つの追加属性を使用して、そのレベルのレコードの有効日と有効期限を格納します。ディメンションの作成ウィザードを使用すると、これらの追加属性は最下位レベルに対してのみ作成されます。データ・オブジェクト・エディタを使用する場合は、これらの属性を明示的に作成して、その属性を該当するレベルに適用する必要があります。
注意: タイプ2のSCDをロードする際、ターゲットがOracle 9iデータベースの場合は、行ベース・モードしかサポートされません。問題を回避するには、親サロゲートID参照属性をすべてのレベルに対するトリガーとして設定して、階層バージョニングをオンにします。 |
ディメンションの非リーフ・レベルにバージョン管理する属性がある場合は、この非リーフ・レベルのバージョンは、結果的に、対応する子レコードのバージョンとなります(子レコードに有効日属性および有効期限属性がある場合)。たとえば、H_ZIP
の値が特定のHouseholdレベル・レコードで更新された場合は、このHouseholdレベルに対応する子レコードは自動的にバージョン管理されます。
階層バージョニングは、タイプ2のSCDのデフォルトでは有効ではありません。ディメンションの作成ウィザードを使用してタイプ2のSCDを作成する場合は、階層バージョニングは無効になります。階層バージョニングを有効にするには、データ・オブジェクト・エディタを使用する必要があります。
階層バージョニングを有効にする手順は、次のとおりです。
プロジェクト・エクスプローラでタイプ2 SCDを右クリックし、「エディタを開く」を選択します。
データ・オブジェクト・エディタが表示されます。
「SCD」タブにナビゲートします。
「タイプ2: 変更履歴をすべて格納」オプションの右側の「設定」をクリックします。
「タイプ2緩やかに変化するディメンション」ダイアログ・ボックスが表示されます。各レベルの属性が「レベル」ノードの下に表示されます。
親属性が変更された場合にバージョン管理される必要のある子レベルでは、子レベルの親属性を表す属性に対して、「レコード履歴」列内の「トリガー履歴」を選択します。
たとえば、ディメンションの作成ウィザードを使用してCustomers
のタイプ2のSCDを作成します。手順1から3の説明に従って、タイプ2のSCDのデータ・オブジェクト・エディタを開き、「タイプ2緩やかに変化するディメンション」ダイアログ・ボックスにナビゲートします。Customer
レベルにはHOUSEHOLD_ID
という属性があります。この属性は、各Customer
レコードの親属性を表します。HOUSEHOLD_ID
属性に対して、「レコード履歴」列の「トリガー履歴」を選択します。
ディメンション内のすべてのレベルで、履歴データを格納する必要がありません。通常、最下位レベル(リーフ・レベルとも呼ばれます)でのみ、履歴データが格納されます。ただし、他のディメンション・レベルの履歴データを格納することもできます。
タイプ2のSCDのレコードがバージョン管理されている場合は、古いレコードはクローズ済としてマーク付けされ、更新された値で新規レコードが作成されます。レコードの有効期限は、古いレコードがクローズ済であることを示すように設定されます。新規レコードは現行のレコードとみなされ、デフォルトでは、デフォルトの有効期限としてNULLが設定されています。タイプ2のSCDにデータをロードしている間、ディメンション演算子の構成パラメータを使用して有効期限を設定できます。詳細は「ディメンション演算子」を参照してください。
タイプ2のSCD内の次の属性を更新できます。
リーフ・レベル属性
リーフ・レベルのバージョン管理する属性
非リーフ・レベル属性
非リーフ・レベルのバージョン管理する属性
リーフ・レベルの親属性
次の項では、これらの更新操作のためのWarehouse Builderの機能について説明します。
リーフ・レベル属性の更新
リーフ・レベル属性を更新する場合は、この属性の値が対応するレコード内で更新されます。
たとえば、Customer
レベル・レコードのC_HOME_PHONE
の値を更新する場合は、変更された電話番号でレコードが更新されます。
リーフ・レベルのバージョン管理する属性の更新
リーフ・レベルのバージョン管理する属性を更新する場合は、現行のレコードがクローズ済としてマーク付けされます。バージョン管理する属性の更新された値を使用して新規レコードが作成されます。
たとえば、顧客の婚姻区分を更新する場合は、現行のレコードがクローズ済としてマーク付けされます。その顧客に対して新規レコードが作成され、婚姻区分が更新されます。
非リーフ・レベル属性の更新
非リーフ・レベル属性を更新する場合は、非リーフ・レベルのオープン・レコードおよびこの非リーフ・レベルに対応する子レコードが新しい値に使用して更新されます。
たとえば、Household
レベル・レコードのH_ADDRESS
属性を更新する場合は、そのハウスホールドの現行のオープン・レコードが更新されます。その特定のハウスホールドに対応するすべてのオープン子レコードも更新されます。
非リーフ・レベルのバージョン管理する属性の更新
更新機能は、階層バージョニングが有効か無効かによって異なります。
階層バージョニングが無効な場合
バージョン管理する属性に対応する非リーフ・レベル・レコードはクローズされ、更新された値を使用して新規レコードが作成されます。この非リーフ・レベル・レコードの子レコードは、非リーフ・レベルのバージョン管理する属性の変更された値を使用して更新されます。
たとえば、Household
レベル・レコードのH_ZIP
の値が更新される場合は、このハウスホールドの現行のオープン・レコードがクローズされます。H_ZIP
の更新された値を使用して新規レコードが作成されます。H_ZIP
の値は、更新されたハウスホールドのレコードに対応するすべての子レコードで更新されます。
階層バージョニングが有効な場合
バージョン管理する属性に対応する非リーフ・レベル・レコードはクローズされ、新規レコードが作成されて値が更新されます。この非リーフ・レベル・レコードに対応する子レコードもクローズされ、新規の子レコードが作成されて値が更新されます。たとえば、Household
レベル・レコード内のH_ZIP
の値が更新される場合、そのハウスホールドの現行のオープン・レコードおよび対応する子レコードはクローズされます。このハウスホールドおよびこのハウスホールドに対応する子レコードに対し、新規レコードが作成されて値が更新されます。
リーフ・レベルの親属性の更新
タイプ2のSCD内のレベル属性の更新に加えて、子レコードの親属性も更新できます。Customers
のタイプ2のSCD内で、Customer
レコード内の属性H_BUSN_ID
によりその顧客の親属性が格納されます。リーフ・レベルの親属性に対する更新機能は、階層バージョニングが有効であるかまたは無効であるかによって異なります。
階層バージョニングが無効な場合
子レコードは、新規の親属性値に更新されます。
たとえば、Customer
レコードの親レコードを表すH_BUSN_ID
属性の値を更新すると、Customer
レコードは新規の親属性値に更新されます。
階層バージョニングが有効な場合
子レコードはクローズされ、変更された親属性値を持つ新規レコードが作成されます。
たとえば、CustomerレコードのH_BUSN_ID
属性を更新した場合は、現行のCustomerレコードがクローズされます。新規のCustomerレコードが作成されてH_BUSN_ID
が更新されます。
タイプ3の緩やかに変化するディメンション(SCD)には、選択した特定のレベル属性の値について2つのバージョンが格納されます。各レコードには、バージョン管理された属性について元の値と現行の値が格納されます。バージョン管理されたいずれかの属性の値が変更されると、現行の値は古い値として格納され、新しい値が現行の値となります。各レコードには、現在の値がアクティブになった日付を識別する有効日が格納されます。これにより、バージョン管理された属性の列数は2倍になるため、タイプ3のSCDはほとんど使用されません。
タイプ3の緩やかに変化するディメンション(SCD)を定義する手順は、次のとおりです。
各レベルについて、バージョン管理する属性を指定します。つまり、現行の値と同様に元の値を格納する属性を指定します。
バージョン管理する各属性について、元の値を格納する属性を指定します。
元の値を保持する属性には、次の制約があります。
元の値として指定された属性は、その値よりもさらに前の値は保持できません。
サロゲートIDは元の値を保持できません。
バージョン管理する各レベルについて、有効日を格納する属性を指定します。
タイプ3のSCDのビジネス識別子には、元の値の属性を指定しないことをお薦めします。
タイプ3のSCDの例
「ディメンションの例」に記載されているPRODUCTS
ディメンションは、タイプ3のSCDとして作成できます。ProductレベルのPACKAGE_TYPE
属性とPACKAGE_SIZE
属性をバージョン管理します。Productレベルで、元の値を格納するPREV_PACK_SIZE
とPREV_PACK_TYPE
という2つの追加属性を定義します。PACKAGE_TYPE
属性の値が変更されると、この属性の現行の値がPREV_PACK_TYPE
属性に格納され、新しい値がPACKAGE_TYPE
属性に格納されることになります。有効日属性は、現在のシステム日付または他の指定した日に設定できます。
時間ディメンションは、時間的なデータを格納するディメンションです。時間ディメンションはデータ・ウェアハウスで広く使用されます。Warehouse Builderでは、時間ディメンションを作成および移入できます。会計およびカレンダの両方の時間ディメンションを作成できます。
ウィザードを使用して時間ディメンションを作成すると、時間ディメンションの移入を実行するマッピングが作成されます。時間ディメンションにロードされたデータは、時間ディメンションについてWarehouse Builderが推奨するベスト・プラクティスに準拠します。
この項の内容は次のとおりです。
Warehouse Builderには、時間ディメンションを作成するアクセラレータが用意されています。また、時間ディメンションを定義するためのベスト・プラクティスとして一連のルールが指定されています。時間ディメンションの作成ウィザードを使用して時間ディメンションを作成する場合は、これらのルールが順守されます。
ルールは、次のとおりです。
時間ディメンションには、Warehouse Builderによって指定された定義済のレベルのサブセットのみを指定できます。
時間ディメンションの各レベルには、期間と終了日の属性が必要です。
時間ディメンションは1つ以上の階層を保持できます。各階層は会計階層またはカレンダ階層になります。
時間ディメンションをOLAPカタログに配布する場合は、レベルに関連する期間と終了日の記述子を、ディメンションとそのレベルにアタッチする必要があります。時間ディメンションの作成ウィザードを使用して時間ディメンションを作成すると、Warehouse Builderによってこの処理が実行されます。
これらのルールではユーザーのビジネス環境に対して制限が多すぎる場合は、データ・オブジェクト・エディタで時間属性を設定し、独自の時間ディメンションを作成できます。データ・オブジェクト・エディタを使用して時間ディメンションを作成する場合は、記述子を設定してください。
時間ディメンションは、一連のレベルとこれらのレベルに定義される一連の階層で構成されます。ディメンション・ロールは時間ディメンションで広く使用されます。ディメンション・ロールの詳細は、「ディメンション・ロール」を参照してください。時間ディメンションを作成するには、次の要素を定義する必要があります。
レベル
ディメンション属性
レベル属性
階層
レベルはデータの集計レベルを表します。時間ディメンションには少なくとも2つのレベルが必要です。時間ディメンションには1つのレベルを1回のみ使用できます。たとえば、時間ディメンションにはカレンダ月レベルを1つのみ指定できます。各レベルには、サロゲート識別子とビジネス識別子が必要です。サロゲート識別子はIDレベルの属性であることが必要です。
Warehouse Builderの時間ディメンションには、次のレベルのサブセットのみを指定できます。
日
会計年度週
カレンダ週
会計年度月
カレンダ月
会計年度四半期
カレンダ四半期
会計年度
カレンダ年
ディメンション属性は、時間ディメンションの複数のレベルで実装される属性です。表14-5に、Warehouse Builder時間ディメンションのディメンション属性について示します。
レベル属性とはレベル値を説明する特性です。時間ディメンションに実装することを決めたレベルに基づいて、Warehouse Builderにより時間ディメンションのレベル属性が作成されます。
表14-6に、Warehouse Builder時間ディメンションの各レベルの属性をリストします。各属性の説明は、付録Bを参照してください。
表14-6 時間ディメンション・レベルの属性
レベル名 | 属性名 |
---|---|
DAY |
ID、DAY、START_DATE、END_DATE、TIME_SPAN、JULIAN_DATE、DAY_OF_CAL_WEEK、DAY_OF_CAL_MONTH、DAY_OF_ CAL_ QUARTER、DAY_OF_CAL_YEAR、DAY_OF_FISCAL_WEEK、DAY_OF_FISCAL_MONTH、DAY_OF_FISCAL_ QUARTER、DAY_OF_FISCAL_YEAR、DESCRIPTION |
FISCAL WEEK |
ID、WEEK_NUMBER、WEEK_OF_FISCAL_MONTH、WEEK_OF_FISCAL_QUARTER、WEEK_OF_FISCAL_YEAR、START_DATE、END_DATE、TIME_DATE、DESCRIPTION |
CALENDAR WEEK |
ID、START_DATE、END_DATE、TIME_SPAN、DESCRIPTION |
FISCAL MONTH |
ID、MONTH_NUMBER、MONTH_OF_QUARTER、MONTH_OF_YEAR、START_DATE、END_DATE、TIME_SPAN、DESCRIPTION |
CALENDAR MONTH |
ID、MONTH_NUMBER、MONTH_OF_QUARTER、MONTH_OF_YEAR、START DATE、END_DATE、TIME_SPAN、DESCRIPTION |
FISCAL QUARTER |
ID、QUARTER_NUMBER、QUARTER_OF_YEAR、START_DATE、END_DATE、TIME_SPAN、DESCRIPTION |
CALENDAR QUARTER |
ID、QUARTER_NUMBER、QUARTER_OF_YEAR、START_DATE、END_DATE、TIME_SPAN、DESCRIPTION |
FISCAL YEAR |
ID、YESR_NUMBER、START_DATE、END_DATE、TIME_SPAN、DESCRIPTION |
CALENDAR YEAR |
ID、YEAR_NUMBER、START_DATE、END_DATE、TIME_SPAN、DESCRIPTION |
階層とは、順序付けされたレベルを使用してデータを編成する構造です。階層には、時間ディメンションで隣接するレベル間の階層的な関係を定義します。時間ディメンションでは1つ以上の階層を保持できます。各階層は、会計階層またはカレンダ階層のいずれかであることが必要です。単一の時間ディメンションに会計階層とカレンダ階層の両方を含めることはできません。
カレンダ階層 カレンダ階層には、DAY、CALENDAR_WEEK、CALENDAR_MONTH、CALENDAR_QUARTERまたはCALENDAR_YEARレベルの少なくとも2つが指定されている必要があります。
CALENDAR_WEEKからその他のレベルへのドリルアップ・パスはありません。したがって、カレンダ階層にCALENDAR_WEEKレベルが指定されている場合は、CALENDAR_MONTH、CALENDAR_QUARTERまたはCALENDAR_YEARレベルを指定できません。
会計階層 会計階層には、DAY、FISCAL_WEEK、FISCAL_MONTH、FISCAL_QUARTERまたはFISCAL_YEARレベルの少なくとも2つが指定されている必要があります。
会計階層を作成する場合は、次の要素を指定する必要があります。
会計年度の開始月
会計年度の開始日
会計年度週の開始日
時間ディメンションで使用される会計規則
会計規則に選択できるオプションは、次のとおりです。
455: このオプションは、四半期の最初の月が4週間、2番目の月が5週間、3番目の月が5週間で構成されている場合に選択します。
544: このオプションは、四半期の最初の月が5週間、2番目の月が4週間、3番目の月が4週間で構成されている場合に選択します。
時間ディメンションを実装する場合は、時間ディメンションとそのデータの物理的な格納方法を指定する必要があります。時間ディメンション・データは、リレーショナルまたは多次元のいずれかの形式でデータベースに格納できます。
時間ディメンションの実装は、通常のディメンションの実装と同様です。ディメンションの実装に関する詳細は、「ディメンションの実装」を参照してください。
時間ディメンションの作成ウィザードを使用して作成された時間ディメンションでは、属性ID
をサロゲート識別子として使用し、属性CODE
をビジネス識別子として使用します。これらの属性のデータ型はともにNUMBER
です。時間ディメンションを参照するキューブを作成すると、時間ディメンションの最下位レベルのサロゲート識別子とビジネス識別子に関する属性がそのキューブに組み込まれます。これらの属性のデータ型はともにNUMBER
になります。
キューブをロードする場合、Warehouse Builderによって作成された時間ディメンションをソースとして使用する場合、ソース属性とキューブ属性のデータ型は両方ともNUMBER
です。たとえば、PRODUCTS
およびTIME_FISCAL
という2つのディメンションを参照するALL_SALES
というキューブがあるとします。TIME_FISCAL
は、時間ディメンション・ウィザードを使用して作成されたカレンダ時間ディメンションで、年、月および日のレベルがあります。ALL_SALES
キューブをロードするためのマップを作成する場合は、TIME_FISCAL
の日レベルのDAY_CODE
属性を、ALL_SALES
キューブのALL_SALES_DAY_CODE
属性に直接マッピングできます。これらの属性のデータ型はともにNUMBER
です。
時間データがDATE
属性として格納されているソース・オブジェクトからALL_SALES
キューブにデータをロードする例を考えてみます。この場合、ソースからALL_SALES
キューブのALL_SALES_DAY_CODE
属性にDATE
属性を直接マッピングすることはできません。かわりに、マッピングで式演算子を使用して、入力DATE
属性をNUMBER
値に変換してからALL_SALESキューブにロードします。式演算子では、次の式を使用して入力を変換します。
TO_NUMBER(TO_CHAR(input,'YYYYMMDD'))
input
は、ソース・オブジェクトからのDATE
属性を表し、NUMBER
値に変換する必要があります。式演算子の使用方法は、「式演算子」を参照してください。
時間ディメンションは、データを時間ディメンションにロードするマッピングを作成することで移入します。時間ディメンションの作成ウィザードを使用して時間ディメンションを作成すると、時間ディメンションを移入するマッピングが作成されます。時間ディメンションは、次のパラメータの値に基づいて移入されます。
データの開始年
データの年数
会計年度の開始日と開始月(会計時間ディメンションのみ)
会計年度週の開始日(会計時間ディメンションのみ)
会計タイプ(会計時間ディメンションのみ)
これらの属性の値は、時間ディメンションの作成ウィザードを使用して時間ディメンションを作成する時点で初期化されます。これらのパラメータの値は、データ・オブジェクト・エディタを使用して変更できます。カレンダ年の開始日とカレンダ年の年数の値を変更するには、データ・オブジェクト・エディタの「名前」タブを使用します。会計時間ディメンションに関するパラメータの値を変更するには、データ・オブジェクト・エディタの「階層」タブにある「会計の設定」ボタンを使用します。
注意: 時間ディメンションにロードするデータに関するいずれかのパラメータの値を変更する場合は、時間ディメンションをロードするマップを再作成する必要があります。マップの再作成の詳細は、「階層」タブを参照してください。 |
図14-4は、カレンダ時間ディメンションをロードするマッピングを示しています。マッピング入力演算子DATE_INPUTS
は、時間ディメンションを移入するために必要な属性を表します。
ユーザーは、時間ディメンションを複数回移入するマップを実行できます。各実行時に、時間ディメンションの移入に必要な属性を指定します。その際、マッピングの実行が以前の実行とオーバーラップする可能性があります。これは、すでに存在するデータを時間ディメンションにロードしようとしたことを意味します。このような場合、レコードが以前の実行ですでに移入されているときは、データは再度移入されません。
たとえば、最初の実行で、2000年から5年間のデータを使用して時間ディメンションを移入したとします。2回目の実行で、2003年から3年間のデータを使用して時間ディメンションを移入しました。2003年の始めから2004年の終わりまでのレコードは時間ディメンションにすでに存在しているため、これらは再作成されません。
キューブには、メジャーおよび1つ以上のディメンションへのリンクが含まれます。キューブの軸にはディメンション・メンバーが組み込まれ、キューブの本体にはメジャーの値が格納されます。ほとんどのメジャーは加法的なメジャーです。たとえば、売上データは、キューブ・エッジに時間、製品および販促のディメンション値が指定され、キューブ本体にバリュー売上とドル売上のメジャーから値が格納されるキューブに編成できます。
キューブは、外部キー制約によってディメンション表にリンクされます。これらの制約は、データ整合性が最も重要とされるデータ・ウェアハウス環境には不可欠です。この制約によって、データ・ウェアハウスを使用する日常業務での参照整合性が順守されます。
データ分析アプリケーションでは、通常、多くのディメンションにわたってデータが集計されます。これによって、データの変則的または特異なパターンを確認できます。キューブの使用は、この種の操作を実行する最も効率的な方法です。リレーショナル実装で、ウェアハウス・キーが設定されているディメンションを設計する場合、キューブの行の長さは一般的に短くなります。これは、ウェアハウス・キーの長さが対応する本来のデータより短いためです。その結果、キューブ・データに必要な記憶領域は少なくなります。MOLAP実装では、OLAPでVARCHAR2
キーが使用されます。
一般的なキューブには、次の要素が含まれます。
一連の外部キー参照列、またはデータ・リストの場合は人工キーまたは一連のウェアハウス・キー列に定義された主キー。キューブがデータ・リストの場合、外部キー参照列ではキューブの各行は一意に識別されません。
表を対応するディメンションにリンクする一連の外部キー参照列。
キューブは、一連のディメンションにわたって定義されたメジャーの集合で構成されます。キューブを作成するには、次の要素を定義する必要があります。
メジャーとは、調査および分析可能なデータで、通常は加法的な数値になります。メジャーの例としては、売上、原価および収益があります。キューブには、1つ以上のディメンションが必要です。メジャーの集計も可能です。ただし、集計できるのは数値メジャーのみです。
キューブは一連のディメンションで定義されます。キューブはディメンション内で最下位レベル以外のレベルを参照できます。
純粋なリレーショナル実装を使用するキューブでは、ディメンション・ロールによって、複数回同じディメンションを再使用できます。ディメンション・ロールの詳細は、「ディメンション・ロール」を参照してください。
キューブを有効にする前に、キューブが参照するディメンションすべてが有効になっていることを確認してください。
ディメンション参照を定義するには、次の要素を指定します。
キューブが参照するディメンションとディメンション内のレベル。
リレーショナル実装を使用するキューブでは、ディメンションの中間レベルを参照できます。ただし、MOLAP実装を使用するキューブの場合は、ディメンションの最下位レベルのみを参照できます。Warehouse Builderでは、レベルの非サロゲート識別子(ビジネス・キーなど)への参照をサポートしています。
リレーショナル実装またはROLAP実装を使用するディメンションの場合は、各ディメンションのディメンション・ロール。ディメンション・ロールは、キューブ内でディメンション参照が実行するロールを示します。ディメンション・ロールの指定はオプションです。
MOLAPキューブを定義する場合は、ディメンション参照を定義する順序が重要です。ディスク上でのディメンションの物理的な順序は、ディメンション参照を定義した順序と同じになります。物理的な順序は、スパーシティ定義と密接に関係します。ディメンション参照は、最も密な参照から疎の参照への順序で定義してください。一般的に、時間は密ディメンションで、最初にリストすることでデータ・ロードと時間ベースの分析が迅速に処理されます。ディメンション参照の詳細は、「ディメンション・ページ」または「「ディメンション」タブ」を参照してください。スパーシティの詳細は、「「拡張」ダイアログ・ボックス」を参照してください。
キューブで実行する必要のある修正を定義できます。ROLAPキューブでは、1つのキューブに対して1つの集計方法のみ定義できます。MOLAPキューブでは、各メジャーの各ディメンションに対して様々な集計方法を定義できます。Warehouse Builderでは、すべてのキューブ・メジャーに対して同じ集計機能を使用できます。または各メジャーに対して異なる集計機能を指定できます。
Warehouse Builderでは、SUM、SSUM(scaled SUM)、AVERAGE、HAVERAGE(Hierarchical AVERAGE)、MAX、MIN、FIRST、LAST、AND、OR、HIERARCHICAL_FIRSTおよびHIERARCHICAL_LASTのデフォルト集計方法をサポートしています。集計を実行しない場合はNOAGGを選択します。ANDとORは、多次元実装を使用するキューブには適用できません。
注意: 純粋なリレーショナル・キューブには集計を定義できません。 |
Sales
キューブには、集計された売上データが格納されます。このキューブにはValue_sales
およびDollar_sales
という2つのメジャーが含まれています。
Value_sales
: 売上額を売上数量に換算して格納します。
Dollar_sales
: 売上額を格納します。
表14-7に、Salesキューブのディメンションを示します。この表には、キューブが参照するディメンションの名前とディメンションのレベルがリストされています。
キューブを実装する場合は、キューブの物理的な記憶域詳細を指定します。データベース内にリレーショナル形式または多次元形式でキューブを実装できます。
キューブに使用できる実装のタイプは次のとおりです。
リレーショナル実装
ROLAP実装
MOLAP実装
キューブの実装タイプを設定するには、「配布オプション」構成プロパティを使用します。このオプションの設定の詳細は、「キューブの構成」を参照してください。
キューブ・データの格納に使用されるデータベース・オブジェクトはファクト表と呼ばれます。キューブは、単一のファクト表のみを使用して実装する必要があります。ファクト表には、キューブのメジャーとディメンション参照の列が含まれています。キューブに対する実装オプションの設定の詳細は、「ディメンション・オブジェクトの実装」を参照してください。
キューブを実装する手順は、次のとおりです。
キューブ・データを格納する表またはマテリアライズド・ビューを選択します。
各メジャーについて、メジャー・データを格納する列を選択します。
各ディメンション参照について、ディメンション参照を格納する列を選択します。
各ディメンション参照は、ファクト表の列およびファクト表からディメンション表への外部キー(オプション)に対応します。ファクト表からディメンション表への1対nの関係が順守される必要があります。
図14-5に、SALES
キューブのリレーショナル実装のバインドを示します。SALES
キューブのデータはSALES
という表に格納されます。
バインドを実行する場合は、キューブのメジャーとディメンション参照の各データを格納するデータベース列を指定します。キューブに対して自動バインドまたは手動バインドを実行できます。バインドの詳細は、「バインド」を参照してください。
自動バインド 自動バインドを実行すると、キューブ・データを格納する表が作成され、キューブのメジャーおよび参照がデータベースの列にバインドされます。自動バインドを実行する手順の詳細は、「自動バインド」を参照してください。
キューブの自動バインドを実行する場合は、キューブが参照するディメンションを自動バインドした後に、キューブを自動バインドします。キューブが最後に自動バインドされた後に、そのキューブによって参照されるディメンションが自動バインドされた場合は、キューブを配布できません。
たとえば、TIMES
ディメンションとPRODUCTS
ディメンションを参照するSALES
キューブを作成し、そのキューブの自動バインドを実行したとします。その後、PRODUCTS
ディメンションの定義を変更しました。ここで、再度SALES
キューブを自動バインドしようとすると、エラーが生成されます。最初にPRODUCTS
ディメンションを自動バインドした後に、キューブを自動バインドする必要があります。
手動バインド: 手動バインドでは、最初にキューブ・データを格納する表またはビューを作成し、次にそのデータを格納するデータベースの列にキューブの参照およびメジャーをマッピングする必要があります。あるいは、既存のデータベース表またはビューを使用して、キューブ・データを格納することもできます。
手動バインドの実行方法の詳細は、「手動バインド」を参照してください。
キューブとそのデータをアナリティック・ワークスペースに格納することは、MOLAP実装と呼ばれます。複数のキューブを同じアナリティック・ワークスペースに格納できます。MOLAP実装の詳細は、「ディメンション・オブジェクトのMOLAP実装」を参照してください。
特定のビジネス例では、キューブのディメンションを特定の順序で評価する必要があります。ディメンションの評価順序は、キューブの依存性順序の解決と呼ばれます。たとえば、Salesキューブでは、Productsディメンションの前にTimeディメンションを評価する必要があります。キューブの各ディメンションについて、キューブの別のディメンションに対する依存性を指定できます。
依存性順序を指定する利点は、Warehouse Builderでディメンションおよびキューブの結合計算の問合せ速度が最適化されることにあります。たとえば、時間の条件に基づいてSalesキューブから結果を取得するほうが、製品の条件に基づいて結果を取得するよりも選択肢が絞り込まれるとします。この場合は、Salesキューブに対して、ProductsディメンションがTimeディメンションに依存することを指定できます。
依存性順序の解決の指定はオプションです。依存性順序を指定しない場合は、オプティマイザが解決順序を柔軟に判断します。
ディメンションを作成するには、次の方法があります。
このウィザードでは、完全に機能するディメンション・オブジェクトをすばやく作成できます。ウィザードを使用すると、多数の設定が最も使用頻度の高い値にデフォルト設定されます。これらの設定は、後でデータ・オブジェクト・エディタを使用して変更できます。ディメンションのリレーショナル実装を選択した場合は、自動バインドを使用してワークスペースに実装表も作成されます。
ディメンション・ウィザードで使用されるデフォルトの詳細は、「ディメンションの作成ウィザードで使用されるデフォルト」を参照してください。
データ・オブジェクト・エディタでは、ディメンションの定義と実装のあらゆる側面を完全に制御できます。これにより、最大限の柔軟性が得られます。エディタを使用して新規ディメンションを作成する方法と、前に作成しておいたディメンションを編集する方法があります。
時間ディメンション・ウィザードの使用
時間ディメンション・ウィザードを使用すると、時間ディメンションを作成して移入できます。時間ディメンション・ウィザードの詳細は、「時間ディメンションの作成」を参照してください。
ディメンション・ウィザードを使用してディメンションを作成する手順は、次のとおりです。
プロジェクト・エクスプローラで、「データベース」ノード、続いて「Oracle」ノードを開きます。
ディメンションを作成するターゲット・モジュールを開きます。
「ディメンション」を右クリックして「新規」→「ウィザードを使用...」を選択します。
ディメンションの作成ウィザードのようこそページが表示されます。「次へ」をクリックして次ページに進みます。ウィザードでは次の各ページが表示されます。
名前と説明ページを使用してディメンションを記述します。このページに次の情報を入力します。
名前: ディメンションの名前です。1つのモジュール内では、ディメンション名は一意である必要があります。
説明: ディメンションの説明(オプション)を入力できます。
記憶域タイプ・ページを使用して、ディメンション用の記憶域のタイプを指定します。記憶域タイプにより、データベースにおけるディメンション・データの物理的な格納方法が決定されます。記憶域タイプについて選択できるオプションは次のとおりです。
リレーショナル記憶域(ROLAP)
多次元記憶域(MOLAP)
記憶域タイプは、キューブ全体の最下位レベルに格納されるデータ量、および必要なリフレッシュ・レートに基づいて選択します。
リレーショナル記憶域(ROLAP) Warehouse Builderでは、ディメンション定義とそのデータがデータベースにリレーショナル形式で格納されます。このオプションを選択すると、リレーショナル実装またはROLAP実装を使用するディメンションを作成できます。
リレーショナル記憶域の方が望ましいのは、大量の詳細データを格納する場合、または大量のデータが頻繁にリフレッシュされる場合です。次のいずれかを実行する必要がある場合は、リレーショナル記憶域を使用してください。
コール詳細レコード、販売時点(POS)レコード、および他のトランザクション指向データなどの詳細情報の格納。
短い間隔での大量のデータのリフレッシュ。
受注詳細リストなどの詳細レポートの作成。
データ・モデルでの変更にさらに柔軟性を必要とする非定型問合せ。
通常、オペレーショナル・データ・ストアおよびエンタープライズ・データ・ウェアハウスは、リレーショナル記憶域を使用して実装されます。次に、このリレーショナル実装から多次元実装を導出し、様々な分析タイプを実行できます。
ディメンションに対してリレーショナル実装を選択すると、ディメンション・データの格納に使用する実装表が作成されます。ディメンションのデフォルト実装では、スター・スキーマが使用されます。これは、ディメンションの全レベルのデータが単一のデータベース表に格納されることを意味します。
多次元記憶域(MOLAP) Warehouse Builderでは、ディメンション定義とディメンション・データがデータベースのアナリティック・ワークスペースに格納されます。このオプションを選択すると、MOLAP実装を使用するディメンションを作成できます。
多次元記憶域の方が望ましいのは、分析用の集計データを格納する場合です。通常、多次元記憶域の場合はデータを事前に計算および集計する必要があるため、リフレッシュ間隔はリレーショナル記憶域よりも長くなります。また、集計レベルが上位であるため、データ量は小さくなるのが普通です。次の操作を実行するには、多次元記憶域を使用します。
傾向分析、what-if分析、またはデータの予測および割当てなどの拡張分析。
一定の問合せパターンを持ち、適切に定義された一貫性のあるデータ・モデルを使用する定数分析。
MOLAP実装を選択すると、ディメンションはそれが属するOracleモジュールと同じ名前を使用するアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースを格納する表領域は、ディメンション・メタデータを含む、スキーマ用のユーザー表領域として定義された表領域です。
注意: ディメンションをOLAPカタログに配布する際の特定の制限については、Oracle Warehouse Builderリリース・ノートを参照してください。 |
ディメンション属性ページを使用してディメンション属性を定義します。1つのディメンション属性をディメンション内の1つ以上のレベルに適用できます。デフォルトでは、ディメンションごとにID、名前および説明の各属性が作成されます。ID属性は名前変更または削除できます。
ディメンション属性ごとに次の詳細を指定します。
名前: ディメンション属性名です。属性名はディメンション内で一意である必要があります。
説明: ディメンション属性の説明(オプション)を入力します。
識別子: ディメンション属性のタイプを選択します。次のオプションから1つを選択します。
サロゲート: 属性がディメンションのサロゲート識別子であることを示します。
ビジネス: 属性がディメンションのビジネス識別子であることを示します。
親: 値ベースの階層では、属性が属性の親値を格納する属性を示します。ディメンションのMOLAP実装を選択した場合のみ、値ベースの階層を作成できます。
属性が通常のディメンション属性の場合は、このフィールドを空白のままにします。
「識別子」リストに表示されるオプションは、ディメンションのタイプによって異なります。リレーショナル実装またはROLAP実装を使用してディメンションを作成すると、「サロゲート」オプションまたは「ビジネス」オプションのみが表示されます。MOLAPディメンションの場合は、「ビジネス」オプションおよび「親」オプションが表示されます。
データ型: リストからディメンション属性のデータ型を選択します。
注意: MOLAP実装では、BLOB 、INTERVAL DAY TO SECOND 、INTERVAL YEAR TO MONTH 、RAW 、TIMESTAMP WITH TIME ZONE 、TIMESTAMP WITH LOCAL TIME ZONE の各データ型はサポートされていません。 |
長さ: 文字データ型の場合、属性の長さを指定します。
精度: 数値データ型の場合、列に使用できる合計桁数を定義します。
スケール: 数値データ型の場合、小数点以下の合計桁数を定義します。
秒精度: 日時フィールドの小数部の桁数を表します。0から9までの数値を入力できます。秒精度はTIMESTAMP
データ型に対してのみ使用されます。
記述子: 記述子のタイプを選択します。オプションは、「簡単な説明」、「詳細な説明」、「終了日」、「期間」、「前回の期間」および前年度の期間です。
MOLAP実装の場合は、記述子がきわめて重要です。たとえば、時系列分析を可能にするには、カスタム時間ディメンションに「期間」と「終了日」が必要です。
レベル・ページでは、ディメンションにおける集計レベルを定義します。ディメンションには、1つ以上のレベルが必要です。ただし、値ベース階層にはレベルがありません。値ベース階層を作成するにはデータ・オブジェクト・エディタを使用します。
レベル・ページに次の詳細を入力します。
名前: レベル名です。レベル名はディメンション内で一意である必要があります。
説明: レベルの説明(オプション)を入力します。
親レベルが子レベルの上位に表示されるように、ディメンション内のレベルをリストします。レベルがこの順序で表示されるように、矢印キーを使用してレベルを移動します。
STANDARDという名前のデフォルト階層が作成されます。この階層には、レベル・ページでリストした順序でレベルが含まれています。各レベルの親キー参照の格納に使用される属性も作成されます。リレーショナル・ディメンションまたはROLAPディメンションの場合、サロゲート識別子用の属性とビジネス識別子用の属性の2つの属性が作成され、それぞれが各レベルの親レベルに対応します。MOLAPディメンションの場合、親レベルのビジネス識別子に対応する属性が各レベルに1つずつ作成されます。
たとえば、「製品」ディメンションに、「合計」、「グループ」、「製品」の各レベルが含まれているとします。リレーショナル実装またはROLAP実装を選択した場合、「製品」レベルと「グループ」レベルの両方で2つの属性が作成され、親レベルのサロゲート識別子とビジネス識別子を参照します。MOLAP実装を選択した場合、「製品」レベルと「グループ」レベルの両方で1つの属性が作成され、親レベルのビジネス識別子を参照します。
レベル属性ページでは、各ディメンション・レベルのレベル属性を定義します。レベル属性を定義するには、レベルに適用するディメンション属性を選択します。ディメンション属性は、ディメンションの作成ウィザードのディメンション属性ページで定義されます。
レベル属性ページには、「レベル」および「レベル属性」という2つのセクションがあります。
レベル 「レベル」セクションには、ディメンションの作成ウィザードのレベル・ページで定義したレベルがすべてリストされます。このセクションでレベルを選択し、このレベルで実装するディメンション属性を指定します。レベル名をクリックしてレベルを選択します。
レベル属性 「レベル属性」セクションには、ディメンション属性ページで定義したディメンション属性がすべてリストされます。レベルごとに、そのレベルで実装するディメンション属性を選択します。ディメンション属性が1レベルで実装されるように指定するには、ディメンション属性に対して「適用可能」オプションを選択します。レベル属性名は、ディメンション属性名と異なってもかまいません。「レベル属性名」フィールドを使用して、レベル属性名を指定できます。
たとえば、ディメンション属性の「ID」、「名前」、「説明」および「予算」を「都道府県」レベルで実装するように指定する手順は、次のとおりです。
「レベル」セクションで「都道府県」レベルを選択します。
「レベル属性」セクションで、属性「ID」、「名前」、「説明」および「予算」に対して「適用可能」オプションを選択します。
デフォルトでは、次の設定が使用されます。
属性「ID」、「名前」および「説明」は、すべてのレベルに適用できます。
ディメンション内の最下位レベルにはすべてのディメンション属性を適用できます。
緩やかに変化するディメンション・ページを使用すると、ディメンションで使用される、緩やかに変化するポリシーのタイプを定義できます。このページが表示されるのは、記憶域タイプ・ページで「リレーショナル記憶域(ROLAP)」を選択した場合のみです。緩やかに変化するディメンションの概念の詳細は、「緩やかに変化するディメンションについて」を参照してください。
注意: この機能を使用するには、Oracle Databaseライセンス情報で説明されているOracle Warehouse BuilderのEnterprise ETLオプションが必要です。 |
緩やかに変化するポリシーについて次のオプションを1つ選択します。
タイプ1: 履歴を保存しない: これはデフォルトで選択されています。Warehouse Builderにより、履歴を格納しないディメンションが作成されます。これは通常のディメンションです。
タイプ2: 変更履歴をすべて格納: このオプションを選択して、タイプ2の緩やかに変化するディメンションを作成します。Warehouse Builderでは、次の2つのディメンション属性が追加作成され、タイプ2のSCDの最下位レベルに適用できます。
有効日
有効期限
サロゲート識別子およびビジネス識別子を除き、タイプ2のSCDの最下位レベルの属性は、すべてトリガー属性として定義されます。
注意: 記憶域のタイプがMOLAPの場合、タイプ2またはタイプ3の緩やかに変化するディメンションを作成できません。 |
タイプ3: 元の値のみ格納: このオプションを選択すると、タイプ3の緩やかに変化するディメンションが作成されます。サロゲートIDおよびビジネスIDを除き、最下位レベルでレベル属性はすべてバージョニングする必要があるとみなされます。バージョニングするレベル属性ごとに、以前の属性値を格納する属性が追加作成されます。
作成前の設定ページには、ディメンションの作成ウィザードの前のページで選択したオプションのサマリーが表示されます。これには、ディメンションに使用する属性、レベル、階層、記憶域タイプおよび緩やかに変化するポリシーが含まれます。Warehouse Builderでは、これらの設定を使用してタイムアウト定義とディメンションを実装するデータベース表が作成されます。また、ディメンション属性が属性データを格納する表列にバインドされます。
ディメンションの実装に進むには「次へ」をクリックします。前に選択したオプションを変更するには戻るをクリックします。
注意: このページには、実装とオブジェクトのサマリーが表示されるため、慎重に確認してください。 |
ディメンション作成の進行状況ページには、作成前の設定ページで開始したディメンション実装の進行状況が表示されます。このページの「メッセージ・ログ」セクションには、ディメンション実装中に完了したタスクに関する情報が個別に表示されます。次に進むには、「次へ」をクリックします。
サマリー・ページには、ディメンションの作成ウィザードを使用して選択したオプションの簡潔なサマリーが表示されます。サマリー・ページを使用して、選択したオプションを確認します。ディメンションを作成するには「終了」をクリックします。完全に機能するディメンションを使用できるようになります。このディメンションは、プロジェクト・エクスプローラの「ディメンション」ノードの下に表示されます。
Warehouse Builderにより、ワークスペースで次のメタデータが作成されます。
ディメンション・オブジェクト
ディメンション・データを格納する表
リレーショナル実装の場合、ディメンション・データを格納するデータベース表が作成されます。ディメンション内の属性は、Warehouse Builderにより、値の格納に使用されるデータベース列にバインドされます。
MOLAP実装の場合、ディメンション・データを格納するアナリティック・ワークスペースが作成されます。
全ディメンション・レベルのサロゲート識別子の生成に使用されるデータベース順序
ワークスペースに作成されるのは、これらのオブジェクト自体ではなく、これらのオブジェクトの定義です。
ディメンションの配布 ターゲット・スキーマにディメンションを作成するには、ディメンションを配布する必要があります。ROLAPディメンションの場合は、ディメンションを配布する前に、順序と実装表を配布してください。これらのオブジェクトをすべて同時に配布することもできます。詳細は、「ディメンション・オブジェクトのMOLAP実装」を参照してください。
注意: ディメンションを削除しても、順序、データベース表またはアナリティック・ワークスペースなどの関連オブジェクトは削除されません。これらのオブジェクトは明示的に削除する必要があります。 |
ディメンションの作成ウィザードを使用してディメンションを作成する場合、ディメンションの作成に使用する属性の一部にはデフォルト値が設定されます。以降の各項で、使用されるデフォルトについて説明します。
リレーショナル記憶域の場合は、デフォルトの実装方法としてスター・スキーマが使用されます。
多次元記憶域を選択すると、ディメンションはそれが定義されているOracleモジュールと同じ名前のアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースが存在しない場合は、作成されます。アナリティック・ワークスペースは、Oracleモジュールを所有するスキーマのユーザー表領域に格納されます。
Warehouse Builderでは、表14-8に示すプロパティを使用してデフォルトのディメンション属性が作成されます。
さらに属性を追加できます。ディメンションを有効にするには、サロゲート識別子とビジネス識別子を定義する必要があります。
Warehouse Builderでは、ディメンションの作成ウィザードのレベル・ページに表示されたレベルをすべて含んだSTANDARDというデフォルト階層が作成されます。この階層では、各レベルがレベル・ページに表示されるのと同じ順序で使用されます。
ディメンション内で定義されている各レベルに、「ID」、「名前」および「説明」の各属性を適用できます。ディメンションの最下位レベルには、すべてのディメンション属性を適用できます。最下位レベルとは、レベル・ページで最後に定義されているレベルです。
タイプ2のSCDを作成すると、サロゲート識別子とビジネス識別子を除き、最下位レベルの属性がすべてバージョニング対象となります。各レコードの有効日と有効期限を格納するために、さらに2つの属性が作成されます。たとえば、「ディメンションの例」に示すProductsディメンションをタイプ2のSCDとして作成すると、属性UPC、Package_typeおよびPackage_sizeがバージョニング対象となります。Warehouse Builderでは、バージョニング対象レコードの有効日と有効期限を格納するために、EXPIRATION_DATEおよびEFFECTIVE_DATEというDATE
データ型の2つの属性が追加作成されます。
タイプ3のSCDの場合は、サロゲート識別子とプライマリ識別子を除き、最下位レベルでレベル属性がすべてバージョニング対象となります。各バージョニング対象属性の元の値を格納するために、属性が追加作成されます。さらに、有効日を格納するための属性も作成されます。たとえば、「ディメンションの例」に示すProductsディメンションをタイプ3のSCDとして作成すると、バージョニング対象属性の元の値を格納するために、PREV_DESCRIPTION、PREV_PACKAGE_TYPE、PREV_PACKAGE_SIZEおよびPREV_UPCという属性が追加作成されます。これらの属性のデータ型は、属性の現行値の格納に使用されるデータ型と同じです。また、バージョニング対象レコードの有効時間を格納するために、EFFECTIVE_TIME属性も作成されます。この属性にはDATE
データ型が使用されます。
ディメンションごとに、ディメンション・オブジェクトのみでなく特定の実装オブジェクトも作成されます。実装オブジェクトの数とタイプは、ディメンションの記憶域タイプに応じて異なります。
リレーショナル記憶域の場合は、次の実装オブジェクトが作成されます。
表: ディメンション・データを格納するために、ディメンションと同じ名前の表が作成されます。ディメンション・キー列に一意キーが作成されます。たとえば、CHANNELSというディメンションを定義すると、ディメンション・データの格納用にCHANNELSという表が作成されます。また、ディメンション・キー列にCHANNELS_DIMENSION_KEY_PKという一意キーも作成されます。
順序: リレーショナル記憶域を使用するディメンションの場合は、ディメンション・キー値をロードする順序が作成されます。たとえば、CHANNELSディメンションの場合はCHANNELS_SEQという順序が作成されます。
多次元記憶域の場合は、ディメンションを含むOracleモジュールと同じ名前のアナリティック・ワークスペースが存在しなければ、作成されます。たとえば、SALES_WHモジュールにPRODUCTSというディメンションを作成すると、そのディメンションはSALES_WHというアナリティック・ワークスペースに格納されます。この名前のアナリティック・ワークスペースが存在しなければ、このアナリティック・ワークスペースが作成されてからディメンションが格納されます。
時間ディメンションの場合は、記憶域タイプに関係なく、時間ディメンションをロードするマップが作成されます。マップ名は、ディメンション名の後に_MAPを付けたものです。たとえば、TIMESという時間ディメンションをロードするマップの名前はTIMES_MAPとなります。
データ・オブジェクト・エディタを使用すると、上級ユーザーは要件に従ってディメンションを作成できます。データ・オブジェクト・エディタはディメンションの編集にも使用できます。次のいずれかを実行する場合は、データ・オブジェクト・エディタを使用してディメンションを作成します。
スノーフレーク実装方法の使用
値ベース階層の作成
ディメンション・ロールの作成
階層内のレベルのスキップ
既存のデータベース表またはビューを使用したディメンション・データの格納(手動バインド)
データ・オブジェクト・エディタを使用してディメンションを定義する手順は、次のとおりです。
プロジェクト・エクスプローラで、「データベース」ノード、続いて「Oracle」ノードを開きます。
ディメンションを作成するターゲット・モジュールを開きます。
「ディメンション」を右クリックして「新規」→「エディタを使用」を選択します。
「新規または既存のディメンションを追加」ダイアログ・ボックスが表示されます。
「新規ディメンションの作成」オプションを選択します。ディメンション名を入力し、ディメンションが属するモジュールを選択します。
「OK」をクリックします。
データ・オブジェクト・エディタが表示されます。ディメンションを定義するには、「ディメンションの詳細」パネルの次のタブに情報を入力します。
データ・オブジェクト・エディタを使用してリレーショナル実装を持つディメンションを作成する場合、ディメンション・データを格納する物理構造は自動的に作成されません。手動で作成する必要があります。
リレーショナル実装を持つディメンションの場合は、ディメンションの属性を、そのデータを格納するデータベース列にバインドします。「属性のバインド」を参照してください。
「名前」タブを使用してディメンションを記述します。また、このタブでディメンションのタイプとロールも指定します。
「名前」フィールドはディメンション名を表します。ディメンション名は、モジュール内で一意である必要があります。「説明」フィールドを使用して、ディメンションの説明(オプション)を入力します。
ディメンション・ロール: 「ディメンション・ロール」セクションを使用してディメンション・ロールを定義します。ディメンション・ロールの詳細は、「ディメンション・ロール」を参照してください。ディメンション・ロールごとに次の情報を定義します。
名前: ディメンション・ロール名を表します。
説明: ディメンション・ロールの説明(オプション)を指定します。
「記憶域」タブを使用して、ディメンションの記憶域のタイプを指定します。選択可能な記憶域オプションの詳細は、以降の各項を参照してください。
リレーショナル: 関係データ構造 ディメンションとディメンション・データをデータベースにリレーショナル形式で格納するには、「リレーショナル」オプションを選択します。このオプションを使用すると、リレーショナル実装またはROLAP実装を使用するディメンションが作成されます。
リレーショナル記憶域の場合は、次のディメンション実装方法から1つ選択できます。
スター・スキーマ: スター・スキーマを使用してディメンションを実装します。これは、ディメンション・データが1つのデータベース表またはビューに格納されることを意味します。
スノーフレーク・スキーマ: スノーフレーク・スキーマを使用してディメンションを実装します。このディメンション・データは、複数のデータベース表またはビューに格納されます。
手動: ディメンションの属性を、そのデータを格納するデータベース・オブジェクトに明示的にバインドする必要があります。
自動バインドを実行する際には、これらの記憶域設定が自動バインドの実行に使用されます。
「複合一意キーの作成」をクリックして、全レベルのビジネス識別子の複合一意キーを作成します。たとえば、ディメンションが3レベルで構成される場合は、複合一意キーを作成すると、3レベルすべてのビジネス識別子を含む一意キーが1つ作成されます。複合一意キーの作成により、ディメンション・レコードがディメンション全体のデータベース・レベルで一意であることが規定されます。
MOLAP: 多次元データ構造 ディメンションとディメンション・データをデータベースに多次元形式で格納するには、「MOLAP」オプションを選択します。このオプションを使用すると、MOLAP実装を使用するディメンションが作成されます。ディメンション・データはアナリティック・ワークスペースに格納されます。
次の各フィールドに値を入力します。
AW名: ディメンション・データを格納するアナリティック・ワークスペースの名前を入力します。または、省略記号のボタンをクリックして、現行のプロジェクト内のMOLAPオブジェクトのリストを表示できます。プロジェクト内のモジュールごとに1ノードが表示されます。モジュールを開き、モジュール内のディメンション・オブジェクトのリストを表示します。リストからオブジェクトを選択すると、そのオブジェクトと同じアナリティック・ワークスペースにディメンションが格納されます。
AW表領域名: アナリティック・ワークスペースが格納される表領域の名前を入力します。
複数の階層を持つディメンションの場合は、集計レベル(ベースよりも上のレベル)に同じソース列を使用できる場合があります。その場合は、「アナリティック・ワークスペースでサロゲート・キーを生成」オプションを選択します。ロード操作中に、それぞれの値に接頭辞としてレベル名が追加されます。すべてのディメンション・メンバーが一意であることが確実な場合を除き、このオプションを選択することをお薦めします。
各ディメンション・メンバーがレベル間で一意であることが確実な場合は、ソースと同じ名前をアナリティック・ワークスペースで使用できます。たとえば、リレーショナル・スキーマで数値サロゲート・キーを使用して一意性を保証する場合、アナリティック・ワークスペースに新規サロゲート・キーを作成する必要はありません。「データ・ソースの自然キーを使用」オプションを選択すると、ソースと同じ自然キーをアナリティック・ワークスペースで使用できます。
注意: ディメンションを編集して「記憶域タイプ」をROLAPからMOLAPに変更すると、サロゲート識別子のデータ型がVARCHAR2 に変更されます。 |
「属性」タブを使用してディメンション属性を定義します。「属性」タブには「順序」および「ディメンション属性」という2つのセクションがあります。
順序: 順序属性は、リレーショナル実装を持つディメンションの場合のみに必要です。「順序」フィールドを使用して、ディメンション・キー列に移入するデータベース順序の名前を指定します。このフィールドの右にある「選択」をクリックすると、「利用可能な順序」ダイアログ・ボックスが表示されます。このダイアログ・ボックスには、プロジェクトのモジュールごとにノードが1つ表示されます。モジュール・ノードを開いて、モジュールに含まれている順序を表示します。表示されたリストから順序を選択します。
ディメンション属性: 「ディメンション属性」セクションを使用して、ディメンション属性の詳細を定義します。詳細は、「ディメンション属性ページ」を参照してください。
「レベル」タブを使用して、ディメンションの各レベルのレベル属性を定義します。また、このタブを使用すると値ベース階層も作成できます。値ベース階層を作成するには「値ベース」オプションを選択します。値ベース階層を持つディメンションに含めることができるのは、1レベルのみです。
レベル属性を定義する前に、「ディメンション属性」タブでディメンション属性の定義を完了していることを確認します。レベルのレベル属性を定義するには、レベルで実装するディメンション属性を選択する必要があります。「レベル」タブには、「レベル」および「レベル属性」という2つのセクションがあります。
レベル: 「レベル」セクションには、ディメンションのレベルが表示されます。レベルごとに次の詳細を入力します。
名前: ディメンション・レベル名を入力します。レベル名はディメンション内で一意である必要があります。
説明: レベルの説明(オプション)を入力します。
レベル属性 「レベル属性」セクションには、「属性」タブで定義したディメンション属性がすべて表示されます。このセクションで指定した値は、「レベル」セクションで選択したレベルに適用可能です。「レベル属性」セクションの内容は、次のとおりです。
ディメンション属性名: ディメンション属性名を表します。
適用可能: 「レベル」セクションで選択したレベルでこのディメンション属性を実装する場合は、「適用可能」オプションを選択します。
レベル属性名: レベル属性名を表します。このフィールドを使用し、レベル属性名としてディメンション属性名とは異なる名前を指定します。このフィールドはオプションです。名前を指定しなければ、レベル属性名はディメンション属性名と同じになります。
説明: レベル属性の説明(オプション)を指定します。
たとえば、「グループ」レベルでディメンション属性「ID」、「名前」および「説明」を実装するように指定します。
「レベル」セクションで「グループ」レベルを選択します。
「レベル属性」セクションで、属性「ID」、「名前」および「説明」に対して「適用可能」オプションを選択します。
「階層」タブを使用して、ディメンション階層を作成します。「階層」タブには、「階層」および「レベル」セクションがあります。
階層 「階層」セクションを使用してディメンション内の階層を定義します。階層ごとに次を定義します。
階層: 階層名を表します。新規階層を作成するには、このフィールドに階層名を入力します。
値ベース: 値ベース階層を作成するには、このオプションを選択します。値ベース階層にレベルはなく、親識別子として識別された属性が必要です。値ベース階層を作成できるのはMOLAPディメンションの場合のみのため、このオプションは「記憶域」タブで「MOLAP: 多次元データ構造」を選択した場合にのみ表示されます。値ベース階層の詳細は、「値ベース階層」を参照してください。
説明: 階層の説明(オプション)を入力します。
デフォルト: ディメンションのデフォルト階層の場合は、「デフォルト」オプションを選択します。ディメンションに複数の階層がある場合、問合せツールではデフォルト階層が表示されます。最も使用頻度の高い階層をデフォルト階層として設定することをお薦めします。
階層を削除するには、「階層」フィールドの左にあるセルを右クリックして「削除」を選択します。または、「階層」フィールドの左にあるセルをクリックして階層を選択し、「削除」ボタンを押す方法もあります。
階層の作成時には、レベルごとに親レベルの参照を格納する属性を作成してください。リレーショナル・ディメンションまたはROLAPディメンションの場合は、各レベルのサロゲート識別子参照とビジネス識別子参照を格納するために属性を2つ作成します。MOLAPディメンションの場合は、レベルごとに親レベルのビジネス識別子への参照を格納するために属性を1つ作成します。
レベル: 「レベル」セクションには、データ・オブジェクト・エディタの「レベル」タブで定義したレベルがすべて表示されます。このセクションを使用して、各階層で使用するレベルを指定します。「レベル」セクションの内容は、次のとおりです。
レベル: レベル名を表します。リストをクリックすると、ディメンションに定義されているレベルがすべて表示されます。
スキップ先レベル: 「レベル」フィールドが示すレベルの親レベルを表します。このフィールドを使用してスキップ・レベル階層を定義します。
たとえば、Productsディメンションには次の階層が含まれています。
Total > Product
この階層には、「グループ」レベルはありません。そのため、「PRODUCT」レベルは「グループ」レベルをスキップし、親として「TOTAL」レベルを使用する必要があります。この階層を作成するには、「レベル」フィールドで「PRODUCT」レベルを選択し、「スキップ先レベル」リストから「TOTAL」を選択します。
「レベル」セクションの左にある矢印を使用して、セクション内の各レベルの表示順序を変更します。
このタブを使用して、ディメンションで実装する穏やかな変化方針のタイプを指定します。緩やかに変化するディメンションを作成できるのは、リレーショナル実装を使用するディメンションの場合のみのため、このタブのオプションは「記憶域」タブで「リレーショナル: 関係データ構造」を選択した場合にのみ有効化されます。穏やかな変化方針について選択できるオプションは、次のとおりです。
タイプ1: 履歴を保存しない: 履歴を格納しない標準ディメンションを作成します。
タイプ2: 変更履歴をすべて格納: タイプ2のSCDを作成するには、このオプションを選択します。「設定」をクリックし、「タイプ2のSCDの作成」の説明に従って、レベルごとにトリガー属性、有効日および有効期限などの詳細を追加指定します。
タイプ3: 元の値のみ格納: タイプ3のSCDを作成するには、このオプションを選択します。「設定」をクリックし、「タイプ3のSCDの作成」の説明に従って、有効日やバージョニング対象属性の元の値の格納に使用する属性などの詳細を追加指定します。
注意: 記憶域のタイプにMOLAPを指定した場合、タイプ2またはタイプ3の緩やかに変化するディメンションを作成できません。 |
データ・オブジェクト・エディタを使用してタイプ2またはタイプ3のSCDを作成する場合は、有効日と有効期限を格納するディメンション属性を作成し、必要なレベルに適用する必要があります。
「データ・ビューア」タブを使用してディメンション・データを表示します。「実行」ボタンをクリックすると、ディメンションのデータ・ビューアが表示されます。データ・ビューアには、ディメンションの全レベルおよび階層に格納されているデータが表示されます。ディメンションに格納されているデータを表示する前に、ディメンションの配布と、そのディメンションをロードするマップの実行を完了していることを確認してください。
ディメンション構造を定義した後、ディメンション・データを格納するデータベース表またはビューの詳細を指定する必要があります。ディメンション属性とデータ格納先データベース列とのバインドについて、次のオプションを1つ選択できます。
自動バインド
手動バインド
自動バインド: 自動バインドを実行すると、ディメンション内の属性がそのデータを格納するデータベース列にマップされます。
自動バインドを実行するには、データ・オブジェクト・エディタで「オブジェクト」→「バインド」を選択します。または、グラフィカル・キャンバスの「実装」タブでディメンション・オブジェクトを右クリックして「バインド」を選択する方法もあります。自動バインド・ルールの詳細は、「自動バインド」を参照してください。
手動バインド: 手動バインドの場合は、ディメンションの各レベルの属性を、そのデータを格納するデータベース列に明示的にバインドする必要があります。既存の表にバインドする方法と、新規表を作成してその表にバインドする方法があります。
手動バインドを実行する手順は、次のとおりです。
データ・オブジェクト・エディタの「ディメンショナル」タブで、ディメンションを右クリックして「詳細の表示」を選択します。
「実装」タブが表示されます。このタブにディメンションが表示されます。
ディメンション・データ格納用のデータベース・オブジェクトを表す演算子をドラッグ・アンド・ドロップします。
たとえば、ディメンション・データが表に格納される場合は、「新規または既存の表を追加」アイコンを「実装」キャンバスにドラッグ・アンド・ドロップします。「新規または既存の表を追加」ダイアログ・ボックスが表示されます。ディメンション・データを格納するには、既存の表を選択するか、新規の表を作成する必要があります。
ディメンション・データの格納に使用するデータベース・オブジェクトの数だけ手順2を繰り返します。たとえば、ディメンション・データが3つのデータベース表に格納される場合は、手順2を3回繰り返します。
ディメンションの各属性を、そのデータを格納するデータベース列にバインドします。
ディメンションを定義してバインドを実行(ROLAPディメンションの場合のみ)した後、そのディメンションおよび関連オブジェクトを配布する必要があります。ディメンションの配布の詳細は、「ディメンションの配布」を参照してください。
SCDを作成するには、ディメンション・ウィザードを使用する方法とデータ・オブジェクト・エディタを使用する方法があります。
注意: タイプ2またはタイプ3のSCDを作成するには、Oracle Databaseライセンス情報で説明されているOracle Warehouse BuilderのEnterprise ETLオプションが必要です。 |
ディメンション・ウィザードを使用してSCDを作成するには、このウィザードの緩やかに変化するディメンション・ページを使用します。このページでは、作成するSCDのタイプのみを指定します。Warehouse Builderでは、他のすべての必須パラメータにデフォルト値が想定されます。緩やかに変化するディメンション・ページの詳細は、「緩やかに変化するディメンション・ページ」を参照してください。
データ・オブジェクト・エディタを使用してSCDを作成するには、次の各項を参照してください。
タイプ2のSCDには、各属性とレベルの関係を表す値の全履歴が格納されます。タイプ2のSCDを作成できるのは、リレーショナル実装を持つディメンションの場合のみです。
データ・オブジェクト・エディタを使用してタイプ2のSCDを作成するには、次の属性を定義します。
履歴保存をトリガーする属性
有効日と有効期限を格納する属性
データ・オブジェクト・エディタを使用してタイプ2のSCDを作成する手順は、次のとおりです。
プロジェクト・エクスプローラで、「データベース」ノード、続いて「Oracle」ノードを開きます。
タイプ2のSCDを作成するターゲット・モジュールを開きます。
「ディメンション」を右クリックして「新規」→「エディタを使用」を選択します。
「「名前」タブ」の説明に従って、データ・オブジェクト・エディタの「名前」タブに情報を入力します。
「属性」タブで、有効日と有効期限を格納する2つの属性をレベルごとに追加作成します。属性の作成の詳細は、「「属性」タブ」を参照してください。
データ・オブジェクト・エディタの次のタブに情報を入力します。
「緩やかな変化」タブで、「タイプ2: 変更履歴をすべて格納」オプションを選択します。
このオプションの右にある「設定」をクリックします。
「タイプ2緩やかな変化方針」ダイアログ・ボックスが表示されます。「「タイプ2緩やかに変化するディメンション」ダイアログ・ボックス」の説明に従って、タイプ2のSCDの詳細を指定します。
データ・オブジェクト・エディタの「記憶域」タブに情報を入力します。
「タイプ2緩やかに変化するディメンション」ダイアログ・ボックスを使用して、有効日属性、有効期限属性およびバージョニング対象属性を指定します。このダイアログ・ボックスには、レベル、識別属性、データ型およびレコード履歴の各列を含む表が表示されます。
レベル: ディメンション内のレベルを表します。レベル・ノードを拡張し、レベル属性を表示します。
識別属性: レベル属性を表します。
データ型: レベル属性のデータ型を表します。
レコード履歴: このリストを使用して、属性がバージョニング対象であるかどうか、またはレベル・レコードの有効日や有効期限が格納されるかどうかを指定します。
トリガー履歴: 属性をバージョニングする必要がある場合は、このオプションを選択します。
有効日: 属性にレベル・レコードの有効日の値が格納される場合は、このオプションを選択します。
有効期限: 属性IDにレベル・レコードの有効期限が格納される場合は、このオプションを選択します。
レベルのサロゲートIDとビジネスIDはバージョニングできません。
たとえば、PRODUCTS
タイプ2 SCDでは、有効日と有効期限を格納する属性は、それぞれEFFECTIVE_TIME
およびEXPIRATION_TIME
です。これらのディメンション属性を作成し、製品
レベルに適用する必要があります。属性PACKAGE_TYPE
はバージョニングする必要があります。そのため、この属性については、「レコード履歴」列で「トリガー履歴」 を選択します。PACKAGE_TYPE
属性の値が変更されると、既存のレコードがクローズされ、最新の値を使用した新規レコードが作成されます。
タイプ3のSCDには、選択した特定の属性について値のバージョンが2つ格納されます。タイプ3のSCDを作成できるのは、リレーショナル実装を持つディメンションの場合のみです。次の属性を指定します。
バージョニング対象の属性
各バージョニング対象属性の元の値を格納する属性
バージョニング対象属性ごとに、その属性の元の値を格納する属性を追加作成する必要があります。たとえば、Population属性をバージョニングする場合は、人口の元の値を格納するための属性を追加作成します。
タイプ3のSCDを作成する手順は、次のとおりです。
プロジェクト・エクスプローラで、「データベース」ノード、続いて「Oracle」ノードを開きます。
タイプ3のSCDを作成するターゲット・モジュールを開きます。
「ディメンション」を右クリックして「新規」→「エディタを使用」を選択します。
「「名前」タブ」の説明に従って、データ・オブジェクト・エディタの「名前」タブに情報を入力します。
「「属性」タブ」の説明に従って、「属性」タブで、レベルの属性の有効期限を格納する属性をレベルごとに追加作成します。
Productsディメンションのpackage_typeおよびpackage_size属性の元の値を格納する必要がある例を考えてみます。この場合は、これらの属性の元の値を格納するために、2つの新規属性prev_package_typeおよびprev_package_sizeを作成します。
データ・オブジェクト・エディタの次のタブに情報を入力します。
「緩やかな変化」タブで、「タイプ3: 元の値のみ格納」オプションを選択します。このオプションの右にある「設定」をクリックします。
「タイプ3緩やかな変化方針」ダイアログ・ボックスが表示されます。「「タイプ3緩やかに変化するディメンション」ダイアログ・ボックス」の説明に従って、このダイアログ・ボックスでタイプ2のSCDの詳細を指定します。
データ・オブジェクト・エディタの「記憶域」タブに情報を入力します。
「タイプ3緩やかに変化するディメンション」ダイアログ・ボックスを使用して、実装詳細を指定します。このダイアログ・ボックスを使用して、有効日を格納する属性、バージョニングが必要な属性、およびバージョニング対象属性の前の値を格納する属性を選択します。
このダイアログ・ボックスには、レベル、識別属性、前の属性およびレコード履歴の4列を含む表が表示されます。
レベル: ディメンション内のレベルが表示されます。レベル・ノードを拡張してレベル属性を表示します。
識別属性: レベル属性を表します。
前の属性: バージョニング対象属性の前の値を格納する属性を表します。リストを使用して、前の値属性を選択します。前の値属性を指定するのは、バージョニング対象属性の場合のみです。バージョニング対象属性の前の値を格納する属性は明示的に作成する必要があります。また、これらの属性をディメンション属性として作成し、必要なレベルに適用します。
有効: 属性に有効日が格納されるかどうかを示します。属性に有効日が格納される場合は、「有効」リストから「有効日」を選択します。
レベルのサロゲートIDはバージョニングできません。
PRODUCTS
タイプ3 SCDを考えます。EFFECTIVE_TIME
属性には、「製品」レベルのレコードの有効日が格納されます。「製品」レベルのPACKAGE_TYPE
属性はバージョニングする必要があります。この属性の前の値を格納する属性は、「前の属性」列で表されるPREVIOUS_PACKAGE_TYPE
です。PACKAGE_TYPE
属性の値が変更されると、Warehouse Builderでは次の操作が実行されます。
PACKAGE_TYPE
属性の既存の値である、PREVIOUS_PACKAGE_TYPE
属性が移動されます。
PACKAGE_TYPE
属性に新規の値を移入して格納します。
データ・オブジェクト・エディタを使用して、ディメンションの定義を編集します。ディメンション定義の編集時には、オブジェクトのメタデータのみが変更されます。物理オブジェクトの定義を更新するには、コントロール・センターを使用して変更後のディメンションを配布します。
SCDの作成後は、データ・オブジェクト・エディタでSCDのタイプを変更できません。
ディメンション定義を編集するには、次のいずれかの方法でデータ・オブジェクト・エディタを開きます。
プロジェクト・エクスプローラで、ディメンションを右クリックして「エディタを開く」を選択します。
プロジェクト・エクスプローラで、ディメンションをダブルクリックします。
データ・オブジェクト・エディタの各タブを使用して、ディメンションの定義を変更します。データ・オブジェクト・エディタの各タブの詳細は、「データ・オブジェクト・エディタの使用」を参照してください。
ディメンションの構成時には、ディメンションと基礎となる表の両方を構成します。
ディメンションの物理プロパティを構成する手順は、次のとおりです。
プロジェクト・エクスプローラで、ディメンション名を右クリックして「構成」を選択します。
構成プロパティ・ウィンドウが表示されます。
次のディメンション・プロパティを構成します。
配布可能: このディメンションを配布する場合は「TRUE」を選択します。Warehouse Builderにより、配布可能マークが付いた表制約についてのみスクリプトが生成されます。
配布オプション: 「すべて配布」、「データ・オブジェクトのみ配布」、「カタログにのみ配布」の各オプションから1つ選択します。配布オプションの詳細は、「ディメンションの配布オプション」を参照してください。
ビュー名: ディメンション・データを格納する実装表の制御行を非表示にするために作成されるビューの名前を指定します。これは、スター・スキーマを使用するリレーショナル・ディメンションまたはROLAPディメンションに適用可能です。ビュー名を明示的に指定しなければ、ディメンション名に接尾辞_vを付けた名前がデフォルトのビュー名として使用されます。
参照可能: このプロパティは、コード生成で使用されません。
リレーショナル実装またはROLAP実装を使用するディメンションの場合は、実装表を構成することもできます。詳細は、「表の構成」を参照してください。
「配布オプション」構成プロパティを使用して、ディメンション・メタデータの配布方法を指定します。ディメンションに対して選択できるオプションは、次のとおりです。
このプロパティに設定できるオプションは、次のとおりです。
すべて配布
データ・オブジェクトのみ配布
カタログにのみ配布
これらのオプションの詳細は、「ディメンション・オブジェクトの配布」を参照してください。
Warehouse Builderには、次の2つのキューブ作成方法が用意されています。
キューブの作成ウィザードを使用して、基本キューブをすばやく作成します。Warehouse Builderでは、ほとんどのパラメータにデフォルト値が想定され、キューブ・データを格納するデータベース構造が作成されます。
集計方法や依存性解決順序など、特定の拡張オプションを指定する必要がある場合は、データ・オブジェクト・エディタを使用してキューブを作成します。キューブの作成ウィザードの使用時には、これらのオプションは使用できません。
また、キューブの作成ウィザードを使用して、基本キューブ・オブジェクトをすばやく作成する方法もあります。作成後に、データ・オブジェクト・エディタを使用して他のオプションを指定します。
ウィザードを使用してキューブを作成する手順は、次のとおりです。
プロジェクト・エクスプローラで、「データベース」ノード、続いて「Oracle」ノードを開きます。
キューブを作成するターゲット・モジュールを開きます。
「キューブ」を右クリックして「新規」→「ウィザードを使用...」を選択します。
キューブ・ウィザードのようこそページが表示されます。「次へ」をクリックして次ページに進みます。ウィザードに表示される指示に従って次の各ページを完了します。
名前と説明ページを使用してキューブを記述します。このページに次の詳細を入力します。
名前: キューブ名です。このキューブ名は、モジュール内で一意である必要があります。
説明: キューブの説明(オプション)を指定します。
記憶域タイプ・ページを使用して、キューブ用の記憶域のタイプを指定します。記憶域タイプにより、データベースにおけるキューブ・データの物理的な格納方法が決定されます。記憶域タイプについて選択できるオプションは次のとおりです。
記憶域タイプは、キューブ全体の最下位レベルに格納されるデータ量、および必要なリフレッシュ・レートに基づいて選択します。
リレーショナル記憶域(ROLAP)
Warehouse Builderでは、キューブ定義とそのデータがデータベースにリレーショナル形式で格納されます。このオプションを使用すると、リレーショナル実装またはROLAP実装を使用するキューブを作成できます。
リレーショナル記憶域の方が望ましいのは、大量の詳細データを格納する場合、または大量のデータが頻繁にリフレッシュされる場合です。次のいずれかを実行する必要がある場合は、リレーショナル記憶域を使用してください。
コール詳細レコード、販売時点(POS)レコード、および他のトランザクション指向データなどの詳細情報の格納。
短い間隔での大量のデータのリフレッシュ。
受注詳細リストなどの詳細レポートの作成。
通常、オペレーショナル・データ・ストアおよびエンタープライズ・データ・ウェアハウスは、リレーショナル記憶域を使用して実装されます。次に、このリレーショナル実装からMOLAP実装を導出し、様々な分析タイプを実行できます。
キューブに対してリレーショナル実装を選択すると、キューブ・データの格納に使用する実装表が作成されます。
多次元記憶域(MOLAP)
Warehouse Builderでは、キューブ定義とキューブ・データがデータベースのアナリティック・ワークスペースに格納されます。このオプションを使用すると、MOLAP実装を使用するキューブを作成できます。
多次元記憶域の方が望ましいのは、分析用の集計データを格納する場合です。通常、多次元記憶域の場合はデータを事前に計算および集計する必要があるため、リフレッシュ間隔はリレーショナル記憶域よりも長くなります。また、集計レベルが上位であるため、データ量は小さくなるのが普通です。次の操作を実行するには、多次元記憶域を使用します。
傾向分析、what-if分析、またはデータの予測および割当てなどの拡張分析。
特定時点の結果を持つデータのドリルおよびピボット。
MOLAP実装を選択すると、アナリティック・ワークスペースへのキューブの格納に使用する名前が生成されます。アナリティック・ワークスペースが存在しない場合は、指定した名前でアナリティック・ワークスペースが作成されます。
ディメンション・ページでは、キューブのディメンションを定義します。キューブは、1つ以上のディメンションを参照する必要があります。ディメンションを定義するには、キューブが参照するディメンションを選択します。「検索」オプションを選択すると、ディメンションをディメンション名で検索できます。同じディメンションを使用して複数のキューブを定義できます。たとえば、ディメンションTIMESをSALESキューブとCOSTキューブで使用できます。
ディメンション・ページには、「使用可能なディメンション」および「選択したディメンション」という2つのセクションがあります。
使用可能なディメンション: 「使用可能なディメンション」セクションには、ワークスペース内の全ディメンションがリストされます。プロジェクト内の各モジュールは個別のノードで表されます。モジュール・ノードを拡張し、そのモジュール内の全ディメンションを表示します。
「使用可能なディメンション」セクションに表示されるディメンションは、ディメンション用に選択した実装タイプに基づいてフィルタされたディメンションです。記憶域タイプとしてROLAPを選択すると、リレーショナル実装を持つディメンションのみがリストされます。記憶域タイプとしてMOLAPを選択すると、アナリティック・ワークスペースに格納されているディメンションのみがリストされます。
選択したディメンション: 「選択したディメンション」セクションには、「使用可能なディメンション」セクションで選択したディメンションがリストされます。右矢印を使用して、「使用可能なディメンション」リストから「選択したディメンション」リストにディメンションを移動します。
メジャー・ページを使用してキューブのメジャーを定義します。メジャーごとに次の詳細を指定します。
名前: メジャー名。メジャー名は、キューブ内で一意である必要があります。
説明: メジャーの説明(オプション)。
データ型: メジャーのデータ型を選択します。
注意: MOLAP実装では、BLOB 、INTERVAL DAY TO SECOND 、INTERVAL YEAR TO MONTH 、RAW 、TIMESTAMP WITH TIME ZONE 、TIMESTAMP WITH LOCAL TIME ZONE の各データ型はサポートされていません。 |
長さ: 長さは文字データ型に対してのみ指定されます。
精度: メジャーに使用できる合計桁数を定義します。精度は数値データ型に対してのみ定義されます。
スケール: 小数点以下の合計桁数を定義します。スケールは数値データ型に対してのみ定義されます。
秒精度: 日時フィールドの小数部の桁数を表します。0から9までの数値を入力できます。秒精度はTIMESTAMP
データ型に対してのみ使用されます。
式: このオプションを使用して計算済メジャーを定義できます。省略記号ボタンをクリックすると「式ビルダー」が表示されます。メジャーの計算に使用する式を定義します。
サマリー・ページを使用して、キューブ・ウィザードで指定したオプションを確認します。キューブの定義を完了するには「終了」をクリックします。このキューブは、プロジェクト・エクスプローラの「キューブ」ノードの下に表示されます。
Warehouse Builderにより、ワークスペースで次のメタデータが作成されます。
キューブ・オブジェクト。
キューブ・データを格納する表の定義。
リレーショナル実装またはROLAP実装の場合は、キューブ・データを格納するデータベース表の定義が作成されます。また、キューブ・データを格納する表に、キューブが参照するディメンションの関連データを格納する各データ・オブジェクトへの外部キーも作成されます。
MOLAP実装の場合は、キューブ・データを格納するアナリティック・ワークスペースが作成されます。このウィザードでは、これらのオブジェクトの定義がリポジトリに作成されるのみであることに注意してください。ターゲット・スキーマにオブジェクトが作成されることはありません。
キューブの配布 キューブおよび関連オブジェクトをターゲット・スキーマに作成するには、キューブを配布する必要があります。ROLAPキューブを配布する前に、キューブ・データを格納するデータベース表を正常に配布してください。または、データベース表とキューブを一緒に配布する方法もあります。詳細は、「ディメンション・オブジェクトのMOLAP実装」を参照してください。
注意: キューブを削除しても、データベース表やアナリティック・ワークスペースなどの関連オブジェクトは削除されません。これらのオブジェクトは明示的に削除する必要があります。 |
データ・オブジェクト・エディタを使用すると、上級ユーザーは要件に従ってキューブを作成できます。また、データ・オブジェクト・エディタはキューブの編集にも使用できます。
キューブの作成にデータ・オブジェクト・エディタを使用するのは、次の操作が必要な場合です。
キューブが疎なディメンションの指定
キューブ・メジャーの集計方法の定義
レベルの集計の事前計算
データ・オブジェクト・エディタを使用してキューブを作成する手順は、次のとおりです。
プロジェクト・エクスプローラで、「データベース」ノード、続いて「Oracle」ノードを開きます。
キューブを作成するターゲット・モジュールを開きます。
「キューブ」を右クリックして「新規」→「エディタを使用」を選択します。
「新規または既存のキューブを追加」ダイアログ・ボックスが表示されます。
「新規キューブの作成」オプションを選択します。キューブ名を入力し、キューブが属するモジュールを選択します。
「OK」をクリックします。
データ・オブジェクト・エディタが表示されます。キューブを定義するには、「キューブの詳細」パネルの次の各タブに情報を入力します。
データ・オブジェクト・エディタを使用してキューブを作成する場合、キューブ・データを格納する物理オブジェクトは自動的に作成されません。手動で作成する必要があります。
キューブ・メジャーとディメンション参照を、そのデータを格納するデータベース列にバインドするには、「キューブ属性のバインド」を参照してください。この手順を実行する必要があるのは、ROLAP実装を使用するキューブの場合のみです。
「名前」タブを使用してキューブを記述します。このタブで次の詳細を指定します。
名前: キューブ名を指定します。キューブ名は、モジュール内で一意である必要があります。
説明: キューブの説明(オプション)を指定します。
「記憶域」タブでは、キューブとキューブ・データの格納方法を指定します。記憶域タイプとして「リレーショナル」または「MOLAP」を選択できます。
リレーショナル キューブ定義とキューブ・データをデータベースにリレーショナル形式で格納するには、「リレーショナル: 関係データ構造」オプションを選択します。このオプションを使用すると、リレーショナル実装またはROLAP実装を持つキューブが作成されます。キューブ・データは、データベース表またはビューに格納されます。
ファクト表のすべての外部キー列のビットマップ索引を生成するには、「ビットマップ索引の作成」オプションを選択します。スター・クエリーの場合は、この選択が必須です。詳細は、Oracleデータ・ウェアハウス・ガイドを参照してください。
ディメンションの外部キー列に一意キーを作成するには、「複合一意キーの作成」オプションを選択します。
MOLAP キューブ・データをアナリティック・ワークスペースに格納するには、「MOLAP: 多次元データ構造」オプションを選択します。このオプションを使用すると、MOLAP実装を持つキューブが作成されます。アナリティック・ワークスペース・セクションを使用して、記憶域の詳細を指定します。このセクションでは、次の詳細を入力します。
AW名: このフィールドでは、キューブ定義とキューブ・データを格納するアナリティック・ワークスペースの名前を指定します。「選択」ボタンを使用して、「アナリティック・ワークスペース」ダイアログ・ボックスを表示します。このダイアログ・ボックスには、現行のプロジェクトにあるディメンション・オブジェクトが表示されます。リストからオブジェクトを選択すると、選択したオブジェクトと同じ名前のアナリティック・ワークスペースにキューブが格納されます。
AW表領域名: アナリティック・ワークスペースが格納される表領域の名前を表します。名前を指定しなければ、アナリティック・ワークスペースはOracleモジュールの所有者のデフォルトのユーザー表領域に格納されます。
「ディメンション」タブを使用して、キューブのディメンションを定義します。このタブには、キューブが参照するディメンションの選択に使用する表と「拡張」ボタンが表示されます。このタブの左にある矢印を使用すると、タブにリストされるディメンションの順序を変更できます。
「拡張」ボタンを使用すると、キューブが参照するディメンションのスパーシティを定義できます。このボタンをクリックすると、「拡張」ダイアログ・ボックスが表示されます。スパーシティを定義できるのはMOLAPキューブの場合のみのため、「拡張」ボタンは記憶域タイプが「MOLAP」の場合にのみ有効化されます。「スパーシティ」ダイアログ・ボックスの詳細は、「拡張」ダイアログ・ボックスを参照してください。
「ディメンション」タブの表は、次の列で構成されています。
ディメンション: このフィールドは、キューブが参照するディメンションの名前を表します。このフィールドにある省略記号ボタンをクリックすると、「使用可能なモジュール」ダイアログ・ボックスが表示されます。このダイアログ・ボックスには、現行のプロジェクトにあるディメンションが表示されます。このリストからディメンションを選択します。
このリストに表示されるディメンションは、キューブに指定した記憶域タイプに基づいてフィルタされたディメンションです。キューブに対してリレーショナル実装を定義すると、リレーショナル実装を使用するディメンションのみが表示されます。キューブに対してMOLAP実装を定義すると、MOLAP実装を使用するディメンションのみが表示されます。
レベル: 「レベル」には、「ディメンション」フィールドで選択したディメンションの全レベルが表示されます。キューブが参照するディメンション・レベルを選択します。
ロール: 「ロール」リストには、選択したディメンションに含まれるディメンション・ロール(存在する場合)が表示されます。キューブで使用するディメンション・ロールを選択します。ディメンション・ロールを指定できるのは、リレーショナル・ディメンションの場合のみです。
「拡張」ダイアログ・ボックスを使用して、キューブが参照するディメンションのスパーシティを指定します。スパーシティを適用できるのは、MOLAPキューブのみです。スパーシティの詳細は、Oracle OLAPユーザーズ・ガイドを参照してください。
このダイアログ・ボックスには、ディメンション列およびスパーシティ列の2列を含む表が表示されます。
ディメンション: この列には、データ・オブジェクト・エディタの「ディメンション」タブにリストされるディメンションがすべて表示されます。ディメンションは、「ディメンション」タブ上と同じ順序でリストされます。このダイアログ・ボックスでのディメンションの表示順序を変更するには、データ・オブジェクト・エディタの「ディメンション」タブでの表示順序を変更する必要があります。
スパーシティ: 「スパーシティ」により、キューブ・データが特定のディメンションでスパースであることを指定されます。キューブ・データがそのディメンションでスパースである場合は、ディメンション参照に対して「スパーシティ」を選択します。たとえば、SALESキューブのデータが販促ディメンションでスパースである場合は、販促ディメンションの「スパーシティ」を選択します。
キューブ内のすべてのスパース・ディメンションは、最小スパースから最大スパースまで順にグループ化される必要があります。たとえば、SALESキューブはディメンションの時間、製品、販促、およびチャネルを参照します。これは「拡張」ダイアログ・ボックスにリストされるディメンションの順序です。キューブ・データは販促ディメンションおよびチャネルディメンションに従うスパースで、販促はスパースが最大の状態です。これらすべてのディメンションは次の順序でグループとして表示される必要があります。時間、チャネル、および販促です。これらのディメンション間ではリストされた他のディメンションを持つことができません。
次のガイドラインを使用して、ディメンションの順序を並び替えます。
最初に時間ディメンションを表示して、データのロードおよび時間ベースの分析を迅速に処理します。通常、時間ディメンションは稠密ディメンションですが、ベース・レベルが日である場合、またはキューブに多くのディメンションがある場合、時間はスパース・ディメンションとなる場合があります。
最大値のメンバーのディメンションから最小値のメンバーのディメンションという順序でスパース・ディメンションがリスト化されます。圧縮キューブの場合、スパース・ディメンションは最小値のメンバーのディメンションから最大値のメンバーのディメンションという順序でリスト化されます。
キューブに対して疎度を定義することには次の利点があります。
データ取得速度の向上
キューブが使用する記憶領域の削減
キューブの圧縮 このオプションを選択すると、キューブ・データが圧縮されてから格納されます。記憶域を圧縮すると容量の使用量が減少し、通常の記憶領域よりも集計が高速になります。キューブの圧縮の詳細は、Oracle OLAPユーザーズ・ガイドを参照してください。
通常、圧縮された記憶域は非常に疎なキューブに使用されます。キューブが非常に疎であるのは、ディメンション階層に複数レベルがあり、ディメンション数がレベル間でほとんど変化しない場合です。そのため、多数の親が複数の連続するレベルに子孫を1つのみ持ちます。集計されるデータ値はレベル間で変化しないため、繰り返し格納するかわりに1度格納すればよいことになります。
圧縮されたコンポジットの場合に選択できるのは、「SUM」および加算以外の集計演算子のみです。
パーティション・キューブ このオプションを選択すると、キューブはディメンションの1つに沿ってパーティション化されます。キューブをパーティション化すると、大きなメジャーのパフォーマンスが改善されます。
パーティション・キューブ・オプションの下の表を使用して、キューブのパーティション化に使用するディメンションを指定します。1レベル以上の階層を持つディメンションを指定する必要があり、特定のレベルのすべての親がほぼ同数の子を持つなど、ディメンション・メンバーが均等に分散している必要があります。「ディメンション」列を使用してキューブのパーティション化に使用するディメンションを選択します。「階層」および「レベル」列を使用して、ディメンション階層とレベルを選択します。
通常、「時間」は必要な基準を満たしているため、キューブのパーティション化には最適の選択肢です。また、データは期間別にロードされてロール・オフされるため、データ・リフレッシュ・プロセスの一部として新規パーティションを作成して古いパーティションを削除できます。
グローバル索引を使用します。グローバル・パーティション索引を作成するには、このオプションを選択します。
「メジャー」タブを使用してキューブ・メジャーを定義します。各メジャーについて次の詳細を指定します。
名前: メジャー名。メジャー名は、キューブ内で一意である必要があります。
説明: メジャーの説明(オプション)。
データ型: メジャーのデータ型。
長さ: メジャーの最大バイト数。長さは、文字データに対してのみ指定されます。
精度: 列に使用できる合計桁数を定義します。精度は数値データ型に対してのみ定義されます。
スケール: 小数点以下の合計桁数を定義します。スケールは数値データ型に対してのみ定義されます。
秒精度: 日時フィールドの小数部の桁数を表します。0から9までの数値を入力できます。秒精度はTIMESTAMP
データ型に対してのみ使用されます。
式: このフィールドを使用して計算済メジャーを定義します。計算済メジャーは、データが格納されないメジャーです。メジャー値は、定義済の式を使用して必要に応じて計算されます。省略記号のボタンをクリックすると、計算済メジャー・ウィザードが表示されます。計算済メジャー・ウィザードの詳細は、「計算済メジャー・ウィザード」を参照してください。
キューブに定義されている他のメジャーを使用して、メジャーの式を作成できます。定義済の式を検証できるのは配布時のみです。
注意: 計算済メジャーを作成できるのは、MOLAPディメンションの場合のみです。 |
標準メジャーの生成ボタンをクリックすると、基本メジャーに対する一連の標準計算が生成されます。これは、共有、ランクおよび時間ベースの計算を短時間で作成できる操作です。このオプションを使用して作成する計算済メジャーは、計算済メジャー・ウィザードを使用して手動で作成することもできます。
計算済メジャー・ウィザードを使用して、MOLAP実装を使用するキューブに計算済メジャーを作成します。これらの計算済メジャーは、キューブに定義されている他のメジャーと同様に、アナリティック・ワークスペースに配布されます。このウィザードを使用すると、「計算済メジャーの生成」をクリックした場合には作成されない特定の付加的計算を作成できます。
このページを使用して、計算済メジャーのタイプを定義します。次のタイプの計算済メジャーを作成できます。
標準計算 「標準計算」オプションを選択すると、テンプレートに基づいて標準計算を定義できます。Warehouse Builderでは、次の標準計算を定義できます。
基本演算: このタイプを使用すると、次のような基本的な算術計算を実行できます。
加算
この計算を使用して、メジャー2つを加算するか、メジャー1つと数値1つを加算します。
減算
この計算を使用して、メジャー2つを減算するか、メジャー1つと数値1つを減算します。
乗算
この計算を使用して、メジャー2つを乗算するか、メジャー1つと数値1つを乗算します。
除算
この計算を使用して、メジャー2つを除算するか、メジャー1つと数値1つを除算します。
比率
拡張演算: このタイプを使用すると、次の拡張計算を作成できます。
累計
この計算を使用して、指定したディメンションの各レベルにおける期間中のメジャー・データの累計を戻します。
たとえば、2001年の売上高累計 = 第1四半期の売上高 + 第2四半期の売上高 + 第3四半期の売上高 + 第4四半期の売上高となります。
指数
この計算を使用して、メジャー値の比率をそのメジャーの基準値に占める割合として戻します。この計算の算式は次のようになります。
(現行メンバー/基準メンバー)
たとえば、消費者物価指数(1967年の基準物価の場合) = (2001年の物価/1967年の物価) * 100となります。
マークアップ率
この計算を使用し、古い方のメジャーを計算の基礎として2つのメジャー間のマークアップ率を戻します。この計算に使用する算式は(y-x)/xです。
たとえば、新価格が110で旧価格が100であるとします。マークアップ率は次のように計算されます。
(110-100)/100 = +10%
差異率
この計算を使用して、メジャーとそのメジャーのターゲットとの差異率を戻します。たとえば、売上と割当て制限の差異率は次のようになります。
(売上-割当て)/割当て
ランク
この計算を使用し、指定したメジャーの値に基づいて、各ディメンション・メンバーのランク値(数値)を戻します。たとえば、DVDが150、TVが100、比率が50の場合、TVの売上ランクは2となります。
共有
この計算を使用して、特定のメジャー値について、他のディメンション・メンバーまたはレベルの同一メジャー値に対する比率を戻します。この計算式は次のようになります。
(現行メンバー/指定したメンバー)
差異
この計算を使用して、ベース・メジャーとそのメジャーのターゲットとの差異を計算します。次に差異の例を示します。
売上差異 = 売上 - 売上予測
前回/将来の比較: このタイプを使用すると、次のように過去または将来の値の計算を定義できます。
前の値
この計算を使用して、前の期間からのメジャー値を戻します。
前期間との差異
この計算を使用して、メジャーの現在の値とそのメジャーの前期間の値との差異を戻します。この計算式は次のようになります。
(現在の値 - 以前の値)
前期間との差異率
この計算を使用して、メジャーの現在の値とそのメジャーの前期間の値との差異率を戻します。この計算式は次のようになります。
((現在の値 - 以前の値)/以前の値)
将来の値
この計算を使用して、将来の期間のアイテムの値を戻します。たとえば、現在が2005年10月の場合、1年後の売上高 = 2006年10月の売上高となります。
時間フレーム: このタイプを使用すると、次の時系列計算を作成できます。
移動平均
この計算を使用して、継続する期間数にわたるメジャーの平均値を戻します。この計算の例を次に示します。
過去3か月の移動平均売上 = (1月の売上+2月の売上+3月の売上) ÷3
移動最大
この計算を使用して、継続する期間数にわたるメジャーの最大値を戻します。この計算の例を次に示します。
過去3か月間の売上高の移動最大 = 1月、2月および3月の最大売上高
移動最小
この計算を使用して、継続する期間数にわたるメジャーの最小値を戻します。この計算の例を次に示します。
過去3か月間の売上高の移動最小 = 1月、2月および3月の最小売上高
移動合計
この計算を使用して、継続する期間数にわたるメジャーの合計値を戻します。この計算の例を次に示します。
過去3か月間の売上高の移動合計 = (1月の売上高 + 2月の売上高 + 3月の売上高)
年度開始から現在
この計算を使用し、期間中のメジャー・データを合計してメジャー・データ累計を作成します。この計算の例を次に示します。
3月までの年累計 = 1月の売上高 + 2月の売上高 + 3月の売上高
カスタム式 「カスタム式」オプションを選択すると、計算済メジャーの計算に使用する式を指定できます。
このページを使用して、計算済メジャーの詳細を定義します。このページの内容は、計算済メジャー・タイプの選択ページで選択した計算のタイプに応じて異なります。たとえば、計算済メジャー・タイプとして加算を選択した場合は、このページに2つのリストが表示され、加算するメジャーを選択できます。
計算済メジャー・タイプの選択ページで「カスタム式」を選択した場合は、式ビルダー・インタフェースが表示されます。このインタフェースを使用してカスタム・メジャーを定義します。式ビルダーの詳細は、「式ビルダー」を参照してください。
「集計」タブを使用して、キューブが参照する各ディメンションに対して実行が必要な集計を定義します。データの集計に使用する集計関数を選択します。また、キューブが参照する各ディメンションに沿ったメジャーを事前計算することもできます。デフォルトでは、各代替レベルについて最下位レベルから順番に集計が実行されます。デフォルトの集計関数はSUMです。データ集計計画の詳細は、Oracle OLAPユーザーズ・ガイドのデータ集計に関する章を参照してください。
「集計」タブで次のオプションを指定します。
キューブ集計方法: キューブ・データの集計に使用する集計関数を選択します。デフォルト選択はSUMです。
サマリーのリフレッシュ方法: データのリフレッシュ方法を選択します。「要求時」または「コミット時」を選択できます。
キューブのサマリー方針: このセクションを使用して、各ディメンションについてデータを事前計算するレベルを定義します。ディメンション列には、キューブが参照するディメンションが表示されます。ディメンション内でデータを事前計算するレベルを選択するには、ディメンション名の右にある事前計算列の省略記号ボタンをクリックします。「事前計算」ダイアログ・ボックスが表示されます。このダイアログ・ボックスを使用して、ディメンション内でメジャー・データを事前計算するレベルを選択します。事前計算するレベルは、ディメンション階層ごとに指定できます。デフォルトでは、最下位レベルから順番に各代替レベルが事前計算されます。
注意: 純粋なリレーショナル・キューブ(データベースのリレーショナル・スキーマにのみ実装され、OLAPカタログには実装されないキューブ)の集計は定義できません。 |
ROLAPキューブの場合、集計データを格納するマテリアライズド・ビューが作成されて集計が実装されます。これらのマテリアライズド・ビューにより、問合せパフォーマンスが向上します。MOLAP実装の場合は、集計データが生成され、基本レベルのデータとともにアナリティック・ワークスペースに格納されます。一部の集計データは配布時に生成され、残りは「集計」タブで定義したルールに従って問合せに対するレスポンス中に集計されます。
注意: ROLAP集計の実装用に作成されるマテリアライズド・ビューは、プロジェクト・エクスプローラの「マテリアライズド・ビュー」ノードには表示されません。 |
「データ・ビューア」タブを使用してキューブ・データを表示します。このタブには「実行」、「クエリー・ビルダー」および「計算ビルダー」という3つのボタンがあります。
実行 「実行」ボタンをクリックすると、キューブの「データ・ビューア」が表示されます。この「データ・ビューア」には、キューブ・データが一度に100行ずつ表示されます。残りの行を表示するには「次へ」をクリックします。
クエリー・ビルダー: 「クエリー・ビルダー」ボタンをクリックするとクエリー・ビルダーが表示されます。クエリー・ビルダーを使用して、キューブからデータをフェッチする問合せをカスタマイズします。たとえば、エッジを入れ替えたりディメンション・メンバーを選択できます。
計算ビルダー: 「計算ビルダー」は、既存のキューブ・メジャーに基づく計算の作成に使用します。作成した計算は、他のメジャーと同様に使用できます。
キューブの構造を定義した後、キューブ・データを格納するデータベース表またはビューの詳細を指定する必要があります。次のオプションを1つ選択して、キューブ・データを格納するデータベース・オブジェクトにキューブをバインドできます。
自動バインド
手動バインド
自動バインド: 自動バインドを実行すると、キューブのメジャーとディメンションの参照がそのデータを格納するデータベース列に自動的にマップされます。
自動バインドを実行する手順は、次のとおりです。
データ・オブジェクト・エディタで、「オブジェクト」→「自動バインド」を選択します。または、グラフィカル・キャンバスの「実装」タブで、キューブ・オブジェクトを右クリックして「自動バインド」を選択することもできます。
「自動バインド」ダイアログ・ボックスが表示されます。
「はい」を選択して自動バインドを実行します。
Warehouse Builderにより、キューブ内のメジャーとディメンションの参照がキューブ・データの格納表にマップされます。
自動バインド・ルールの詳細は、「自動バインド」を参照してください。
手動バインド: 手動バインドの場合は、キューブ内のメジャーとディメンションの参照を、そのデータを格納するデータベース・オブジェクトに明示的にマップする必要があります。キューブ・データを既存の表に格納するか、新規の表を作成できます。
手動バインドを実行する手順は、次のとおりです。
データ・オブジェクト・エディタの「グラフィカル」キャンバスの「ディメンショナル」タブで、キューブ・オブジェクトを右クリックして「詳細の表示」を選択します。
「実装」タブが表示されます。このタブにはキューブ・オブジェクトが表示されます。
キューブ・データの格納用データベース・オブジェクトを表すマッピング演算子をドラッグ・アンド・ドロップします。たとえば、キューブ・データが表に格納される場合は、「実装」キャンバスに「新規または既存の表を追加」アイコンをドラッグ・アンド・ドロップします。
「新規または既存の表を追加」ダイアログ・ボックスが表示されます。キューブ・データの格納用に既存の表を選択するか、新規の表を作成します。
ディメンションの各属性を、そのデータを格納するデータベース列にマップします。
データ・オブジェクトを使用してキューブを定義し、バインド(ROLAPキューブの場合のみ)を実行した後、キューブを配布する必要があります。キューブの配布の詳細は、「キューブの配布」を参照してください。
MOLAP実装を使用したキューブはアナリティック・ワークスペースに格納されます。Oracle Database 10gのアナリティック・ワークスペース・エンジンには、AWXMLというAPIが用意されています。このAPIにより、(アナリティック・ワークスペース・マネージャのような)クライアント/サーバー方式の使用とjavaのストアド・プロシージャによるバッチ方式の使用の両方が可能になります。この項ではMOLAPキューブの実装の詳細を説明します。
ディメンションの「記憶域」タブで「データ・ソースの自然キーを使用」を選択すると、このディメンションを使用するキューブの不規則ファクト・データを処理できるマッピング・コード(AWXMLマッピング・コード)が生成されます。またキューブ・ディメンション・レベルのソース列は、実際にはすべての親レベルにマップされます。これにより、不規則ファクト・データのロードが可能になります。
ディメンションの「記憶域」タブの「アナリティック・ワークスペースでサロゲート・キーを生成」を選択する場合、このディメンションのレベルでデータをロードするマッピングを作成するときに、このレベルのみにキューブ・ディメンション・メンバーをロードします。
Warehouse Builderにより追加の階層定義の必要なく既存のディメンションを再利用できます。集計は定義したキューブのディメンションのレベル参照に基づいて生成されます。キューブのディメンションのレベルがメンバーである階層のみが集計に含まれます。参照されるキューブのディメンションのレベルが階層でリーフのないレベルである場合、キューブまたはメジャーが解決されるときに、階層内でより下位のレベルが除外されます。たとえば、BUDGETとSALESという2つのキューブがある場合、これらはディメンションの階層定義を追加することなく同じディメンション定義を共有できます。
OLAP AWXMLエンジンの重要な属性は、アナリティック・ワークスペースに格納されているキューブの自動解決機能です。圧縮されたキューブおよび圧縮されていないキューブの両方を自動解決できます。圧縮されたキューブは、「拡張」ダイアログ・ボックスの「キューブの圧縮」オプションが選択されたキューブです。
次のいずれかの条件が満たされている場合にキューブは自動解決されます。
キューブは圧縮されています。
キューブは圧縮されていません。また次の追加の条件がtrueです。
すべてのメジャーの「解決」プロパティを「はい」に設定します。
キューブで参照するディメンション・レベルはレベルがメンバーのすべての階層のリーフ・レベルです。
実行されるキューブが含まれるマッピング
キューブの「増分集計」は自動解決(1つの操作でのロードおよび集計)によって異なります。「増分集計」はマッピングのキューブ演算子のプロパティで、自動解決キューブにのみ適用します。Warehouse Builderでは、次の条件がtrueの場合は自動解決キューブではないキューブが生成されます。
キューブは、キューブをロードするマッピングで解決されています。
Warehouse Builder変換はキューブを解決するために使用されます。
キューブは圧縮されていなません。また次の条件のいずれかがtrueです。
いくつかのメジャーでは「解決」プロパティがNoに設定されています。
キューブで参照するディメンション・レベルはレベルがメンバーのすべての階層のリーフのないレベルです。
圧縮されているキューブおよび圧縮されていないキューブの両方に対して、1つのキューブ・メジャーのみを解決できます。圧縮されたキューブは「拡張」ダイアログ・ボックスで「キューブの圧縮」オプションが選択されたキューブです。
圧縮されたキューブで1つのメジャーのみを解決する手順は、次のとおりです。
データ・オブジェクト・エディタを開き、「集計」タブにナビゲートします。
プロジェクト・エクスプローラでキューブ名をダブルクリックすると、データ・オブジェクト・エディタが開きます。
「集計」タブの「メジャー」セクションで解決するメジャーを選択します。
「メジャーの集計」セクションに、キューブで参照する各ディメンションの行が表示されます。キューブを解決するディメンションを表す行で、集計関数列のNOAGGを選択します。
圧縮されていないキューブで1つのメジャーのみを解決するには、最新のデータベースのパッチ10.2.0.2が必要です。Oracle Database 10gリリース1(10.1)を使用している場合、パッチの詳細は、バグ4550247を参照してください。解決のためにキューブ・メジャーで定義されたオプションはどのメジャーが主な解決に含まれるのかを示します。ただし、マップのキューブ演算子にある解決インジケータがこの解決が実行されるかどうかを示します。そのため、マップはデータをロードするかまたは、ロードして解決できます。
事前定義済変換WB_OLAP_AW_PRECOMPUTEを使用すると、ロードに依存しないキューブを解決できます。また、このファンクションによりメジャーもお互いに依存せずに解決できます。この変換ファンクションは「定義済」ノードのOLAPカテゴリにある「パブリック変換」ノードのグローバル・エクスプローラで使用できます。
次の例では、SALES_CUBEのメジャーSALESを解決します。
declare rslt VARCHAR2(4000); begin rslt:=WB_OLAP_AW_PRECOMPUTE('MART','SALES_CUBE','SALES'); end; /
このファンクションには、パラレル解決のパラメータおよびジョブ・キューの最大数のパラメータがあります。キューブをパラレルに解決する場合、非同期解決ジョブが起動し、マスター・ジョブIDはファンクションの戻り値を介して戻されます。
生成される計算プラン 次の計算プランが生成されます。
キューブの計算プラン
格納した各メジャーの計算プラン
これにより、データのロード後にメジャーを個々に解決するか、キューブ全体を解決することができます。また、実際の計算プランではメタデータに基づいてレベルを除外できます。
キューブをロードするマッピングを構成することでキューブのパラレル解決を有効化できます。キューブ演算子には「パラレル解決の許可」というプロパティがあり、また「最大ジョブ・キュー割当済」プロパティもあります。これら2つの構成プロパティにより、パラレル解決を実行するかどうかが決定され、ジョブ・プールのサイズが決定されます。デフォルトではAWXMLエンジンによりこの値が決定されます。
キューブをロードするマッピングを実行するとき、出力パラメータの1つはAW_EXECUTE_RESULTです。パラレル解決を使用してマッピングが実行されると、この出力パラメータにはジョブIDが含まれます。次のデータ・ディクショナリ・ビューを使用して、ジョブを完了する時刻および次に行う手順を判別できます。
ALL_SCHEDULER_JOBS
ALL_SCHEDULER_JOB_RUN_DETAILS
ALL_SCHEDULER_RUNNING_JOBS
マッピングがパラレル解決を使用して実行されない場合、AW_EXECUTE_RESULT出力パラメータに成功したタグまたはエラーが戻されます。エラーの詳細は、OLAPSYS.XML_LOAD_LOG表を参照してください。
データ・オブジェクト・エディタを使用してキューブを編集し、定義を変更できます。ディメンションの定義を編集すると、オブジェクト・メタデータ内でのみ変更されます。物理オブジェクトの定義を更新するには、コントロール・センターを使用して変更後のディメンションを配布します。
キューブ定義を編集するには、次のいずれかの方法でデータ・オブジェクト・エディタを開きます。
プロジェクト・エクスプローラで、キューブを右クリックして「エディタを開く」を選択します。
プロジェクト・エクスプローラでキューブをダブルクリックします。
データ・オブジェクト・エディタの各タブを使用して、キューブ定義を編集します。データ・オブジェクト・エディタの各タブの詳細は、「データ・オブジェクト・エディタの使用」を参照してください。
キューブの構成時には、キューブおよび基礎となる表の両方を構成します。
キューブの物理プロパティを構成する手順は、次のとおりです。
プロジェクト・エクスプローラで、キューブ名を右クリックして「構成」を選択します。
構成プロパティ・ウィンドウが表示されます。
次のキューブ・パラメータを構成します。
配布可能: このキューブを配布する場合は「TRUE」を選択します。Warehouse Builderでは、配布可能マークの付いた表制約についてのみスクリプトが生成されます。
配布オプション: このプロパティを使用して、ディメンションの配布場所を指定します。オプションは次のとおりです。
集計の配布: キューブ・メジャーに定義されている集計を配布します。
すべて配布: リレーショナル実装の場合、キューブはデータベースに配布され、CWM定義はOLAPカタログに配布されます。MOLAP実装の場合、キューブはアナリティック・ワークスペースに配布されます。
データ・オブジェクトのみ配布: キューブのみをデータベースに配布します。このオプションを選択できるのは、リレーショナル実装を持つキューブの場合のみです。
カタログにのみ配布: CWM定義をOLAPカタログにのみ配布します。このオプションを使用するのは、ディメンション・データのみの配布後にDiscoverer for OLAPなどのアプリケーションでそのデータにアクセスする必要がある場合です。
マテリアライズド・ビュー索引表領域: マテリアライズド・ビュー索引を格納する表領域の名前。
マテリアライズド・ビューの表領域: キューブ用に作成されたマテリアライズド・ビューを格納する表領域の名前。
参照可能: このプロパティは、コード生成で使用されません。
キューブに他の構成パラメータはありませんが、キューブの構成については次のようなガイドラインがあります。
各ディメンションに外部キー制約が存在します。
各外部キー列には、参照先ディメンションへのビットマップ索引が生成されています。
この製品には時間ディメンションの作成ウィザードが用意されており、完全な機能を持つ時間ディメンションをすばやく作成できます。時間ディメンションにデータを移入するマッピングも自動的に作成されます。時間ディメンション用にリレーショナル実装を選択すると、時間ディメンション・データを格納する実装オブジェクトも作成されます。
また、データ・オブジェクト・エディタを使用して、独自仕様による時間ディメンションを定義することもできます。この場合は、実装オブジェクトと、時間ディメンションをロードするマップを作成する必要があります。
時間ディメンションの作成ウィザードを使用して時間ディメンションを作成する手順は、次のとおりです。
プロジェクト・エクスプローラで、「データベース」ノード、続いて「Oracle」ノードを開きます。
時間ディメンションを作成するターゲット・モジュールを開きます。
「ディメンション」を右クリックして「新規」→「タイム・ウィザードを使用」を選択します。
時間ディメンションの作成ウィザードのようこそページが表示されます。「次へ」をクリックして次ページに進みます。ウィザードに表示される指示に従って次の各ページを完了します。
名前ページでは、時間ディメンションを説明します。名前ページでは、次の詳細を入力します。
名前: 時間ディメンション名を入力します。ディメンション名は、モジュール内で一意にする必要があります。
説明: 時間ディメンションの説明(オプション)を入力します。
記憶域ページを使用して、データベースへの時間ディメンション・データの格納方法を指定します。記憶域タイプは、キューブ全体の最下位レベルに格納されるデータ量、および必要なリフレッシュ・レートに基づいて選択します。記憶域タイプのオプションは次のとおりです。
リレーショナル記憶域(ROLAP): 時間ディメンション定義がデータベースにリレーショナル形式で格納されます。このオプションを選択すると、リレーショナル実装またはROLAP実装を使用する時間ディメンションを作成できます。
この時間ディメンションの実装に必要な基礎となる表は、Warehouse Builderにより自動的に作成されます。時間ディメンションの実装には、スター・スキーマが使用されます。
多次元記憶域(MOLAP): 時間ディメンション定義とデータがアナリティック・ワークスペースに格納されます。このオプションを選択すると、MOLAP実装を使用する時間ディメンションを作成できます。
時間ディメンションは、Warehouse Builderによりモジュールと同じ名前のアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースの格納に使用される表領域は、ディメンション・メタデータを含むスキーマ用のユーザー表領域として定義されている表領域です。
これらのオプションの詳細は、「記憶域タイプ・ページ」を参照してください。
データ生成ページを使用して、時間ディメンションのタイプおよび格納されるデータの範囲など、時間ディメンションの詳細情報を指定します。このページには、時間ディメンションに格納されるデータの範囲と一時データのタイプの詳細が表示されます。
データの範囲 データの範囲セクションでは、時間ディメンションに格納される一時データの範囲を指定します。範囲を指定するには、次の項目を定義します。
開始年: 時間ディメンションへのデータ格納を開始する年。リストをクリックして開始年を選択します。
年数: 時間ディメンションにデータを格納する開始年からの合計年数。リストから値を選択して年数を指定します。
時間ディメンションのタイプ 時間ディメンションのタイプ・セクションを使用して、作成する時間ディメンションのタイプを指定します。時間ディメンションのタイプを次のオプションから1つ選択します。
カレンダ: カレンダ時間ディメンションを作成します。
会計: 会計時間ディメンションを作成します。会計時間ディメンションを作成するには、次の詳細を追加入力します。
会計規則: 会計月の表現に使用する規則を選択します。使用可能なオプションは、544および445です。
会計年度の開始: 会計年度の開始月日を選択します。
会計週の開始: 会計週の開始曜日を選択します。
レベル・ページを使用して、作成するカレンダ階層とカレンダ階層に含めるレベルを選択します。「カレンダ週」レベルから上のレベルへのドリルアップ・パスはないため、カレンダ階層の作成用に次の2つのオプションが用意されています。
通常階層
週階層
通常階層 「通常階層」には、次のレベルが含まれます。
カレンダ年
カレンダ四半期
カレンダ月
日
カレンダ階層に含めるレベルを選択します。少なくとも2つのレベルを選択する必要があります。
週階層 「週階層」には、「カレンダ週」および「日」という2つのレベルが含まれます。この階層を使用して、「カレンダ週」レベルを含む階層を作成します。「週階層」オプションを選択すると、これらのレベルの両方がデフォルトで選択されます。
レベル・ページを使用して、会計階層に含めるレベルを選択します。次のレベルを選択できます。
会計年度
会計年度四半期
会計年度月
会計年度週
日
少なくとも2つのレベルを選択します。Warehouse Builderにより、選択したレベルを含む会計階層が作成されます。追加の階層を作成するには、データ・オブジェクト・エディタを使用します。データ・オブジェクト・エディタの使用方法の詳細は、「時間ディメンション定義の編集」を参照してください。
作成前の設定ページには、時間ディメンションの作成ウィザードの前ページで選択したオプションのサマリーが表示されます。これには、属性、レベル、階層および時間ディメンションの移入に使用するマップの名前が含まれます。Warehouse Builderでは、これらの設定を使用して時間ディメンションを実装するオブジェクトが作成されます。ウィザードの実装に進むには、「次へ」をクリックします。前のウィザード・ページで選択したオプションを変更するには「戻る」をクリックします。
時間ディメンション進行状況ページには、時間ディメンションの実装の進行状況が表示されます。このページの進行状況ステータス・ログには、時間ディメンションを実装するために時間ディメンション・ウィザードで実行されるアクティビティがリストされます。処理の完了後、「次へ」をクリックして次に進みます。
サマリー・ページには、ウィザードの各ページで選択したオプションのサマリーが表示されます。このページを使用して、選択したオプションを確認します。
時間ディメンションの作成を完了するには、「終了」をクリックします。完全な機能を持つ時間ディメンションが作成されます。このディメンションは、プロジェクト・エクスプローラの「ディメンション」ノードの下に表示されます。この時間ディメンションをロードするマッピングは、プロジェクト・エクスプローラの「マッピング」ノードの下に表示されます。
Warehouse Builderにより次のオブジェクトが作成されます。
時間ディメンション・オブジェクト
時間ディメンション・レベルのサロゲートIDを移入する順序
時間ディメンション・データを格納する物理構造
リレーショナル実装の場合は、ディメンション・データを格納するデータベース表がワークスペースに作成されます。また、時間ディメンション属性が属性値を格納するデータベース列にバインドされます。MOLAP実装の場合は、時間ディメンションとディメンション・データを格納するアナリティック・ワークスペースが作成されます。
時間ディメンションにデータを移入するマッピング。
注意: 時間ディメンションを削除しても、表、順序、および時間ディメンションに関連付けられているマッピングは削除されません。これらのオブジェクトは明示的に削除する必要があります。 |
時間ディメンション・ウィザードを使用して時間ディメンションを作成する場合、次のデフォルトが使用されます。
記憶域: リレーショナル記憶域のデフォルト実装はスター・スキーマです。MOLAP実装の場合、ディメンションは時間ディメンションが作成されるOracleモジュールと同じ名前を持つアナリティック・ワークスペースに格納されます。このアナリティック・ワークスペースは、ディメンションの格納先Oracleモジュールを所有するスキーマ用のユーザー表領域として割り当てられた表領域に格納されます。
階層: ディメンションの作成ウィザードのレベル・ページに表示された全レベルを含む標準階層が作成されます。この階層には、レベル・ページに表示されたのと同じ順序でレベルが含まれています。
時間ディメンションを編集する手順は、次のとおりです。
プロジェクト・エクスプローラで、「データベース」ノード、続いて「Oracle」ノードを開きます。
編集対象の時間ディメンションを含むターゲット・モジュールを開きます。
編集対象の時間ディメンションを右クリックして「エディタを開く」を選択します。また、時間ディメンションをダブルクリックする方法もあります。その時間ディメンションのデータ・オブジェクト・エディタが表示されます。
次の各タブで情報を編集します。
時間ディメンションを変更すると、新規の移入マップと新規の実装表が作成されます。既存の移入マップと実装表を削除するか保持するかを選択できます。
マッピング・エディタを使用して、時間ディメンションの移入マップを変更します。時間ディメンションを移入するマッピングを配布する必要があります。
配布前の移入マップを削除すると、時間ディメンションにデータを移入できません。これを回避するには、時間ディメンション・ウィザードを再実行して、別のディメンション移入マップを作成します。
「名前」タブを使用して時間ディメンションを記述します。このタブで次の詳細を入力します。
名前: 時間ディメンション名。この名前はモジュール内で一意である必要があります。ネーミング規則の詳細は、「データ・オブジェクトのネーミング規則」を参照してください。
説明: 時間ディメンションの説明(オプション)。
データの範囲: 時間ディメンションに格納されるデータの範囲を指定します。範囲を指定するには、次の項目を定義します。
開始年: 時間ディメンションへのデータ格納を開始する年。リストをクリックして開始年を選択します。
年数: 時間ディメンションにデータを格納する開始年からの合計年数。リストから値を選択します。
「記憶域」タブを使用して、時間ディメンションの記憶域のタイプを指定します。使用できる記憶域オプションは「リレーショナル」または「MOLAP」です。
リレーショナル 「リレーショナル」オプションを選択すると、時間ディメンション定義はデータベースにリレーショナル形式で格納されます。時間ディメンションのリレーショナル実装について次のオプションを1つ選択します。
スター・スキーマ: 時間ディメンションはスター・スキーマを使用して実装されます。これは、時間ディメンション・データが単一のデータベース表またはビューに格納されることを意味します。
スノーフレーク・スキーマ: 時間ディメンションはスノーフレーク・スキーマを使用して実装されます。これは、時間ディメンション・データが複数の表またはビューに格納されることを意味します。
MOLAP 「MOLAP」を選択すると、時間ディメンションの定義とデータがデータベースのアナリティック・ワークスペースに格納されます。この方法では、アナリティック・ワークスペースを使用して時間ディメンション・データが格納されます。MOLAP実装の場合は次の詳細を入力します。
AW名: 時間ディメンションを格納するアナリティック・ワークスペースの名前を入力します。省略記号のボタンをクリックすると、使用可能なアナリティック・ワークスペースのリストが表示されます。Warehouse Builderでは、現行のプロジェクトにあるモジュールごとにノードが1つ表示されます。モジュールを開いて、そのモジュール内のディメンション・オブジェクトのリストを表示します。リストからオブジェクトを選択すると、そのオブジェクトと同じアナリティック・ワークスペースに時間ディメンションが格納されます。
表領域名: アナリティック・ワークスペースを格納する表領域の名前を入力します。値を入力しない場合、アナリティック・ワークスペースは時間ディメンションのメタデータを含むスキーマのユーザー表領域として定義されている表領域に格納されます。
「属性」タブでは、ディメンション属性と、時間ディメンションのディメンション・キーの移入に使用する順序を定義します。「順序」フィールドは、時間ディメンションのディメンション・キー列に移入する順序の名前を表します。このフィールドの右にある「選択」を使用して、「利用可能な順序」ダイアログ・ボックスから順序を選択します。このダイアログ・ボックスには、現行のプロジェクトに属している順序がすべて表示されます。
ディメンション属性 「ディメンション属性」セクションには、時間ディメンションのディメンション属性が表示されます。このページは、新規ディメンション属性の作成にも使用します。属性ごとに次の詳細を指定します。
名前: ディメンション属性名。属性名はディメンション内で一意である必要があります。
説明: 属性の説明(オプション)。
識別子: 属性の識別子のタイプを表します。リストには2つのオプション「サロゲート」および「ビジネス」が表示されます。識別子のタイプを選択します。
データ型: 属性のデータ型を選択します。
長さ: 長さは文字データ型に対してのみ指定されます。
精度: 列に使用できる合計桁数を定義します。精度は数値データ型に対してのみ定義されます。
スケール: 小数点以下の合計桁数を定義します。スケールは数値データ型に対してのみ定義されます。
秒精度: 日時フィールドの小数部の桁数を表します。0から9までの数値を入力できます。秒精度はTIMESTAMP
データ型に対してのみ使用されます。
記述子: 記述子のタイプを選択します。オプションは「簡単な説明」、「詳細な説明」、「開始日」、「終了日」、「期間」および「前回の期間」です。
「レベル」タブでは、時間ディメンションのレベルを定義します。「レベル」セクションで名前と説明(オプション)を入力してレベルを追加作成できます。「レベル」タブの内容の詳細は、「レベル属性ページ」を参照してください。
「階層」タブを使用して、時間ディメンションに階層を追加作成します。時間ディメンションの定義を変更した場合、それを移入するマップに変更内容を反映させる必要があります。「マップ作成」をクリックして、時間ディメンションを移入するマップを再作成します。会計時間ディメンションの場合は、「会計の設定」をクリックして会計の設定を変更できます。「会計情報設定」ダイアログ・ボックスが表示されます。このダイアログ・ボックスを使用して、会計規則、会計年度の開始および会計週の開始を変更します。
「階層」タブには、「階層」および「レベル」という2つのセクションがあります。