Oracle Warehouse Builderでは、ディメンション・オブジェクトを定義、配布およびロードできます。ディメンション・オブジェクトの配布先は、リレーショナル・スキーマまたはデータベース内のアナリティック・ワークスペースです。
この章の内容は次のとおりです。
データを識別および分類するための追加のメタデータが含まれるオブジェクトを、ディメンション・オブジェクトと呼びます。Oracle Warehouse Builderでは、ディメンションとキューブという2つのタイプのディメンション・オブジェクトを設計、配布およびロードできます。この章では、ディメンションとキューブの両方をディメンション・オブジェクトという語で表します。ほとんどの分析問合せで時間ディメンションを使用する必要があります。Oracle Warehouse Builderには、簡単な質問に答えることで時間ディメンションを容易に作成し、移入できるツールが用意されています。
ディメンション・オブジェクトを作成する手順
ディメンション・オブジェクトの作成は、次の上位タスクで構成されます。
ディメンション・オブジェクトの定義
ディメンション・オブジェクトを定義するときは、より構造化された形式でデータを格納できるように、論理的な関係を記述します。たとえば、ディメンションを定義するには、属性、レベルおよび階層を記述します。キューブを定義するには、そのメジャーとディメンションを定義します。
ウィザードまたはエディタを使用してディメンション・オブジェクトを定義できます。詳細は、次を参照してください。
ディメンション・オブジェクトの実装
「ディメンション・オブジェクトの実装の概要」を参照してください。
ディメンション・オブジェクトの配布
ディメンション・オブジェクトのロード
データをディメンション・オブジェクトにロードするには、データ・フローを定義して、ソース・オブジェクトからディメンション・オブジェクトに変換するマッピングを作成します。次に、このマッピングを配布して実行します。
ディメンションは、データを編成する構造です。一般的に使用されるディメンションの例には、顧客、時間および製品があります。
リレーショナル・ディメンションの場合は、ディメンションの使用によって、問合せパフォーマンスが向上します。これは、ユーザーが既知の階層をドリルダウンしてデータを分析することがよくあるためです。階層の例には、年、四半期、月、日という時間階層があります。データベースでは、詳細表ではなくマテリアライズド・ビューからデータを取り出す問合せをリライトして、これらの定義済階層を使用します。
時間ディメンションは、一連のレベルとこれらのレベルに定義される一連の階層で構成されます。ディメンションを作成するには、次の内容を定義する必要があります。
ディメンション属性
レベル
レベル属性
レベルについてのサロゲート識別子およびビジネス識別子を含みます。
階層
関連項目: ディメンション属性、レベル、レベル属性および階層の定義の詳細は、『Oracle Warehouse Builder概要』を参照してください。 |
サロゲート識別子は、ディメンションのすべてのレベルにまたがって、各レベルのレコードを一意に識別します。この識別子は、単一の属性で構成する必要があります。サロゲート識別子を使用すると、ファクトを最下位ディメンション・レベルのみでなく、どのディメンション・レベルにもフックできます。リレーショナル実装またはROLAP実装を使用しているディメンションの場合、サロゲート識別子のデータ型はNUMBER
であることが必要です。
ディメンションがタイプ2またはタイプ3 SCDの場合。この場合は、各ビジネス・キー値にロードされた複数のディメンション・レコードがあるため、レコードを追跡するための付加一意キーが必要になります。
複数のレベルを含むディメンションは、スター・スキーマを使用して実装されます。そのため、このようなディメンションを参照するキューブは、複数のディメンション・レベルを参照します。
サロゲート・キーを定義していない場合、ディメンション・テーブルにはリーフ・レベルのディメンション・レコードのみが保存され、親レベルの情報はリーフ・レベルの付加列に格納されます。ただし、この場合、上位レベルを参照する一意の方法はありません。
スターまたはスノーフレークで実装される任意のディメンションで、キューブによってリーフ・レベルのみが参照されるというタイプ1ディメンションに対するサロゲート・キーは必要ありません。複数の階層を持つディメンションは、リーフ・レベルがキューブに参照されるため、サロゲート・キーなしで機能します。
緩やかに変化するディメンション(SCD)は、現行データと履歴データの両方を一定期間にわたってデータ・ウェアハウスで保存および管理するディメンションです。データ・ウェアハウスでは、一般に認知されている3種類のSCDタイプがあります。表3-1にSCDのタイプを示します。
表3-1 緩やかに変化するディメンションのタイプ
タイプ | 説明 |
---|---|
タイプ1 |
単一バージョンのディメンション・レコードのみを格納します。変更時に、レコードは上書きされ、履歴データは保存されません。 |
タイプ2 |
同じディメンション・レコードの複数のバージョンを格納します。ディメンションレコードが変更されると、古いバージョンは保持され、新規バージョンが作成されます。 |
タイプ3 |
単一バージョンのディメンション・レコードを格納します。このレコードには、選択した属性について元の値と現行値が保存されます。 |
タイプ2 SCDおよびタイプ3 SCDを使用して、現行データと履歴データの両方を一定期間にわたってデータ・ウェアハウスで保存および管理します。ディメンションといわれる、タイプ1ディメンションは履歴データを保持しません。
タイプ2またはタイプ3のSCDを作成するには、通常のディメンション属性に加え、次のロールを実行する追加属性が必要です。
トリガー属性: これらは履歴値を格納する必要がある属性です。たとえば、PRODUCTSディメンションでは、Productレベルの属性PACKAGE_TYPEをトリガー属性にできます。属性の値を変更する場合、古い値を格納する必要があります。
属性は前述のいずれか1つの役割のみを担当できます。たとえば、1つの属性が通常の属性と有効日属性の両方にはなりません。ウィザードを使用してタイプ2またはタイプ3のSCDを作成する場合は、必要な追加属性が作成されます。
タイプ2 SCDには、値の完全な履歴が保持されます。トリガー属性の値が変更されると、カレント・レコードはクローズされます。変更されたデータ値で新しいレコードが作成され、この新しいレコードがカレント・レコードになります。各レコードには、レコードがアクティブであった期間を識別する有効日と有効期限があります。NULL以外の特定の日付値を有効期限として設定することもできます。カレント・レコードは、有効期限がNULL値または以前に指定した値のレコードです。
ディメンション内のすべてのレベルに履歴データを格納する必要がありません。通常は、最下位レベルのみがバージョン管理されます。
タイプ2の緩やかに変化するディメンション(SCD)を定義するには、次の内容を指定する必要があります。
履歴データを格納するレベルに対して、有効日と有効期限として使用する属性を指定します。
履歴のバージョンの作成をトリガーするレベル属性を選択します。
サロゲート識別子、有効日属性または有効期限属性は、トリガー属性として選択できません。
レコードの各バージョンに異なるサロゲート識別子が割り当てられます。ビジネス識別子は、論理的な意味で異なるバージョンを接続します。通常は、ビジネス・ニーズがある場合にタイプ2のSCDが使用されます。
Customers
のタイプ2のSCDに、HouseholdおよびCustomerという2つのレベルがあると想定します。Customerはリーフ・レベルで、Householdは非リーフ・レベルです。表3-2にCustomers
のタイプ2のSCDのレベル属性がリストされています。
表3-2 Customersのタイプ2のディメンション属性
属性名 | 識別子 |
---|---|
|
サロゲート識別子 |
|
ビジネス識別子 |
|
|
|
|
|
|
|
|
|
有効日 |
|
有効期限 |
世帯レベルでは、ID
、BUSN_ID
、ADDRESS
、ZIP
、EFFECTIVE_DATE
およびEXPIRATION_DATE
という属性が実装されています。Customerレベルでは、ID
、BUSN_ID、MARITAL_STATUS
、HOME_PHONE
、EFFECTIVE_DATE
、EXPIRATION_DATE
という属性が実装されています。Customers_tab
表には、タイプ2のSCD Customersが実装されています(リレーショナル実装またはROLAP実装として)。表3-3は、Customers_tab
表の列、およびディメンション・レベルと各列に実装されている属性の詳細を示しています。
表3-3 Customersタイプ2のSCDレベル属性を実装する列
Customers_tab 表の列名 |
レベル名 | ディメンション属性名 |
---|---|---|
DIMENSION_KEY |
||
H_ID |
Household |
ID |
H_BUSN_ID |
Household |
BUSN_ID |
H_ADDRESS |
Household |
ADDRESS |
H_ZIP |
Household |
ZIP |
H_EFFECTIVE_DATE |
Household |
EFFECTIVE_DATE |
H_EXPIRATION_DATE |
Household |
EXPIRATION_DATE |
C_ID |
Customer |
ID |
C_BUSN_ID |
Customer |
BUSN_ID |
C_MARITAL_STATUS |
Customer |
MARITAL_STATUS |
C_HOME_PHONE |
Customer |
HOME_PHONE |
C_EFFECTIVE_DATE |
Customer |
EFFECTIVE_DATE |
C_EXPIRATION_DATE |
Customer |
EXPIRATION_DATE |
Customersのタイプ2のSCDを作成する手順は、次のとおりです。
HouseholdレベルのZIP
属性およびCustomerレベルのMARITAL_STATUS
属性をトリガー属性として指定します。
2つの追加属性を使用して、そのレベルのレコードの有効日と有効期限を格納します。ディメンションの作成ウィザードを使用すると、これらの追加属性は最下位レベルに対してのみ作成されます。ディメンション・エディタを使用する場合は、これらの属性を明示的に作成して、その属性を該当するレベルに適用する必要があります。
タイプ2のSCDにおいて、ディメンションの非リーフ・レベルにバージョン管理する属性がある場合は、この非リーフ・レベルのバージョンは、結果的に、対応する子レコードのバージョンとなります(子レコードに有効日属性および有効期限属性がある場合)。「タイプ2のSCDの例」で説明されているようにCustomers
タイプ2のSCDにおいて、たとえば、H_ZIP
の値が特定のHouseholdレベル・レコードで更新された場合は、このHouseholdレベルに対応する子レコードは自動的にバージョン管理されます。
階層バージョニングは、タイプ2のSCDのデフォルトでは有効ではありません。ディメンションの作成ウィザードを使用してタイプ2のSCDを作成する場合は、階層バージョニングは無効になります。階層バージョニングを有効にするには、ディメンション・エディタを使用する必要があります。
プロジェクト・ナビゲータでタイプ2 SCDを右クリックし、「開く」を選択します。
ディメンション・エディタが表示されます。
「SCD」タブにナビゲートします。
「タイプ2: 変更履歴をすべて格納」オプションの右側の「設定」をクリックします。
「タイプ2緩やかに変化するディメンション」ダイアログ・ボックスが表示されます。各レベルの属性が「レベル」ノードの下に表示されます。
親属性が変更された場合にバージョン管理される必要のある子レベルでは、子レベルの親属性を表す属性に対して、「レコード履歴」列内の「トリガー履歴」を選択します。
たとえば、ディメンションの作成ウィザードを使用して、Customers
のタイプ2のSCDを作成します。このタイプ2のSCDのエディタを開いて、「タイプ2緩やかに変化するディメンション」ダイアログ・ボックスにナビゲートします。Customer
レベルにはHOUSEHOLD_ID
という属性があります。この属性は、各Customer
レコードの親属性を表します。HOUSEHOLD_ID
属性に対して、「レコード履歴」列の「トリガー履歴」を選択します。
タイプ3の緩やかに変化するディメンション(SCD)には、選択した特定のレベル属性の値について2つのバージョンが格納されます。各レコードには、バージョン管理された属性について元の値と現行の値が格納されます。バージョン管理されたいずれかの属性の値が変更されると、現行の値は古い値として格納され、新しい値が現行の値となります。各レコードには、現在の値がアクティブになった日付を識別する有効日が格納されます。これにより、バージョン管理された属性の列数は2倍になるため、タイプ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
属性に格納されることになります。有効日属性は、現在のシステム日付または他の指定した日に設定できます。
キューブには、メジャーおよび1つ以上のディメンションへのリンクが含まれます。キューブの軸にはディメンション・メンバーが組み込まれ、キューブの本体にはメジャーの値が格納されます。ほとんどのメジャーは加法的なメジャーです。たとえば、売上データは、キューブ・エッジに時間、製品および販促のディメンション値が指定され、キューブ本体にバリュー売上とドル売上のメジャーから値が格納されるキューブに編成できます。
キューブは、外部キー制約によってディメンション表にリンクされます。これらの制約は、データ整合性が最も重要とされるデータ・ウェアハウス環境には不可欠です。この制約によって、データ・ウェアハウスを使用する日常業務での参照整合性が順守されます。
データ分析アプリケーションでは、通常、多くのディメンションにわたってデータが集計されます。これによって、データの変則的または特異なパターンを確認できます。キューブの使用は、この種の操作を実行する最も効率的な方法です。リレーショナル実装で、ウェアハウス・キーが設定されているディメンションを設計する場合、キューブの行の長さは一般的に短くなります。これは、ウェアハウス・キーの長さが対応する本来のデータより短いためです。その結果、キューブ・データに必要な記憶領域は少なくなります。MOLAP実装では、OLAPでVARCHAR2キーが使用されます。
一般的なキューブには、次の要素が含まれます。
一連の外部キー参照列、またはデータ・リストの場合は人工キーまたは一連のウェアハウス・キー列に定義された主キー。キューブがデータ・リストの場合、外部キー参照列ではキューブの各行は一意に識別されません。
表を対応するディメンションにリンクする一連の外部キー参照列。
キューブを作成するには、キューブ・メジャーとキューブのディメンションを定義する必要があります。メジャーとキューブのディメンションの詳細は、「Oracle Warehouse Builder概要」を参照してください。
Oracle Warehouse Builderのオーファン管理ポリシーでは、ディメンション・オブジェクト(ディメンションおよびキューブ)内の孤立レコードを管理できます。孤立レコードとは、対応する既存の親レコードがないレコードです。オーファン管理では、有効なディメンション・レコードまたはキューブ・レコードの形成に必要な要件に合致しないソース行処理のプロセスを自動化します。
孤立レコードは、次のような場合に発生します。
ディメンション・オブジェクトにロードされるレコードに対応する親レコードがない。
1つまたは複数のレベル参照がNULLまたは存在しない場合に、ディメンション・レコードがオーファンとみなされます。1つまたは複数のディメンション・レコードで参照が存在しないかまたはNULLのどちらかである場合に、キューブ・レコードはオーファンとみなされます。
レコードがディメンション・オブジェクトから削除される。この結果、既存の親を持たない、削除されたレコードの子レコードが発生します。
Oracle Warehouse Builderでは、ディメンション・オブジェクトのロードおよびディメンション・オブジェクト・データの削除について異なるオーファン管理ポリシーを指定できます。
注意: オーファン管理は、MOLAPディメンションとMOLAPキューブではサポートされません。 |
既存の親レコードを持たないレコードを挿入する場合、ディメンション・オブジェクトへのデータのロード中に、孤立レコードは作成されます。たとえば、「Geography」ディメンションの「City」レベルにデータをロードします。このレコードの「State」属性の値は、「State」レベルに存在しません。このレコードは、孤立レコードです。または、データを「SALES」キューブにロードしても、「Customers」ディメンションにおける「Customer ID」の値は存在しません。
Oracle Warehouse Builderを使用すると、孤立レコードをディメンション・オブジェクトにロードする際に使用する整合性ポリシーを指定できます。NULLの親レコードを持つレコードおよび無効な親レコード持つレコードについて別のアクションを指定できます。
ロードに設定できるオーファン管理ポリシーのオプションは次のとおりです。
ロード拒否: ロードは挿入されません。
デフォルトの親: デフォルトの親レコードを指定できます。このデフォルト・レコードは、既存の親レコードを持たないあらゆるレコードの親レコードとして使用されます。デフォルトの親レコードが存在しない場合、デフォルトの親レコードが追加されます。
ディメインション・オブジェクトを定義するときに、デフォルトの親レコードの属性値を指定できます。デフォルトの親の祖先が存在しない場合は、このレコードも作成されます。
メンテナンスなし: デフォルトの動作です。孤立レコードの検出、拒否または修正は積極的に行われません。
削除されているレコードが対応する子レコードを持つ場合、データ削除中にオーファン・レコードが作成されます。たとえば、「Geography」ディメンションの「State」レベルでレコードを削除するとします。「state」は、これを参照する「city」レコードを持ちます。削除された「state」レコードを参照するすべての「city」レコードは、孤立レコードとなります。
ディメンションからデータを削除する際に、オーファン管理ポリシーを1つ選択できます。
削除拒否: 既存の子レコードを持つ場合、レコードの削除は許可されません。
メンテナンスなし: デフォルトの動作です。孤立レコードの検出、拒否または修正は積極的に行われません。
エラー表には、ディメンション上でロードまたは削除の操作中に、オーファン管理においてエラーとして検出されるあらゆるレコードが格納されます。ディメンション・エディタの「孤立」タブ上の「エラー表の配布」オプションを選択する場合、最初にディメンションを配布するときにエラー表は作成されます。
エラー表に表示されるレコードは次のとおりです。
ロード操作中に挿入されないレコード
ロード操作中に親がデフォルト化されるレコード
削除操作中に削除できないレコード
各実装オブジェクトにつき1つのエラー表を作成します。たとえば、スノーフレーク・スキーマを使用してディメンションを実装する場合には、複数のエラー表が作成されます。スター・スキーマを使用してディメンションを実装する場合は、1つのエラー表が作成されます。エラー表の名前は、実装オブジェクトに接尾辞として_ERRを付けたものになります。実装表がCITY
の場合、エラー表は、CITY_ERR
となります。
注意: オーファン管理では、MOLAPディメンション・オブジェクトはサポートされないため、リレーショナル実装またはROLAP実装のみを持つディメンションおよびキューブに対するエラー表が作成されます。 |
ディメンション・オブジェクトを実装するには、ディメンション・オブジェクトの物理構造を作成します。Oracle Warehouse Builderには、ディメンション・オブジェクトに対して次の実装が用意されています。
注意: MOLAP実装を使用するには、OLAPオプションを有効にしたDatabase Enterprise Edition 10.1.0.4以上を使用する必要があります。 |
実装は、ディメンション・オブジェクトを作成するために使用されるウィザードの「記憶域」ページ、またはオブジェクト・エディタの「記憶域」タブを使用して設定されます。「配布オプション」構成パラメータを使用して、実装の配布オプションをさらに絞り込むことができます。このパラメータの設定の詳細は、「ディメンションの構成」および「キューブの構成」を参照してください。
リレーショナル実装を行うと、ディメンション・オブジェクトとそのデータがリレーショナル形式でデータベースに格納されます。ディメンション・オブジェクトのデータは実装オブジェクト(通常は表)に格納されます。ディメンション・オブジェクトに対して問合せを実行した場合、この表からデータが取得されます。Oracle Warehouse Builderにより、ディメンション・オブジェクトを作成するDDLスクリプトが作成されます。このスクリプトは、コントロール・センターを使用してデータベースに配布できます。リレーショナル・ディメンションの場合は、スター・スキーマ、スノーフレーク・スキーマまたは手動スキーマを使用して実装オブジェクトを格納することができます。
関連項目: スター・スキーマおよびスノーフレーク・スキーマによるディメンション・データの格納形式の詳細は、『Oracle Warehouse Builder概要』を参照してください。 |
ウィザードを使用してディメンション・オブジェクトを定義すると、Oracle Warehouse Builderでは、ディメンション・オブジェクト・データを格納するデータベース表が作成されます。また、ディメンション・オブジェクトの属性と、ディメンション・オブジェクト・データを格納する表列を定義する実装表とのアソシエーションも定義されます。
エディタを使用してディメンション・オブジェクトを定義すると、Oracle Warehouse Builderで実装表を作成するか、独自の表とビューにディメンション・オブジェクト・データを格納するかを決定できます。Oracle Warehouse Builderで実装オブジェクトを作成する場合、ディメンション・オブジェクトに自動バインドを実行します。独自の実装表を使用してディメンション・オブジェクト・データを格納する場合は、手動バインドを実行します。
注意: リレーショナル実装の場合、ディメンション・オブジェクトに格納されたデータを、データ・ビューアを使用して表示することはできません。ただし、ディメンション・オブジェクトの実装表に格納されたデータは、データ・ビューアを使用して表示できます。 |
バインドは、ディメンション・オブジェクトの属性を、そのデータが格納されている表またはビューの列に結合するプロセスです。バインドを実行するのは、リレーショナル実装またはROLAP実装を使用しているディメンション・オブジェクトに対してのみです。多次元オブジェクトについては、バインドは暗黙的であり、アナリティック・ワークスペースで解決されます。
ディメンションでは、レベル属性およびレベルの関係を実装オブジェクト内の列に接続します。キューブでは、メジャーおよびディメンション参照を実装表の列に接続します。
Oracle Warehouse Builderには、自動バインドと手動バインドという2通りのバインド方法があります。
ウィザードを使用してディメンション・オブジェクトを作成する場合、オブジェクトはバインドされることになります。エディタを使用してディメンション・オブジェクトを変更する場合、それを配布する前にオブジェクトは再バインドされる必要があります。
エディタを使用してディメンション・オブジェクトを作成する場合、配布前にディメンション・オブジェクトをその実装オブジェクトにバインドする必要があります。
エディタを使用してディメンション・オブジェクトを変更する場合、ディメンション・オブジェクトを実装オブジェクトに再バインドする必要があります。
自動バインドでは、実装表が存在しない場合は、実装表の作成が参照されます。次に、ディメンション・オブジェクトの属性と関係が、ディメンション・オブジェクト・データを格納する列にバインドされます。ディメンションの場合、ディメンション・データの格納に使用される表の数は選択した格納オプションによって異なります。自動バインドは、ウィザードとエディタのどちらを使用しても実行できます。エディタを使用してディメンション・オブジェクトを作成する場合は、自動バインドと手動バインドの両方を実行できます。
プロジェクト・ナビゲータで、ディメンション・オブジェクトを右クリックして「開く」を選択します。
このディメンション・オブジェクトのエディタが表示されます。
「物理的バインド」タブで、ディメンション・オブジェクトを表すノードを選択します。
「ファイル」メニューから、「バインド」を選択します。
「バインド」オプションが有効でない場合は、ディメンション・オブジェクトによりリレーショナル実装またはROLAP実装が使用されているかどうかを検証します。このディメンションの場合は、「記憶域」タブの「実装」セクションで「手動」オプションが設定されていないことを確認します。
または、プロジェクト・ナビゲータのディメンション・オブジェクトを右クリックし、「バインド」を選択して自動バインドを実行できます。
手動バインドでは、ディメンション・オブジェクトの属性を、そのデータが格納されているデータベース列に明示的にバインドする必要があります。ディメンション・オブジェクトを既存の表またはビューにバインドする場合は、手動バインドを使用します。ディメンション・オブジェクトが特定の実装オブジェクトにバインドされている場合は(ディメンション・エディタの「物理的バインド」タブに表示されます)、ディメンション・オブジェクトをアンバインドしてから、手動バインドを実行します。ディメンション・オブジェクトのアンバインドの詳細は、「アンバインド」を参照してください。
ディメンション・オブジェクトの手動バインドを実行する手順は、次のとおりです。
ディメンション・オブジェクト・データの格納に使用する実装オブジェクト(表またはビュー)を作成します。
リレーショナルまたはROLAPディメンションの場合は、ディメンションのサロゲート識別子のロードに使用する順序を作成します。既存の順序を使用できます。
プロジェクト・ナビゲータで、ディメンションを右クリックして「開く」を選択します。
ディメンション・オブジェクトのエディタが表示されます。
「物理的バインド」タブで、空白の領域を右クリックして「追加」、実装オブジェクトを表すオブジェクトのタイプの順に選択します。
「新規または既存の<オブジェクト>を追加」ダイアログ・ボックスが表示されます。たとえば、ディメンション・データが表に格納される場合、「物理的バインド」タブで空白の領域を右クリックして、「追加」、「表」の順に選択します。「新規または既存の表を追加」ダイアログ・ボックスが表示されます。
「既存の<オブジェクト>を選択」オプションを選択し、選択ツリーに表示されるオブジェクトのリストからデータ・オブジェクトを選択します。
「OK」をクリックします。
追加したオブジェクトを表すノードがキャンバスに表示されます。
ディメンションでは、ディメンション・データの格納に複数のデータ・オブジェクトが使用される場合は、各データの実装オブジェクトについてステップ3から5を実行します。
ディメンションでは、ディメンションの各レベル内の属性をそれらのデータを格納する列にマッピングします。また、レベルの関係をそれらのデータを格納するデータベース列にマッピングします。
キューブでは、メジャーおよびディメンション参照をキューブ・データを格納する列にマッピングします。
実装オブジェクト列にマッピングするには、ディメンションまたはキューブ属性の上でマウスを押したままドラッグし、属性値が格納されている列の上にドロップします。
たとえば、「ディメンションの例」で説明しているPRODUCTS
ディメンションでは、 PRODUCTS
ディメンションのGroupsレベル内のNAME
属性は、PRODUCTS_TAB
表のGROUP_NAME
属性内に格納されています。NAME
属性の上でマウスを押したままドラッグし、PRODUCTS_TAB
表のGROUP_NAME
属性の上にドロップします。
ROLAP実装では、リレーショナル実装と同様に、ディメンション・オブジェクトとそのデータが、リレーショナル形式でデータベースに格納されます。また、ROLAP実装によって、OLAPカタログおけるCWM2メタデータ、またはOLAPキューブ・マテリアライズド・ビューのどちらかが作成されます。
この項ではROLAP実装の分類方法を説明します。
ディメンション・オブジェクトとそのデータはリレーショナル形式でデータベースに格納され、ディメンション・オブジェクトのCWM2メタデータはOLAPカタログに格納されます。これを実行することにより、ディメンション・オブジェクトをDiscoverer (for OLAP)から問い合せることができます。
ディメンション・オブジェクトとそのデータはリレーショナル形式でデータベースに格納されます。また、キューブ編成されたマテリアライズド・ビューは、アナリティック・ワークスペースに作成されます。
注意: Oracle Warehouse Builder 11g リリース2(11.2)では、MV実装されたROLAPについては、スター・スキーマ表のみがサポートされます。 |
OLAPカタログについて
OLAPカタログは、OracleデータベースのOLAPオプション用に提供されているメタデータ・リポジトリです。このメタデータでは、リレーショナル表に格納されるデータが記述されます。
Oracle Warehouse Builderを使用してディメンション・オブジェクトを配布するときは、ディメンション・オブジェクト・メタデータをOLAPカタログに格納するかどうかを指定できます。
OLAPメタデータは、アクティブ・カタログ・ビュー(名前がALL_CWM2_AWで始まるビュー)と呼ばれる一連のビューを介して動的に提示されます。
Oracle Database 10gでは、OLAPカタログのメタデータはOLAPツールおよびリレーショナル・スター・スキーマやスノーフレーク・スキーマに格納されたデータにアクセスするアプリケーションで使用されます。Discovererなどの外部アプリケーションではリレーショナル・データおよび多次元データに問合せを行うためにOLAPカタログが使用されます。アプリケーションでは、データがリレーショナル表にあるのかアナリティック・ワークスペースにあるのかを認識し、またはデータにアクセスするメカニズムを認識する必要があります。
OLAPカタログは、格納されているメタデータを使用して、リレーショナル表またはビューに格納されているデータにアクセスします。OLAPカタログによって、論理多次元オブジェクトが定義され、それらが物理データ・ソースにマッピングされます。論理オブジェクトはディメンションおよびキューブです。物理データ・ソースは、リレーショナル表またはビューの列です。
MOLAP実装では、ディメンション・オブジェクト・データが、Oracle Database 10gまたはDatabase 11gのアナリティック・ワークスペースに格納されます。このアナリティック・ワークスペースは、データベースに格納されます。
AWを含むコンピュータのロケーションがDatabase 10gを使用する場合、アナリティック・ワークスペースからOLAP 10gが生成されます。ロケーションがDatabase 11gを使用した場合は、アナリティック・ワークスペースからOLAP 11gが生成されます。
アナリティック・ワークスペースは、データを多次元形式で格納するOracleデータベース内のコンテナです。アナリティック・ワークスペースによって、OLAP処理に対する最適なサポートが実現します。アナリティック・ワークスペースには、ディメンションや変数など、様々なオブジェクトを格納できます。
アナリティック・ワークスペースは、リレーショナル・データベース表に格納されます。この表は、他の表と同様に、複数のディスク・ドライブにまたがってパーティション化できます。単一のスキーマ内に多数のアナリティック・ワークスペースを作成し、ユーザー間で共有できます。アナリティック・ワークスペースは特定のユーザーが所有し、他のユーザーにはそのアクセス権を付与できます。ディメンション・オブジェクトの名前は、所有者のスキーマ内で一意であることが必要です。アナリティック・ワークスペースの詳細は、Oracle OLAPユーザーズ・ガイド参照してください。
データベース内のディメンション・オブジェクトをインスタンス化するには、ディメンション・オブジェクトを配布する必要があります。ディメンション・オブジェクトの実装タイプを指定するには、配布オプションを設定します。
Oracle Warehouse Builderでは、次のようなディメンションの配布オプションが提供されます。「すべて配布」、「データ・オブジェクトのみ配布」、カタログに配布および「集計の配布」。
すべて配布 リレーショナル実装またはROLAP実装の場合は、ディメンションがデータベースに配布され、CWM定義がOLAPカタログに配布されます。MV実装されたROLAPについては、ディメンションはデータベースに配布されて、キューブ編成されたマテリアライズド・ビューはアナリティック・ワークスペースに作成されます。MOLAP実装については、ディメンションはアナリティック・ワークスペースに配布されます。
データ・オブジェクトのみ配布 ディメンションのみをデータベースに配布します。このオプションは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみ選択できます。
カタログに配布 CWM定義をOLAPカタログにのみ配布します。このオプションを使用するのは、ディメンション・データのみを配布後にDiscoverer for OLAPなどのアプリケーションでそのデータにアクセスする場合にこのオプションを使用します。以前にデータ・オブジェクトのみを配布した場合は、このオプションを使用すると、再度データ・オブジェクトを配布せずにCWMカタログ定義を配布できます。
ディメンションを作成するには、次の方法があります。
ディメンションの作成ウィザードを使用したディメンションの作成
このウィザードでは、完全に機能するディメンション・オブジェクトをすばやく作成できます。ウィザードを使用すると、多数の設定が最も使用頻度の高い値にデフォルト設定されます。これらの設定は、後でディメンション・エディタを使用して変更できます。ディメンションのリレーショナル実装を選択した場合は、ワークスペースに実装表も作成されます。
ディメンション・ウィザードで使用されるデフォルトの詳細は、「ディメンションの作成ウィザードで使用されるデフォルト」を参照してください。
ディメンション・エディタでは、ディメンションの定義と実装のあらゆる側面を完全に制御できます。これにより、最大限の柔軟性が得られます。エディタを使用して初めからディメンションを作成する方法と、前に作成しておいたディメンションを編集する方法があります。
時間ディメンション・ウィザードの使用
時間ディメンション・ウィザードを使用すると、時間ディメンションを作成して移入できます。時間ディメンション・ウィザードの詳細は、「時間ディメンションの作成」を参照してください。
ディメンションの一例として、製品データの編成に使用するProductsディメンションを示します。表3-4に、PRODUCTS
ディメンションの各レベルと、ディメンション内の各レベルのサロゲート識別子とビジネス識別子をリストします。
表3-4 Productsディメンション・レベルの詳細
レベル | 属性名 | 識別子 |
---|---|---|
Total |
ID |
サロゲート |
名前 |
ビジネス |
|
説明 |
||
グループ |
ID |
サロゲート |
名前 |
ビジネス |
|
説明 |
||
Product |
ID |
サロゲート |
UPC |
ビジネス |
|
名前 |
||
説明 |
||
パッケージ・タイプ |
||
パッケージ・サイズ |
PRODUCTS
ディメンションの階層は、次のとおりです。
階層1: Total> Groups > Product
ディメンションの作成ウィザードを使用してディメンションを作成する手順は、次のとおりです。
プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。
表を作成するディメンションを展開します。
「ディメンション」ノードを右クリックし、「新規ディメンション」を選択します。
Oracle Warehouse Builderに、ディメンションの作成ウィザードのようこそページが表示されます。「次へ」をクリックして次に進みます。ウィザードに表示される指示に従って次の各ページを完了します。
(リレーショナル・ディメンションおよびROLAPディメンションのみ)緩やかに変化するディメンション・ページ
名前と説明ページを使用してディメンションを記述します。このページに次の情報を入力します。
名前: ディメンションの名前です。1つのモジュール内では、ディメンション名は一意である必要があります。
説明: ディメンションの説明(オプション)を入力できます。
記憶域タイプ・ページを使用して、ディメンション用の記憶域のタイプを指定します。記憶域タイプにより、データベースにおけるディメンション・データの物理的な格納方法が決定されます。記憶域タイプについて選択できるオプションは次のとおりです。
記憶域タイプは、キューブ全体の最下位レベルに格納されるデータ量、および必要なリフレッシュ・レートに基づいて選択します。
ROLAP: リレーショナル記憶域 Oracle Warehouse Builderでは、ディメンション定義とそのデータがデータベースにリレーショナル形式で格納されます。このオプションを選択すると、リレーショナル実装またはROLAP実装を使用するディメンションを作成できます。
リレーショナル記憶域の方が望ましいのは、大量の詳細データを格納する場合、または大量のデータが頻繁にリフレッシュされる場合です。次のいずれかを実行する必要がある場合は、リレーショナル記憶域を使用してください。
コール詳細レコード、販売時点(POS)レコード、および他のトランザクション指向データなどの詳細情報の格納。
短い間隔での大量のデータのリフレッシュ。
受注詳細リストなどの詳細レポートの作成。
データ・モデルでの変更にさらに柔軟性を必要とする非定型問合せ。
通常、オペレーショナル・データ・ストアおよびエンタープライズ・データ・ウェアハウスは、リレーショナル記憶域を使用して実装されます。次に、このリレーショナル実装から多次元実装を導出し、様々な分析タイプを実行できます。
ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、このディメンションをOLAPカタログに配布することもできます。
ディメンションに対してリレーショナル実装を選択すると、ディメンション・データの格納に使用する実装表が作成されます。ディメンションのデフォルト実装では、スター・スキーマが使用されます。ディメンションの全レベルのデータが単一のデータベース表に格納されます。
ROLAP: MVあり Oracle Warehouse Builderでは、ディメンション定義とそのデータがデータベースにリレーショナル形式で格納されます。また、キューブ編成されたMVは、アナリティック・ワークスペースに作成されます。このオプションを選択すると、リレーショナル実装を使用してサマリーをアナリティック・ワークスペースに格納するディメンションが作成されます。このオプションを使用することで、Oracle Database11gにキューブ編成されたMVに基づいてサマリーを管理できます。問合せのパフォーマンスは大幅に向上しますが、問合せを変更する必要があります。
MV実装によるROLAPを選択すると、
ディメンション・データの格納に使用する実装表が作成されます。ディメンションのデフォルト実装では、スター・スキーマが使用されます。
ディメンションはそれが属するモジュールと同じ名前を使用するアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースを格納する表領域は、ディメンション・メタデータを含む、スキーマ用のユーザー表領域として定義された表領域です。
MOLAP: 多次元記憶域 Oracle Warehouse Builderでは、ディメンション定義とディメンション・データがデータベースのアナリティック・ワークスペースに格納されます。このオプションを選択すると、MOLAP実装を使用するディメンションを作成できます。
多次元記憶域の方が望ましいのは、分析用の集計データを格納する場合です。通常、多次元記憶域の場合はデータを事前に計算および集計する必要があるため、リフレッシュ間隔はリレーショナル記憶域よりも長くなります。また、集計レベルが上位であるため、データ量は小さくなるのが普通です。次の操作を実行するには、多次元記憶域を使用します。
傾向分析、what-if分析、またはデータの予測および割当てなどの拡張分析。
一定の問合せパターンを持ち、適切に定義された一貫性のあるデータ・モデルを使用する定数分析。
MOLAP実装を選択すると、ディメンションはそれが属するモジュールと同じ名前を使用するアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースを格納する表領域は、ディメンション・メタデータを含む、スキーマ用のユーザー表領域として定義された表領域です。
ディメンション属性ページを使用してディメンション属性を定義します。1つのディメンション属性をディメンション内の1つ以上のレベルに適用できます。デフォルトでは、ディメンションごとにID、名前および説明の各属性が作成されます。ID属性は名前変更または削除できます。
ディメンション属性ごとに次の詳細を指定します。
名前: ディメンション属性の名前です。名前はそのディメンション内で一意である必要があります。
説明: ディメンション属性の説明(オプション)を入力します。
識別子: ディメンション属性のタイプを選択します。次のいずれかのオプションを選択します。
サロゲート: 属性がディメンションのサロゲート識別子であることを示します。ディメンションのサロゲート識別子の指定は、オプションです。
ビジネス: 属性がディメンションのビジネス識別子であることを示します。
親: 値ベース階層を作成できるのはディメンション・エディタを使用する場合のみのため、このオプションはディメンション・エディタの「属性」タブでのみ表示されます。値ベースの階層では、親の選択は属性の親値を格納する属性を示します。属性が通常のディメンション属性の場合は、このフィールドを空白のままにします。
注意: ディメンションの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
、TIMESTAMP WITH TIME ZONE
およびTIMESTAMP WITH LOCAL TIME ZONE
データ型に対してのみ使用されます。
記述子: 記述子のタイプを選択します。オプションは「簡単な説明」、「詳細な説明」、「開始日」、「終了日」、「期間」および「前回の期間」です。
MOLAP実装の場合は、記述子がきわめて重要です。たとえば、時系列分析を可能にするには、カスタム時間ディメンションに「期間」と「終了日」が必要です。
レベル・ページでは、ディメンションにおける集計レベルを定義します。ディメンションには、1つ以上のレベルが必要です。ただし、値ベース階層にはレベルがありません。値ベース階層を作成するにはディメンション・エディタを使用します。
レベル・ページに次の詳細を入力します。
名前: レベルの名前です。レベル名前はそのディメンション内で一意である必要があります。
説明: レベルの説明(オプション)を入力します。
親レベルが子レベルの上位に表示されるように、ディメンション内のレベルをリストします。レベルがこの順序で表示されるように、矢印キーを使用してレベルを移動します。
STANDARDという名前のデフォルト階層が作成されます。この階層には、レベル・ページでリストした順序でレベルが含まれます。各レベルの親キー参照の格納に使用される属性も作成されます。リレーショナル・ディメンションまたはROLAPディメンションの場合、サロゲート識別子用の属性とビジネス識別子用の属性の2つの属性が作成され、それぞれが各レベルの親レベルに対応します。MOLAPディメンションの場合、親レベルのビジネス識別子に対応する属性が各レベルに1つずつ作成されます。
たとえば、「製品」ディメンションに、「合計」、「グループ」、「製品」の各レベルが含まれているとします。2つのレベルの関係が、ディメンションの「製品」レベルおよび「グループ」レベルのそれぞれに作成されます。リレーショナルまたはROLAPディメンションについては、これらのレベルの関係は親レベルのサロゲート識別子を参照します。レベルの関係は、ディメンション・エディタの「物理的バインド」タブにのみ表示されます。
レベル属性ページでは、各ディメンション・レベルのレベル属性を定義します。レベル属性を定義するには、レベルに適用するディメンション属性を選択します。ディメンション属性は、ディメンションの作成ウィザードのディメンション属性ページで定義されます。
レベル属性ページには、「レベル」および「レベル属性」という2つのセクションがあります。
レベル 「レベル」セクションには、ディメンションの作成ウィザードのレベル・ページで定義したレベルがすべてリストされます。このセクションでレベルを選択し、このレベルで実装するディメンション属性を指定します。レベル名をクリックしてレベルを選択します。
レベル属性 「レベル属性」セクションには、ディメンション属性ページで定義したディメンション属性がすべてリストされます。レベルごとに、そのレベルで実装するディメンション属性を選択します。ディメンション属性が1レベルで実装されるように指定するには、ディメンション属性に対して「適用可能」オプションを選択します。レベル属性名は、ディメンション属性名と異なってもかまいません。「レベル属性名」フィールドを使用して、レベル属性名を指定できます。
たとえば、ディメンション属性の「ID」、「名前」、および「予算」を「都道府県」レベルで実装するように指定する手順は、次のとおりです。
「レベル」セクションで「都道府県」レベルを選択します。
「レベル属性」セクションで、属性「ID」、「名前」、および「予算」に対して「適用可能」オプションを選択します。
デフォルトでは、次の設定が使用されます。
属性「ID」、「名前」およびは、すべてのレベルに適用できます。
ディメンション内の最下位レベルにはすべてのディメンション属性を適用できます。
緩やかに変化するディメンションの機能を使用するには、Oracle Warehouse BuilderのEnterprise ETLオプションが必要です。
緩やかに変化するディメンション・ページを使用すると、ディメンションで使用される、緩やかに変化するポリシーのタイプを定義できます。このページが表示されるのは、記憶域タイプ・ページで記憶域タイプとして「リレーショナル記憶域(ROLAP)」を選択した場合のみです。
緩やかに変化するディメンションの詳細は、「Oracle Warehouse Builder概要」を参照してください。
緩やかに変化するポリシーについて次のオプションを1つ選択します。
タイプ1: 履歴を保存しない: これはデフォルトで選択されています。Oracle Warehouse Builderにより、履歴を格納しないディメンションが作成されます。これは通常のディメンションです。
タイプ2: 変更履歴をすべて格納: このオプションを選択して、タイプ2の緩やかに変化するディメンションを作成します。Oracle Warehouse Builderでは、次の2つのディメンション属性が追加作成され、タイプ2のSCDの最下位レベルに適用できます。
有効日
有効期限
サロゲート識別子およびビジネス識別子を除き、タイプ2のSCDの最下位レベルの属性は、すべてトリガー属性として定義されます。
注意: 記憶域のタイプがMOLAPの場合、タイプ2またはタイプ3の緩やかに変化するディメンションを作成できません。 |
タイプ3: 元の値のみ格納: このオプションを選択すると、タイプ3の緩やかに変化するディメンションが作成されます。サロゲートIDおよびビジネスIDを除き、最下位レベルでレベル属性はすべてバージョニングする必要があるとみなされます。バージョニングするレベル属性ごとに、以前の属性値を格納する属性が追加作成されます。
作成前の設定ページには、ディメンションの作成ウィザードの前のページで選択したオプションのサマリーが表示されます。これには、ディメンションに使用する属性、レベル、階層、記憶域タイプおよび緩やかに変化するポリシーが含まれます。Oracle Warehouse Builderでは、これらの設定を使用して、ディメンション定義とディメンションを実装するデータベース表が作成されます。また、ディメンション属性が属性データを格納する表列にバインドされます。
ディメンションの実装に進むには「次へ」をクリックします。前に選択したオプションを変更するには「戻る」をクリックします。
注意: このページには、実装とオブジェクトのサマリーが表示されるため、慎重に確認してください。 |
ディメンション作成の進行状況ページには、作成前の設定ページで開始したディメンション実装の進行状況が表示されます。このページの「メッセージ・ログ」セクションには、ディメンション実装中に完了したタスクに関する情報が個別に表示されます。「次へ」をクリックして次に進みます。
サマリー・ページには、ディメンションの作成ウィザードを使用して選択したオプションの簡潔なサマリーが表示されます。サマリー・ページを使用して、選択したオプションを確認します。ディメンションを作成するには「終了」をクリックします。完全に機能するディメンションを使用できるようになります。このディメンションは、プロジェクト・エクスプローラの「ディメンション」ノードの下に表示されます。
Oracle Warehouse Builderにより、ワークスペースで次のメタデータが作成されます。
ディメンション・オブジェクト
ディメンション・データを格納するオブジェクト
リレーショナル実装の場合、ディメンション・データを格納するデータベース表が作成されます。ディメンション内の属性は、Oracle Warehouse Builderにより、値の格納に使用されるデータベース列にバインドされます。
MOLAP実装の場合、ディメンション・データを格納するアナリティック・ワークスペースが作成されます。
(リレーショナル・ディメンションおよびROLAPディメンションのみ)全ディメンション・レベルのサロゲート識別子の生成に使用されるデータベース順序
ワークスペースに作成されるのは、これらのオブジェクト自体ではなく、これらのオブジェクトの定義です。
ディメンションの配布 ターゲット・スキーマにディメンションを作成するには、ディメンションを配布する必要があります。ROLAPディメンションの場合は、ディメンションを配布する前に、順序と実装表を配布してください。れらのオブジェクトをすべて同時に配布することもできます。詳細は、「ディメンション・オブジェクトのROLAP実装」を参照してください。
注意: ディメンションを削除しても、順序、データベース表またはアナリティック・ワークスペースなどの関連オブジェクトは削除されません。これらのオブジェクトは明示的に削除する必要があります。 |
ディメンションの作成ウィザードを使用してディメンションを作成する場合、ディメンションの作成に使用する属性の一部にはデフォルト値が設定されます。以降の各項で、使用されるデフォルトについて説明します。
リレーショナル記憶域の場合は、デフォルトの実装方法としてスター・スキーマが使用されます。
多次元記憶域を選択すると、ディメンションはそれが定義されているモジュールと同じ名前のアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースが存在しない場合は、作成されます。アナリティック・ワークスペースは、モジュールを所有するスキーマのユーザー表領域に格納されます。
Oracle Warehouse Builderでは、表3-5に示すプロパティを使用してデフォルトのディメンション属性が作成されます。
さらに属性を追加できます。ディメンションを有効にするには、サロゲート識別子とビジネス識別子を定義する必要があります。
Oracle Warehouse Builderでは、ディメンションの作成ウィザードのレベル・ページに表示されたレベルをすべて含んだSTANDARDというデフォルト階層が作成されます。この階層では、各レベルがレベル・ページに表示されるのと同じ順序で使用されます。
ディメンション内で定義されている各レベルに、「ID」、「名前」およびの各属性を適用できます。ディメンション内の最下位レベルにはすべてのディメンション属性を適用できます。最下位レベルとは、レベル・ページで最後に定義されているレベルです。
タイプ2のSCDを作成すると、サロゲート識別子とビジネス識別子を除き、最下位レベルの属性がすべてバージョニング対象となります。各レコードの有効日と有効期限を格納するために、さらに2つの属性が作成されます。たとえば、「ディメンションの例」に示すProducts
ディメンションをタイプ2のSCDとして作成すると、属性UPC
、Package_type
およびPackage_size
がバージョニング対象となります。Oracle 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
データ型が使用されます。
リレーショナル・ディメンションおよびROLAPディメンションの場合、ディメンションへのデータのロードおよびディメンションからのデータの削除については「メンテナンスなし」がデフォルトのオーファン管理ポリシーのデフォルトです。
「孤立」タブ上の「エラー表の配布」オプションの選択は解除されます。
ディメンションごとに、ディメンション・オブジェクトのみでなく特定の実装オブジェクトも作成されます。実装オブジェクトの数とタイプは、ディメンションの記憶域タイプに応じて異なります。
時間ディメンションの場合は、記憶域タイプに関係なく、時間ディメンションをロードするマップが作成されます。マップ名は、ディメンション名の後に_MAPを付けたものです。たとえば、TIMESという時間ディメンションをロードするマップの名前は必ずTIMES_MAPとなります。
ROLAP: リレーショナル記憶域
リレーショナル記憶域の場合は、次の実装オブジェクトが作成されます。
表: ディメンション・データを格納するために、ディメンションと同じ名前の表が作成されます。ディメンション・キー列に一意キーが作成されます。たとえば、CHANNELS
というディメンションを定義すると、ディメンション・データの格納用にCHANNELS_TAB
という表が作成されます。また、ディメンション・キー列にCHANNELS_DIMENSION_KEY_PK
という一意キーも作成されます。
順序: リレーショナル記憶域を使用するディメンションの場合は、ディメンション・キー値をロードする順序が作成されます。たとえば、CHANNELS
ディメンションの場合はCHANNELS_SEQ
という順序が作成されます。
ROLAP: MVあり
MV実装によるROLAPの場合、「ROLAP: リレーショナル記憶域」の説明に従って、サロゲート識別子をロードする実装表と順序が作成されます。また、ディメンションを含むモジュールと同じ名前のアナリティック・ワークスペースが作成されます。
MOLAP: 多次元記憶域
多次元記憶域の場合は、ディメンションを含むモジュールと同じ名前のアナリティック・ワークスペースが存在しなければ、作成されます。たとえば、SALES_WH
モジュールにPRODUCTS
というディメンションを作成すると、そのディメンションはSALES_WH
というアナリティック・ワークスペースに格納されます。この名前のアナリティック・ワークスペースが存在しなければ、このアナリティック・ワークスペースが作成されてからディメンションが格納されます。
ディメンション・エディタを使用すると、上級ユーザーは要件に従ってディメンションを作成できます。ディメンション・エディタはディメンションの編集にも使用できます。
次のいずれかを実行する場合は、ディメンション・エディタを使用してディメンションを作成します。
スノーフレーク実装方法の使用
値ベース階層の作成
ディメンション・ロールの作成
階層内のレベルのスキップ
既存のデータベース表またはビューを使用してディメンション・データを格納します。これは手動バインドとみなされます。
オーファン管理ポリシーを指定します。
ディメンション内の複数の階層の作成
ディメンション・エディタを使用してディメンションを定義する手順は、次のとおりです。
プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。
ディメンションを作成するターゲット・モジュールを開きます。
「ディレクトリ」を右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。
「ウィザードを使用しないディメンション」を選択して、「OK」をクリックします。
Oracle Warehouse Builderにより、「ディメンションの作成」ダイアログ・ボックスが表示されます。
ディメンションの名前および説明(オプション)を指定して、「OK」をクリックします。
指定した名前と説明を含む「名前」タブを示すディメンション・エディタが表示されます。
ディメンションを定義するには、次のタブについての情報を入力します。
注意: ディメンション・エディタを使用してリレーショナル実装を持つディメンションを作成する場合、ディメンション・データを格納する物理構造は自動的に作成されません。これらの構造を、手動かまたは「ファイル」メニューのバインド・オプションを使用して作成する必要があります。 |
リレーショナル実装またはMV実装によるROLAPを持つディメンションの場合は、ディメンションの属性を、そのデータを格納するデータベース列にバインドします。「「物理的バインド」タブ」を参照してください。
「名前」タブを使用してディメンションを記述します。また、このタブでディメンションのタイプとロールも指定します。
名前: フィールドはディメンション名を表します。モジュール内では、ディメンション名は一意である必要があります。フィールドを使用して、ディメンションの説明(オプション)を入力します。
ディメンション・ロール 「ディメンション・ロール」セクションを使用してディメンション・ロールを定義します。ディメンション・ロールごとに次の情報を定義します。
名前: ディメンション・ロール名を表します。
説明: ディメンション・ロールの説明(オプション)を指定します。
関連項目: ディメンション・ロールの詳細は、『Oracle Warehouse Builder概要』を参照してください。 |
「記憶域」タブを使用して、ディメンション用の記憶域のタイプを指定します。選択可能な記憶域オプションの詳細は、以降の各項を参照してください。
ROLAP: リレーショナル記憶域 ディメンションとディメンション・データをデータベースにリレーショナル形式で格納するには、「リレーショナル」オプションを選択します。このオプションを使用すると、リレーショナル実装またはROLAP実装を使用するディメンションを作成できます。
リレーショナル記憶域の場合は、次のディメンション実装方法から1つ選択できます。
スター・スキーマ: スター・スキーマを使用してディメンションを実装します。ディメンション・データは、1つのデータベース表またはビューに格納されます。
スノーフレーク・スキーマ: スノーフレーク・スキーマを使用してディメンションを実装します。このディメンション・データは、複数のデータベース表またはビューに格納されます。
手動: ディメンションの属性を、そのデータを格納するデータベース・オブジェクトに明示的にバインドする必要があります。このオプションを選択した場合は、書き込みアクセスをディメンション・エディタの「物理的バインド」タブに割り当てると、自動バインド機能が無効になるため手動で作成したバインドを誤って削除することはありません。
自動バインドを実行する際には、これらの記憶域設定が自動バインドの実行に使用されます。
「複合一意キーの作成」をクリックして、全レベルのビジネス識別子の複合一意キーを作成します。たとえば、ディメンションが3レベルで構成される場合は、複合一意キーを作成すると、3レベルすべてのビジネス識別子を含む一意キーが1つ作成されます。複合一意キーの作成により、ディメンション・レコードがディメンション全体のデータベース・レベルで一意であることが規定されます。
ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、「ディメンションの配布方法の指定」の説明に従って、構成パラメータを設定して、このディメンションをOLAPカタログに配布することもできます。
ROLAP: キューブMVあり Oracle Warehouse Builderでは、ディメンション定義とそのデータがデータベースにリレーショナル形式で格納されます。また、アナリティック・ワークスペースの実装表に対するマテリアライズド・ビュー・サマリーが作成されます。このオプションを選択すると、ROLAP実装を使用してサマリーをアナリティック・ワークスペースに格納するディメンションが作成されます。
MV実装によるROLAPを選択すると、「MOLAP: 多次元記憶域」セクションの「AW名」フィールドを使用して、サマリー・データを格納するアナリティック・ワークスペースの名前を指定します。
「MOLAP: 多次元記憶域」ディメンションとディメンション・データをデータベースに多次元形式で格納するには、「MOLAP」オプションを選択します。このオプションを使用すると、MOLAP実装を使用するディメンションを作成できます。ディメンション・データはアナリティック・ワークスペースに格納されます。
次の各フィールドに値を入力します。
AW名: ディメンション・データを格納するアナリティック・ワークスペースの名前を入力します。または、省略記号のボタンをクリックして、現行のプロジェクト内のMOLAPオブジェクトのリストを表示できます。プロジェクト内のモジュールごとに1ノードが表示されます。モジュールを開き、モジュール内のディメンション・オブジェクトのリストを表示します。リストからオブジェクトを選択すると、そのオブジェクトと同じアナリティック・ワークスペースにディメンションが格納されます。
AW表領域名: アナリティック・ワークスペースが格納される表領域の名前を入力します。
複数の階層を持つディメンションの場合は、集計レベル(ベースよりも上のレベル)に同じソース列を使用できる場合があります。この場合、「アナリティック・ワークスペースでサロゲート・キーを生成」オプションを選択します。ロード操作中に、それぞれの値に接頭辞としてレベル名が追加されます。すべてのディメンション・メンバーが一意であることが確実な場合を除き、このオプションを選択することをお薦めします。
各ディメンション・メンバーがレベル間で一意であることが確実な場合は、ソースと同じ名前をアナリティック・ワークスペースで使用できます。たとえば、リレーショナル・スキーマで数値サロゲート・キーを使用して一意性を保証する場合、アナリティック・ワークスペースに新規サロゲート・キーを作成する必要はありません。「データ・ソースの自然キーを使用」オプションを選択すると、ソースと同じ自然キーをアナリティック・ワークスペースで使用できます。
注意: ディメンションを編集して「記憶域タイプ」をROLAPからMOLAPに変更すると、サロゲート識別子のデータ型がVARCHAR2 に変更されます。 |
「属性」タブを使用してディメンション属性を定義します。「属性」タブには「順序」および「ディメンション属性」という2つのセクションがあります。
順序 順序属性は、リレーショナル実装を持つディメンションの場合のみに必要です。「順序」フィールドを使用して、ディメンション・キー列に移入するデータベース順序の名前を指定します。このフィールドの右にある「選択」をクリックすると、「利用可能な順序」ダイアログ・ボックスが表示されます。このダイアログ・ボックスには、プロジェクトのモジュールごとにノードが1つ表示されます。モジュール・ノードを開いて、モジュールに含まれている順序を表示します。表示されたリストから順序を選択します。
ディメンション属性: 「ディメンション属性」セクションを使用して、ディメンション属性の詳細を定義します。詳細は、「ディメンション属性ページ」を参照してください。
「レベル」タブを使用して、ディメンションの各レベルのレベル属性を定義します。また、このタブを使用すると値ベース階層も作成できます。
レベル属性を定義する前に、「ディメンション属性」タブでディメンション属性の定義を完了していることを確認します。レベルのレベル属性を定義するには、レベルで実装するディメンション属性を選択する必要があります。「レベル」タブには、「レベル」および「レベル属性」という2つのセクションがあります。
レベル 「レベル」セクションには、ディメンションのレベルが表示されます。レベルごとに次の詳細を入力します。
名前: ディメンション・レベル名を入力します。名前はそのディメンション内で一意である必要があります。
説明: レベルの説明(オプション)を入力します。
レベル属性 「レベル属性」セクションには、「属性」タブで定義したディメンション属性がすべて表示されます。このセクションで指定した値は、「レベル」セクションで選択したレベルに適用可能です。「レベル属性」セクションの内容は、次のとおりです。
ディメンション属性名: ディメンション属性名を表します。
適用可能: 「レベル」セクションで選択したレベルでこのディメンション属性を実装する場合は、「適用可能」オプションを選択します。
レベル属性名: レベル属性名を表します。このフィールドを使用し、レベル属性名としてディメンション属性名とは異なる名前を指定します。このフィールドはオプションです。名前を指定しなければ、レベル属性名はディメンション属性名と同じになります。
説明: レベル属性の説明(オプション)を指定します。
デフォルト値: 指定の属性のデフォルト値(デフォルト値がない場合は空白)。
たとえば、「グループ」レベルでディメンション属性「ID」、「名前」およびを実装するように指定します。
「レベル」セクションで「グループ」レベルを選択します。
「レベル属性」セクションで、属性「ID」、「名前」およびに対して「適用可能」オプションを選択します。
「階層」タブを使用して、ディメンション階層を作成します。「階層」タブには、「階層」および「レベル」という2つのセクションがあります。
階層 「階層」セクションを使用してディメンション内の階層を定義します。階層ごとに次を定義します。
階層: 階層名を表します。新規階層を作成するには、このフィールドに階層名を入力します。
値ベース: 値ベース階層を作成するには、このオプションを選択します。値ベース階層にはレベルがありません。親識別子として識別された属性が必要です。値ベース階層を作成できるのはMOLAPディメンションの場合のみのため、このオプションは「記憶域」タブで「MOLAP: 多次元データ構造」を選択した場合にのみ表示されます。
関連項目: 値ベース階層の詳細は、『Oracle Warehouse Builder概要』を参照してください。 |
説明: 階層の説明(オプション)を入力します。
デフォルト: ディメンションのデフォルト階層の場合は、「デフォルト」オプションを選択します。ディメンションに複数の階層がある場合、問合せツールではデフォルト階層が表示されます。最も使用頻度の高い階層をデフォルト階層として設定することをお薦めします。
階層を削除するには、「階層」フィールドの左にあるセルを右クリックして「削除」を選択します。または、「階層」フィールドの左にあるセルをクリックして階層を選択し、「削除」ボタンを押す方法もあります。
階層の作成時には、レベルごとに親レベルの参照を格納する属性を作成してください。リレーショナル・ディメンションまたはROLAPディメンションの場合は、各レベルのサロゲート識別子参照とビジネス識別子参照を格納するために属性を2つ作成します。MOLAPディメンションの場合は、レベルごとに親レベルのビジネス識別子への参照を格納するために属性を1つ作成します。
レベル 「レベル」セクションには、ディメンション・エディタのレベル・タブで定義したレベルがすべてリストされます。このセクションを使用して、各階層で使用するレベルを指定します。「レベル」セクションの内容は、次のとおりです。
レベル: レベル属性名を表します。リストをクリックすると、ディメンションに定義されているレベルがすべて表示されます。
スキップ先レベル: 「レベル」フィールドが示すレベルの親レベルを表します。このフィールドを使用してスキップ・レベル階層を定義します。
たとえば、Productsディメンションには次の階層が含まれています。
TOTAL > PRODUCT
この階層には、「グループ」レベルはありません。そのため、「PRODUCT」レベルは「グループ」レベルをスキップし、親として「TOTAL」レベルを使用する必要があります。この階層を作成するには、「レベル」フィールドで「PRODUCT」レベルを選択し、「スキップ先レベル」リストから「TOTAL」を選択します。
サマリー・レベル: サマリーをアナリティック・ワークスペースにロードするために使用するディメンション・レベルを表します。「記憶域」タブで「ROLAP: キューブMVあり」を選択する場合にかぎり、このオプションが表示されます。
「レベル」セクションの左にある矢印を使用して、セクション内の各レベルの表示順序を変更します。
このタブを使用して、ディメンションで実装する穏やかな変化方針のタイプを指定します。緩やかに変化するディメンションを作成できるのは、リレーショナル実装を使用するディメンションの場合のみのため、このタブのオプションは「記憶域」タブで「ROLAP: リレーショナル記憶域」または「ROLAP: キューブMVあり」を選択した場合にのみ有効化されます。
穏やかな変化方針について選択できるオプションは、次のとおりです。
タイプ1: 履歴を保存しない: 履歴を格納しない標準ディメンションを作成します。
タイプ2: 変更履歴をすべて格納: タイプ2のSCDを作成するには、このオプションを選択します。「設定」をクリックし、「ディメンション・エディタを使用したタイプ2緩やかに変化するディメンションの作成」の説明に従って、レベルごとにトリガー属性、有効日および有効期限などの詳細を追加指定します。
タイプ3: 元の値のみ格納: タイプ3のSCDを作成するには、このオプションを選択します。「設定」をクリックし、「ディメンション・エディタを使用したタイプ3緩やかに変化するディメンションの作成」の説明に従って、有効日やバージョニング対象属性の元の値の格納に使用する属性などの詳細を追加指定します。
注意: 記憶域のタイプにMOLAPを指定した場合、タイプ2またはタイプ3の緩やかに変化するディメンションを作成できません。 |
ディメンション・エディタを使用してタイプ2またはタイプ3のSCDを作成する場合は、有効日と有効期限を格納するディメンション属性を作成し、必要なレベルに適用する必要があります。
「孤立」タブでは、データをディメンションへロード中、またはデータをディメンションから削除中に、オーファン管理ポリシーを定義します。このタブには、「削除のための孤立管理」および「ロードのための孤立管理」の2つのセクションが含まれます。
ロードのための孤立管理 このセクションを使用して、データをディメンションにロードする際のオーファン管理ポリシーを指定します。NULLの親レコードを持つレコードおよび無効な親レコード持つレコードについて、別のオーファン管理ポリシーを指定できます。ヘッダーのNULLの親キー値のオプションを使用して、NULL親を持つレコードについてのオーファン管理ポリシーを指定します。ヘッダーの無効な親キー値のオプションを使用して、無効な親レコードを持つレコードについてのオーファン管理ポリシーを指定します。
NULLな親を持つレコードおよび無効な親を持つレコードについて、次のオーファン管理ポリシーを1つ選択します。
メンテナンスなし: オーファン行を積極的に検出、拒否または修正することはありません。
デフォルトの親: データのロード時に既存の親の行を持たないすべての行にデフォルトの親の行が割り当てられます。デフォルトの親の行を定義するには、「設定」ボタンを使用します。デフォルトの親の行の割当て方法は、「オーファン行についてのデフォルトの親の指定」を参照してください。
孤立拒否: 既存の親の行を持たない場合、行は挿入されません。
削除のための孤立管理 このセクションを使用して、データをディメンションから削除する際のオーファン管理ポリシーを指定します。次のいずれかのオプションを選択します。
メンテナンスなし: オーファン行を積極的に検出、拒否または修正することはありません。
削除拒否: 既存の子の行を持つ場合、行は削除されません。
配布オプション
「エラー表の配布」を選択して、オーファン管理に関するエラー表を生成し、ディメンションを使用して配布します。
「デフォルトの親」ダイアログを使用して、オーファン行のデフォルトの親レコードを指定します。すべてのディメンション・レベルについて、デフォルトの親のレコードを指定できます。
「デフォルトの親」ダイアログには、各ディメンション・レベルの行が含まれ、次の4つの列を含む表が表示されます。
レベル: 「レベル」列には、ディメンションの各レベルのノードが表示されます。レベル・ノードを展開して、レベルのすべての属性を表示します。
識別属性: レベル属性名を表します。
データ型: 属性のデータ型を表示します。
デフォルト値: 指定の属性のデフォルト値(デフォルト値がない場合は空白)。
「物理的バインド」タブを使用して、ディメンションを実装オブジェクトにバインドします。バインドとは、ディメンションの各属性およびレベル関係のデータを格納するデータベース列を指定するプロセスです。ディメンションの作成ウィザードを使用してディメンションを作成する場合、バインドは自動的に実行されます。エディタを使用してディメンションを作成する場合、ディメンション・データを格納するデータベース表またはビューの詳細を指定する必要があります。
次のオプションを1つ選択して、データを格納するデータベースの列にディメンション属性をバインドします。
自動バインド
手動バインド
自動バインド 自動バインドを実行すると、Oracle Warehouse Builderにより、ディメンション内の属性がそのデータを格納するデータベース列にマップされます。自動バインドを初めて実行する場合は、ディメンション・データの格納に使用される表も作成されます。
自動バインドを実行するには、プロジェクト・ナビゲータまたは「物理的バインド」タブでディメンションを選択します。「ファイル」メニューから、「バインド」を選択します。または、プロジェクト・ナビゲータで、ディメンション・オブジェクトを右クリックして「バインド」を選択します。自動バインド・ルールの詳細は、「自動バインド」を参照してください。
バインドされているディメンションに対して自動バインドを実行する場合は、次のルールが使用されます。
ディメンションの実装方法が同じ場合、ディメンション・オブジェクトは既存の実装オブジェクトに再バインドされます。実装方法はスターまたはスノーフレークを使用できます。
たとえば、スター・スキーマ実装方法を使用してProductsディメンションを作成し、自動バインドを実行したとします。ディメンション・データはProductsと呼ばれる表に格納されます。後日、ディメンション定義を変更しましたが、実装方法はスターのままです。この状況でProductsディメンションを自動バインドすると、Productsディメンションの属性は同じ実装表に再バインドされます。
ディメンションの実装方法を変更すると、古い実装オブジェクトが削除され、一連の新しい実装表が作成されます。古い実装オブジェクトを保持するには、自動バインドを実行する前に、ディメンション・オブジェクトをアンバインドする必要があります。
たとえば、Productsディメンションを作成して、スター・スキーマ実装方法を使用して実装表にバインドするとします。その後、このディメンションを編集し、実装方法をスノーフレークに変更しました。変更したProductsディメンションの自動バインドを実行すると、ディメンション・データが格納されていた表は削除され、新しい実装表が作成されて、ディメンション属性および関係が新しい実装表にバインドされます。
手動バインド 手動バインドの場合は、ディメンションの各レベルの属性を、そのデータを格納するデータベース列に明示的にバインドする必要があります。既存の表にバインドする方法と、新規表を作成してその表にバインドする方法があります。通常は、手動バインドを使用して既存の表をディメンションにバインドします。自動バインドまたは再バインドが不要な場合は、手動バインドを使用します。
ディメンションがサロゲート・キーなしで定義されている場合、ディメンション・キー属性はバインドしないままにする必要があります。
手動バインドを実行する手順は、次のとおりです。
プロジェクト・ナビゲータで、ディメンションを右クリックして「開く」を選択します。
このディメンションのエディタが表示されます。
「物理的バインド」タブで、空白の領域を右クリックして「追加」、実装オブジェクトを格納するデータベース・オブジェクトのタイプの順に選択します。
たとえば、ディメンション・データが表に格納される場合、「物理的バインド」タブで空白の領域を右クリックして、「追加」、「表」の順に選択します。「新規または既存の表を追加」ダイアログ・ボックスが表示されます。ディメンション・データを格納するには、既存の表を選択するか、新規の表を作成する必要があります。
ディメンション・データの格納に使用するデータベース・オブジェクトの数だけ手順2を繰り返します。たとえば、ディメンション・データが3つのデータベース表に格納される場合は、手順2を3回繰り返します。
ディメンションの各属性を、そのデータを格納するデータベース列にバインドします。
ディメンションを定義してバインドを実行(ROLAPディメンションの場合のみ)した後、そのディメンションおよび関連オブジェクトを配布する必要があります。ディメンションの配布の詳細は、「ディメンションの配布」を参照してください。
ROLAP実装を使用するディメンションの場合、基礎となる表のレポート時またはOLAPカタログへの配布時に、各種ディメンション構造に関連した影響や制限があります。ディメンションを正常に配布できても、Discovererなどの他のアプリケーションがOLAPカタログにアクセスするときにエラーが発生する可能性があります。
この制限の影響を受ける事項は次のとおりです。
レポート作成ツールは、ユーザーが取得したディメンション・メタデータのあらゆる側面のメタデータを保持しているわけではありません。したがって、このメタデータを問合せ/レポートに取り込む必要があります。そうしないと、実装表にデータを移入する方法が原因で、不完全な情報が表示されます。
ディメンションおよびキューブの実装表には負のキー値を含む解決済の行が格納されます。この行は、問合せまたはレポートでフィルタできます。問合せまたはレポートを作成するときに、ディメンション自体ではなく、ディメンションに関連付けられたビューを使用します。ディメンションにはそれぞれビューが関連付けられています。ビュー名は、ディメンションまたはキューブの構成プロパティ「ビュー名」で指定します。
スキップレベル階層と不規則階層のメタデータはOLAPカタログに配布されません。
スキップレベル階層または不規則階層が含まれたディメンションを作成した場合、それらのメタデータはOracle Warehouse Builderリポジトリに格納されますが、OLAPカタログには配布されません。
複数の階層を持つディメンションには、すべての階層にわたってすべてのディメンション属性をマッピングする必要があります。
ファクト・データを各レベルのディメンションにリンクできるコントロール行が作成されます。たとえば、時間ディメンションを2つの異なるキューブで再利用して、予算データを月レベルで記録し、実際のデータを日レベルで記録する場合などです。ディメンションはコントロール行と一緒にロードされるため、追加定義をすることなくこれを実行できます。ディメンション階層の各メンバーは、単一のレコードを使用して表示されます。
ディメンションにデータをロードすると、制御行が作成されます。すべての制御行には-2から始まる負のディメンション・キー値があります。上位レベルのレベル値では行が生成され、ファクト表に対して一意でリンクする行として動作できます。このリンクの下位レベルまたは制御行は無効化されます。
「ディメンションの例」で説明されているProductsディメンションを考慮します。4つの製品カテゴリを含む表からデータをこのディメンションにロードします。Oracle Warehouse Builderは表3-6に示されるディメンションに制御行を挿入します。これらの行により、どのディメンション・レベルでもキューブにリンクできます。表にはすべてのディメンション属性値が含まれるわけではありません。
SCDを作成するには、ディメンションの作成ウィザードを使用する方法とディメンション・エディタを使用する方法があります。
ディメンションの作成ウィザードを使用してSCDを作成するには、このウィザードの緩やかに変化するディメンション・ページを使用します。このページでは、作成するSCDのタイプのみを指定します。Oracle Warehouse Builderでは、他のすべての必須パラメータにデフォルト値が想定されます。緩やかに変化するディメンション・ページの詳細は、「緩やかに変化するディメンション・ページ」を参照してください。
注意: タイプ1に追加ライセンスは不要です。ただし、タイプ2とタイプ3のSCDにはOracle Warehouse BuilderのEnterprise ETLオプションが必要です。 |
タイプ2またはタイプ3のSCDを作成するには、通常のディメンション属性に加え、次のロールを実行する追加属性が必要です。
トリガー属性
これらは履歴値を格納する必要がある属性です。たとえば、PRODUCTS
ディメンションでは、Productレベルの属性PACKAGE_TYPE
をトリガー属性にできます。この属性の値を変更する場合、古い値を格納する必要があります。
有効日
この属性には、レコードの有効期間の開始日を格納します。
有効期限
この属性には、レコードの有効期間の終了日を格納します。
属性は前述のいずれか1つの役割のみを担当できます。たとえば、1つの属性が通常の属性と有効日属性の両方にはなりません。ウィザードを使用してタイプ2またはタイプ3のSCDを作成する場合は、必要な追加属性が作成されます。
タイプ2のSCDには、各属性とレベルの関係を表す値の全履歴が格納されます。
ディメンション・エディタを使用してタイプ2のSCDを作成するには、次の属性を定義します。
履歴保存をトリガーする属性
有効日と有効期限を格納する属性
注意: タイプ2のSCDを作成できるのは、リレーショナル実装を持つディメンションの場合のみです。 |
ディメンション・エディタを使用してタイプ2のSCDを作成する手順は、次のとおりです。
プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。
タイプ2のSCDを作成するターゲット・モジュールを開きます。
「ディメンション」を右クリックして「新規」→「ウィザードを使用しないディメンション」を選択します。
「「名前」タブ」の説明に従って、ディメンション・エディタの「名前」タブに情報を入力します。
「属性」タブで、有効日と有効期限を格納する2つの属性をレベルごとに追加作成します。属性の作成の詳細は、「属性タブ」を参照してください。
ディメンション・エディタの次のタブに情報を入力します。
「緩やかな変化」タブで、「タイプ2: 変更履歴をすべて格納」オプションを選択します。
このオプションの右にある「設定」をクリックします。
「タイプ2緩やかな変化方針」ダイアログ・ボックスが表示されます。「「タイプ2緩やかに変化するディメンション」ダイアログ・ボックス」の説明に従って、このダイアログ・ボックスでタイプ2のSCDの詳細を指定します。
ディメンション・エディタの「記憶域」タブに情報を入力します。
「タイプ2緩やかに変化するディメンション」ダイアログ・ボックスを使用して、有効日属性、有効期限属性およびバージョニング対象属性を指定します。このダイアログ・ボックスには、レベル、識別属性、データ型およびレコード履歴の各列を含む表が表示されます。
レベル: ディメンション内のレベルを表します。レベル・ノードを拡張し、レベル属性を表示します。
識別属性: レベル属性を表します。
データ型: レベル属性のデータ型を表します。
レコード履歴: このリストを使用して、属性がバージョニング対象であるかどうか、またはレベル・レコードの有効日や有効期限が格納されるかどうかを指定します。
トリガー履歴: 属性をバージョニングする必要がある場合は、このオプションを選択します。
有効日: 属性にレベル・レコードの有効日の値が格納される場合は、このオプションを選択します。
有効期限: 属性IDにレベル・レコードの有効期限が格納される場合は、このオプションを選択します。
レベルのサロゲートIDとビジネスIDはバージョニングできません。
たとえば、PRODUCTS
タイプ2 SCDでは、有効日と有効期限を格納する属性は、それぞれEFFECTIVE_TIME
およびEXPIRATION_TIME
です。これらのディメンション属性を作成し、製品
レベルに適用する必要があります。属性PACKAGE_TYPE
はバージョニングする必要があります。そのため、この属性については、「レコード履歴」列で「トリガー履歴」 を選択します。PACKAGE_TYPE
属性の値が変更されると、既存のレコードがクローズされ、最新の値を使用した新規レコードが作成されます。
ディメンション内のすべてのレベルに履歴データを格納する必要がありません。通常、最下位レベル(リーフ・レベルとも呼ばれます)でのみ、履歴データが格納されます。ただし、他のディメンション・レベルの履歴データを格納することもできます。
タイプ2のSCDのレコードがバージョン管理されている場合は、古いレコードはクローズ済としてマーク付けされ、更新された値で新規レコードが作成されます。レコードの有効期限は、古いレコードがクローズ済であることを示すように設定されます。新規レコードは現行のレコードとみなされ、デフォルトでは、デフォルトの有効期限としてNULLが設定されています。タイプ2のSCDにデータをロードしている間、ディメンション演算子の構成パラメータを使用して有効期限を設定できます。詳細は「ディメンション演算子」を参照してください。
タイプ2のSCD内の次の属性を更新できます。
リーフ・レベル属性
リーフ・レベルのバージョン管理する属性
非リーフ・レベル属性
非リーフ・レベルのバージョン管理する属性
リーフ・レベルの親属性
次の項では、これらの更新操作のためのOracle 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つのバージョンが格納されます。タイプ3のSCDを作成できるのは、リレーショナル実装を持つディメンションの場合のみです。次を指定します。
バージョニング対象の属性
各バージョニング対象属性の元の値を格納する属性
バージョニング対象属性ごとに、その属性の元の値を格納する属性を追加作成する必要があります。たとえば、Population属性をバージョニングするには、人口の元の値を格納するための属性を追加作成します。
タイプ3のSCDを作成する手順は、次のとおりです。
プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。
タイプ3のSCDを作成するターゲット・モジュールを開きます。
「ディメンション」を右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。
「ウィザードを使用しないディメンション」を選択し、「OK」をクリックします。
「「名前」タブ」の説明に従って、ディメンション・エディタの「名前」タブに情報を入力します。
「「属性」タブ」の説明に従って、「属性」タブで、レベルの属性の有効期限を格納する属性をレベルごとに追加作成します。
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
属性の値が変更されると、Oracle Warehouse Builderでは次の操作が実行されます。
PACKAGE_TYPE
属性の既存の値である、PREVIOUS_PACKAGE_TYPE
属性が移動されます。
PACKAGE_TYPE
属性に新規の値を移入して格納します。
ディメンション・エディタを使用して、ディメンションの定義を編集します。ディメンション定義の編集時には、オブジェクトのメタデータのみが変更されます。物理オブジェクトの定義を更新するには、コントロール・センターを使用して変更後のディメンションを配布します。
注意: 緩やかに変化するディメンションの作成後は、ディメンション・エディタを使用してそのタイプを変更できません。 |
ディメンション、または緩やかに変化するディメンション定義を編集する手順は次のとおりです。
プロジェクト・ナビゲータのディメンション右クリックして、「開く」を選択します。
または
プロジェクト・ナビゲータで、ディメンションをダブルクリックします。
ディメンション・エディタが表示されます。ディメンション・エディタのタブを使用して定義を変更します。
注意: リレーショナル・ディメンションまたはROLAPディメンションの実装(スターまたはスノーフレーク)を修正する場合、必ず最初にアンバインドしてからバインドを実行してください。変更した実装に沿って物理バインドが作成されます。 |
これらのタブの詳細は、次のセクションを参照してください。
ディメンションの構成時には、ディメンションと基礎となる表の両方を構成します。
ディメンションの物理プロパティを構成する手順は、次のとおりです。
プロジェクト・ナビゲータで、ディメンション名を右クリックして「構成」を選択します。
「構成」タブが表示されます。
次の各カテゴリにリストしたディメンション・パラメータを構成します。
リレーショナル実装またはROLAP実装を使用するディメンションの場合は、実装表を構成することもできます。詳細は、「表の構成」を参照してください。
識別
配布可能: このディメンションを配布する場合は「TRUE」を選択します。Oracle Warehouse Builderでは、配布可能マークの付いた表制約についてのみスクリプトが生成されます。
配布オプション: このパラメータを使用してディメンションの実装のタイプを指定します。「すべて配布」、「データ・オブジェクトのみ配布」、「カタログにのみ配布」の各オプションから1つ選択します。
配布オプションの詳細は、「ディメンションの配布方法の指定」を参照してください。
ビュー名: ディメンション・データを格納する実装表の制御行を非表示にするために作成されるビューの名前を指定します。これは、スター・スキーマを使用するリレーショナル・ディメンションまたはROLAPディメンションに適用可能です。ビュー名を明示的に指定しなければ、ディメンション名に接尾辞_vを付けた名前がデフォルトのビュー名として使用されます。
参照可能: このパラメータは、コード生成で使用されません。
サマリー管理
ディメンションでMV実装によるROLAPを使用している場合、このセクションのパラメータを設定する必要があります。
MVリフレッシュの有効化: リフレッシュされるサマリー・データを格納するマテリアライズド・ビューを有効化します。このパラメータのデフォルト値はFalseです。
MV制約: このパラメータに「TRUSTED」または「ENFORCED」を設定します。
「TRUSTED」制約では、より効果的にリフレッシュ操作を実行できます。このパラメータを「TRUSTED」に設定すると、検証されていない「RELY」制約を使用して、リフレッシュ中にマテリアライズド・ビューに対してリライトできます。ただし、「TRUSTED」制約の情報が無効であれば、リフレッシュによってマテリアライズド・ビューが破損する場合があります。
このパラメータを「ENFORCED」に設定すると、検証、制約の規定、およびマテリアライズド・ビューへのリライトに限って使用を許可することができます。
リフレッシュ・モード: このパラメータは、「Fast」、「Complete」または「Force」から選択します。
「Complete」リフレッシュでは、マテリアライズド・ビューの問合せの定義は再計算されます。
「Fast」リフレッシュでは、変更された行のみがキューブに挿入されて、反映されたキューブのエリアは再集計されます。
「Force」リフレッシュでは、「Fast」リフレッシュが最初に適用されます。不可能な場合は、次に「Complete」リフレッシュが適用されます。
次のリフレッシュ日: マテリアライズド・ビューをリフレッシュする、次の日時を示します。
リフレッシュ: 「DEMAND」または「ONDATE」を設定します。
このパラメータを「DEMAND」に設定すると、マテリアライズド・ビューは要求時に更新されます。「ONDATE」に設定すると、マテリアライズド・ビューは「次のリフレッシュ日」パラメータで指定した日時にリフレッシュされます。
リフレッシュ開始日: マテリアライズド・ビューの更新が開始される日時を示します。
配布オプション構成パラメータを設定することで、ディメンションがターゲット・スキーマに配布される形式を指定できます。ディメンションの配布オプションに設定できる値は、「すべて配布」、「データ・オブジェクトのみ配布」およびカタログに配布です。構成オプション・パラメータの設定手順は、「ディメンションの構成」を参照してください。
配布オプション構成パラメータでは、ディメンションの形式も同様に指定した生成モードで配布されます。ディメンションを含むモジュールのPL/SQL生成モード・パラメータは、モジュール内のオブジェクトが配布されるデータベースを示します。PL/SQL生成モードは、デフォルトのOracle Database 10g、Oracle Database11g、Oracle8iおよびOracle9iの各オプションのいずれかに設定できます。詳細は、「ターゲット・モジュールの構成」を参照してください。
表3-7に、ROLAP実装でディメンションを別のデータベース・バージョンに配布する方法を示します。
表3-7 ディメンションの配布オプション
配布オプション | ターゲット・スキーマ: Database 10g、ROLAP実装 | ターゲット・スキーマ: Database 11g、ROLAP実装 | ターゲット・スキーマ: Database 11g、MV実装によるROLAP |
---|---|---|---|
データ・オブジェクトの配布 |
リレーショナル・ディメンションDDL |
リレーショナル・ディメンションDDL |
リレーショナル・ディメンションDDL |
カタログに配布 |
CWM2 |
CWM2 |
11g形式AW+ |
すべて配布 |
リレーショナル・ディメンションDDLおよびCWM2 |
リレーショナル・ディメンションDDLおよびCWM2 |
リレーショナル・ディメンションDDLおよび11g形式AW+ |
表3-8に、MOLAP実装でディメンションを別のデータベース・バージョンに配布する方法を示します。
Oracle Warehouse Builderには、次の2つのキューブ作成方法が用意されています。
キューブの作成ウィザードを使用して、基本キューブをすばやく作成します。Oracle Warehouse Builderでは、ほとんどのパラメータにデフォルト値が想定され、キューブ・データを格納するデータベース構造が作成されます。
集計方法や依存性解決順序など、特定の拡張オプションを指定する必要がある場合は、キューブ・エディタを使用してキューブを作成します。キューブの作成ウィザードの使用時には、これらのオプションは使用できません。
また、キューブの作成ウィザードを使用して、基本キューブ・オブジェクトをすばやく作成する方法もあります。作成後に、キューブ・エディタを使用して他のオプションを指定します。
キューブ内のメジャーを定義中に、計算済メジャーを作成することもできます。計算済メジャーは、データが格納されないメジャーです。メジャー値は、定義済の式を使用して必要に応じて計算されます。
標準計算はテンプレートに基づいています。Oracle Warehouse Builderでは、基本演算、拡張演算、前回/将来の比較および時間フレームという標準計算を定義できます。
基本演算
このタイプを使用すると、次のような基本演算の計算を実行できます。表3-9は、基本演算の計算を示します。
表3-9 基本的な計算済メジャーのリスト
計算名 | 説明 |
---|---|
加算 |
この計算を使用して、メジャー2つを加算するか、メジャー1つと数値1つを加算します。 |
減算 |
この計算を使用して、メジャー2つを減算するか、メジャー1つと数値1つを減算します。 |
乗算 |
この計算を使用して、メジャー2つを乗算するか、メジャー1つと数値1つを乗算します。 |
除算 |
この計算を使用して、メジャー2つを除算するか、メジャー1つと数値1つを除算します。 |
比率 |
拡張演算
このタイプを使用すると、表3-10に示すような拡張計算を作成できます。
表3-10 拡張演算の計算済メジャーのリスト
計算名 | 説明 |
---|---|
累計 |
この計算を使用して、指定したディメンションの各レベルにおける期間中のメジャー・データの累計を戻します。 たとえば、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となります。 |
共有 |
この計算を使用して、特定のメジャー値について、他のディメンション・メンバーまたはレベルの同一メジャー値に対する比率を戻します。この計算の算式は次のようになります。 (現行メンバー/指定したメンバー) |
差異 |
この計算を使用して、ベース・メジャーとそのメジャーのターゲットとの差異を計算します。次に差異の例を示します。 売上差異 = 売上 - 売上予測 |
前回/将来の比較
このタイプを使用すると、表3-11の説明に従って過去または将来の値の計算を定義できます。
表3-11 前回/将来の比較の計算済メジャーのリスト
計算済メジャー名 | 説明 |
---|---|
前の値 |
この計算を使用して、前の期間からのメジャー値を戻します。 |
前期間との差異 |
この計算を使用して、メジャーの現在の値とそのメジャーの前期間の値との差異を戻します。この計算の算式は次のようになります。 (現在の値 - 以前の値) |
前期間との差異率 |
この計算を使用して、メジャーの現在の値とそのメジャーの前期間の値との差異率を戻します。この計算の算式は次のようになります。 ((現在の値 - 以前の値)/以前の値) |
将来の値 |
この計算を使用して、将来の期間のアイテムの値を戻します。たとえば、現在が2005年10月の場合、1年後の売上高 = 2006年10月の売上高となります。 |
時間フレーム
このタイプを使用すると、表3-12に示す時系列計算を作成できます。
表3-12 時系列の計算済メジャーのリスト
計算済メジャー名 | 説明 |
---|---|
移動平均 |
この計算を使用して、継続する期間数にわたるメジャーの平均値を戻します。この計算の例を次に示します。 過去3か月の移動平均売上 = (1月の売上+2月の売上+3月の売上) ÷3 |
移動最大 |
この計算を使用して、継続する期間数にわたるメジャーの最大値を戻します。この計算の例を次に示します。 過去3か月間の売上高の移動最大 = 1月、2月および3月の最大売上高 |
移動最小 |
この計算を使用して、継続する期間数にわたるメジャーの最小値を戻します。この計算の例を次に示します。 過去3か月間の売上高の移動最小 = 1月、2月および3月の最小売上高 |
移動合計 |
この計算を使用して、継続する期間数にわたるメジャーの合計値を戻します。この計算の例を次に示します。 過去3か月間の売上高の移動合計 = (1月の売上高 + 2月の売上高 + 3月の売上高) |
現在までの期間 |
この計算を使用し、期間中のメジャー・データを合計してメジャー・データ累計を作成します。この計算の例を次に示します。 3月までの年累計 = 1月の売上高 + 2月の売上高 + 3月の売上高 |
「カスタム式」オプションを選択すると、計算済メジャーの計算に使用する式を指定できます。
Sales
キューブには、集計された売上データが格納されます。このキューブにはValue_sales
および Dollar_sales
という2つのメジャーが含まれています。
Value_sales
: 売上額を売上数量に換算して格納します。
Dollar_sales
: 売上額を格納します。
表3-13に、Salesキューブのディメンションを示します。この表には、キューブが参照するディメンションの名前とディメンションのレベルがリストされています。
ウィザードを使用してキューブを作成する手順は、次のとおりです。
プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。
キューブを作成するターゲット・モジュールを開きます。
「キューブ」を右クリックし、「新規キューブ」を選択します。
キューブ・ウィザードのようこそページが表示されます。「次へ」をクリックして次に進みます。ウィザードに表示される指示に従って次の各ページを完了します。
名前と説明ページを使用してキューブを記述します。このページに次の詳細を入力します。
名前: キューブ名。キューブ名は、モジュール内で一意である必要があります。
説明: キューブの説明(オプション)を指定します。
記憶域タイプ・ページを使用して、キューブ用の記憶域のタイプを指定します。記憶域タイプにより、データベースにおけるキューブ・データの物理的な格納方法が決定されます。記憶域タイプについて選択できるオプションは次のとおりです。
記憶域タイプは、キューブ全体の最下位レベルに格納されるデータ量、および必要なリフレッシュ・レートに基づいて選択します。
ROLAP: リレーショナル記憶域
Oracle Warehouse Builderでは、キューブ定義とそのデータがデータベースにリレーショナル形式で格納されます。このオプションを使用すると、リレーショナル実装またはROLAP実装を使用するキューブを作成できます。
リレーショナル記憶域の方が望ましいのは、大量の詳細データを格納する場合、または大量のデータが頻繁にリフレッシュされる場合です。次のいずれかを実行する必要がある場合は、リレーショナル記憶域を使用してください。
コール詳細レコード、販売時点(POS)レコード、および他のトランザクション指向データなどの詳細情報の格納。
短い間隔での大量のデータのリフレッシュ。
受注詳細リストなどの詳細レポートの作成。
通常、オペレーショナル・データ・ストアおよびエンタープライズ・データ・ウェアハウスは、リレーショナル記憶域を使用して実装されます。次に、このリレーショナル実装からMOLAP実装を導出し、様々な分析タイプを実行できます。
ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、このディメンションをOLAPカタログに配布することもできます。
キューブに対してリレーショナル実装を選択すると、キューブ・データの格納に使用する実装表が作成されます。
ROLAP: MVあり
Oracle Warehouse Builderでは、キューブ定義とそのデータがデータベースにリレーショナル形式で格納されます。また、キューブ編成されたMVは、アナリティック・ワークスペースに作成されます。このオプションを選択すると、ROLAP実装を使用してサマリーをアナリティック・ワークスペースに格納するキューブが作成されます。
このオプションを使用すると、11gデータベースでキューブ構成のMVに基づくサマリー管理が提供されます。問合せを変更する必要なしに、問合せのパフォーマンスを大幅に向上できます。
ROLAP: MV実装を使用して作成されたキューブではMV実装のみがサマリー・データを格納できます。
MV実装によるROLAPを選択するのは次のような場合です。
キューブ・データの格納に使用する実装表が作成されます。
キューブは、ディメンションが属するモジュールと同じ名前を使用するアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースを格納する表領域は、ディメンション・メタデータを含む、スキーマ用のユーザー表領域として定義された表領域です。
注意: キューブがROLAP: キューブMV実装を使用する場合、このキューブが参照するすべてのディメンションも同様にROLAP: キューブMV実装を使用する必要があります。 |
MOLAP: 多次元記憶域
Oracle Warehouse Builderでは、キューブ定義とキューブ・データがデータベースのアナリティック・ワークスペースに格納されます。このオプションを使用すると、MOLAP実装を使用するキューブを作成できます。
多次元記憶域の方が望ましいのは、分析用の集計データを格納する場合です。通常、多次元記憶域の場合はデータを事前に計算および集計する必要があるため、リフレッシュ間隔はリレーショナル記憶域よりも長くなります。また、集計レベルが上位であるため、データ量は小さくなるのが普通です。次の操作を実行するには、多次元記憶域を使用します。
傾向分析、what-if分析、またはデータの予測および割当てなどの拡張分析。
特定時点の結果を持つデータのドリルおよびピボット。
MOLAP実装を選択すると、アナリティック・ワークスペースへのキューブの格納に使用する名前が生成されます。アナリティック・ワークスペースが存在しない場合は、指定した名前でアナリティック・ワークスペースが作成されます。
ディメンション・ページでは、キューブのディメンションを定義します。キューブは、1つ以上のディメンションを参照する必要があります。ディメンションを定義するには、キューブが参照するディメンションを選択します。同じディメンションを使用して複数のキューブを定義できます。たとえば、ディメンションTIMESをSALESキューブとCOSTキューブで使用できます。
ディメンション・ページには、「使用可能なディメンション」および「選択したディメンション」という2つのセクションがあります。
使用可能なディメンション セクションには、ワークスペース内の全ディメンションがリストされます。プロジェクト内の各モジュールは個別のノードで表されます。モジュール・ノードを拡張し、そのモジュール内の全ディメンションを表示します。
「使用可能なディメンション」セクションに表示されるディメンションは、Warehouse Builderにより、そのディメンション用に選択した実装タイプに基づいてフィルタされます。記憶域タイプとして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
、TIMESTAMP WITH TIME ZONE
およびTIMESTAMP WITH LOCAL TIME ZONE
データ型に対してのみ使用されます。
サマリー・ページを使用して、キューブ・ウィザードで指定したオプションを確認します。キューブの定義を完了するには「終了」をクリックします。このキューブは、プロジェクト・ナビゲータの「キューブ」ノードの下に表示されます。
Oracle Warehouse Builderにより、ワークスペースで次のメタデータが作成されます。
キューブ・オブジェクト。
キューブ・データを格納する表の定義。
リレーショナル実装またはROLAP実装の場合は、キューブ・データを格納するデータベース表の定義が作成されます。また、キューブ・データを格納する表に、キューブが参照するディメンションの関連データを格納する各データ・オブジェクトへの外部キーも作成されます。
MOLAP実装の場合は、キューブ・データを格納するアナリティック・ワークスペースが作成されます。このウィザードでは、これらのオブジェクトの定義がリポジトリに作成されるのみであることに注意してください。ターゲット・スキーマにオブジェクトが作成されることはありません。
キューブの配布 キューブおよび関連オブジェクトをターゲット・スキーマに作成するには、キューブを配布する必要があります。ROLAPキューブを配布する前に、キューブ・データを格納するデータベース表を正常に配布してください。または、表とキューブの両方を配布できます。詳細は、「ディメンション・オブジェクトのMOLAP実装」を参照してください。
注意: キューブを削除しても、データベース表やアナリティック・ワークスペースなどの関連オブジェクトは削除されません。これらのオブジェクトは明示的に削除する必要があります。 |
キューブの作成ウィザードを使用してキューブを作成する場合、次のデフォルトが使用されます。
MOLAP記憶域: キューブは、その作成場所であるモジュールと同じ名前のアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースは、モジュールを所有するスキーマのユーザー表領域に格納されます。
解決: デフォルトでは、キューブは要求時に解決されます。
集計関数: キューブが参照する全ディメンションのデフォルトの集計関数はSUMです。
キューブ・エディタを使用すると、上級ユーザーは要件に従ってキューブを作成できます。また、キューブ・エディタはキューブの編集にも使用できます。
キューブの作成にキューブ・エディタを使用するのは、次の操作が必要な場合です。
キューブが疎なディメンションの指定
キューブ・メジャーの集計方法の定義
レベルの集計の事前計算
キューブ・エディタを使用してキューブを作成する手順は、次のとおりです。
プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。
キューブを作成するターゲット・モジュールを開きます。
「キューブ」を右クリックし、「新規」を選択します。
新規ギャラリ・ダイアログ・ボックスが表示されます。
ウィザードを使用しないキューブを選択し、「OK」をクリックします。
キューブ・エディタが表示されます。キューブを定義するには、「キューブの詳細」パネルの次の各タブに情報を入力します。
キューブ・エディタを使用してキューブを作成する場合、キューブ・データを格納する物理オブジェクトは自動的に作成されません。手動で作成する必要があります。
キューブ・メジャーとディメンション参照を、そのデータを格納するデータベース列にバインドするには、「「物理バインド」タブ」を参照してください。この手順を実行する必要があるのは、ROLAP実装を使用するキューブの場合のみです。
「名前」タブを使用してキューブを記述します。このタブで次の詳細を指定します。
名前: キューブ名を指定します。キューブ名は、モジュール内で一意である必要があります。
説明: キューブの説明(オプション)を指定します。
「記憶域」タブでは、キューブとキューブ・データの格納方法を指定します。記憶域タイプとして「リレーショナル」または「MOLAP」を選択できます。
ROLAP: リレーショナル記憶域 キューブ定義とキューブ・データをデータベースにリレーショナル形式で格納するには、「ROLAP: リレーショナル記憶域」オプションを選択します。このオプションを使用すると、リレーショナル実装またはROLAP実装を使用するキューブを作成できます。キューブ・データは、データベース表またはビューに格納されます。
ファクト表のすべての外部キー列のビットマップ索引を生成するには、「ビットマップ索引の作成」オプションを選択します。スター・クエリーの場合は、この選択が必須です。詳細は、Oracleデータ・ウェアハウス・ガイドを参照してください。
ディメンションの外部キー列に一意キーを作成するには、「複合一意キーの作成」オプションを選択します。
ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、このディメンションをOLAPカタログに配布することもできます。
ROLAP: キューブMV ディメンション定義とそのデータをアナリティック・ワークスペースのデータベースとキューブ・マテリアライズド・ビュー・サマリーにリレーショナル形式で格納するには、ROLAP: キューブMVオプションを選択します。
MVs実装のROLAPを選択すると、「MOLAP: 多次元記憶域」セクションの「AW名」フィールドを使用して、サマリー・データを格納するアナリティック・ワークスペースの名前を指定します。
注意: キューブがROLAP: キューブMV実装を使用する場合、このキューブが参照するすべてのディメンションも同様にROLAP: キューブMV実装を使用する必要があります。 |
MOLAP: 多次元記憶域 キューブ・データをアナリティック・ワークスペースに格納するには、「MOLAP: 多次元データ構造」オプションを選択します。このオプションを使用すると、MOLAP実装を持つキューブを作成できます。アナリティック・ワークスペース・セクションを使用して、記憶域の詳細を指定します。このセクションでは、次の詳細を入力します。
AW名: このフィールドでは、キューブ定義とキューブ・データを格納するアナリティック・ワークスペースの名前を指定します。「選択」ボタンを使用して、「アナリティック・ワークスペース」ダイアログ・ボックスを表示します。このダイアログ・ボックスには、現行のプロジェクトにあるディメンション・オブジェクトが表示されます。リストからオブジェクトを選択すると、選択したオブジェクトと同じ名前のアナリティック・ワークスペースにキューブが格納されます。
AW表領域名: アナリティック・ワークスペースが格納される表領域の名前を表します。名前を指定しなければ、アナリティック・ワークスペースはモジュールの所有者のデフォルトのユーザー表領域に格納されます。
「ディメンション」タブを使用して、キューブのディメンションを定義します。このタブには、キューブが参照するディメンションの選択に使用する表と「拡張」ボタンが表示されます。このタブの左にある矢印を使用すると、タブにリストされるディメンションの順序を変更できます。MOLAP実装またはROLAPキューブMV実装を使用するキューブのみ「拡張」ボタンが有効になります。
「拡張」ボタンを使用すると、キューブが参照するディメンションのスパーシティを定義できます。このボタンをクリックすると、「拡張」ダイアログ・ボックスが表示されます。スパーシティを定義できるのはMOLAPキューブの場合のみのため、「拡張」ボタンは記憶域タイプが「MOLAP」の場合にのみ有効化されます。「スパーシティ」ダイアログ・ボックスの詳細は、「拡張」ダイアログ・ボックスを参照してください。
「ディメンション」タブの表は、次の列で構成されています。
ディメンション: このフィールドは、キューブが参照するディメンションの名前を表します。このフィールドにある省略記号ボタンをクリックすると、「使用可能なモジュール」ダイアログ・ボックスが表示されます。このダイアログ・ボックスには、現行のプロジェクトにあるディメンションが表示されます。このリストからディメンションを選択します。
このリストに表示されるディメンションは、Oracle Warehouse Builderにより、キューブに指定した記憶域タイプに基づいてフィルタされます。キューブに対してリレーショナル実装を定義すると、リレーショナル実装を使用するディメンションのみが表示されます。キューブに対してMOLAP実装を定義すると、MOLAP実装を使用するディメンションのみが表示されます。
レベル: 「レベル」には、「ディメンション」フィールドで選択したディメンションの全レベルが表示されます。キューブが参照するディメンション・レベルを選択します。
ロール: 「ロール」リストには、選択したディメンションに含まれるディメンション・ロール(存在する場合)が表示されます。キューブで使用するディメンション・ロールを選択します。ディメンション・ロールを指定できるのは、リレーショナル・ディメンションの場合のみです。
「拡張」ダイアログ・ボックスを使用して、キューブが参照するディメンションのスパーシティを指定します。スパーシティを適用できるのは、MOLAPキューブおよびキューブMVを使用して実装されたROLAPキューブのみです。スパーシティの詳細は、Oracle OLAPユーザーズ・ガイドを参照してください。
このダイアログ・ボックスには、ディメンション列およびスパーシティ列の2列を含む表が表示されます。
ディメンション: この列には、キューブ・エディタの「ディメンション」タブにリストされるディメンションがすべて表示されます。ディメンションは、「ディメンション」タブ上と同じ順序でリストされます。このダイアログ・ボックスでのディメンションの表示順序を変更するには、キューブ・エディタの「ディメンション」タブでの表示順序を変更する必要があります。
スパーシティ: 「スパーシティ」により、キューブ・データが特定のディメンションでスパースであることを指定されます。キューブ・データがそのディメンションでスパースである場合は、ディメンション参照に対して「スパーシティ」を選択します。たとえば、SALESキューブのデータが販促ディメンションでスパースである場合は、販促ディメンションの「スパーシティ」を選択します。
キューブ内の疎なディメンションはすべて、疎度の最も低いディメンションから最も高いディメンションまでグループ化する必要があります。たとえば、SALESキューブはディメンションの時間、製品、販促、およびチャネルを参照します。これは「拡張」ダイアログ・ボックスにリストされるディメンションの順序です。キューブ・データは販促ディメンションおよびチャネルディメンションに従うスパースで、販促はスパースが最大の状態です。これらすべてのディメンションは次の順序でグループとして表示される必要があります。時間、チャネル、および販促です。これらのディメンション間ではリストされた他のディメンションを持つことができません。
次のガイドラインを使用して、ディメンションの順序を並び替えます。
最初に時間ディメンションを表示して、データのロードおよび時間ベースの分析を迅速に処理します。通常、時間ディメンションは稠密ディメンションですが、ベース・レベルが日である場合、またはキューブに多くのディメンションがある場合、時間はスパース・ディメンションとなる場合があります。
最大値のメンバーのディメンションから最小値のメンバーのディメンションという順序でスパース・ディメンションがリスト化されます。圧縮キューブの場合、スパース・ディメンションは最小値のメンバーのディメンションから最大値のメンバーのディメンションという順序でリスト化されます。
キューブに対して疎度を定義することには次の利点があります。
データ取得速度の向上
キューブが使用する記憶領域の削減
キューブの圧縮 このオプションを選択すると、キューブ・データが圧縮されてから格納されます。記憶域を圧縮すると容量の使用量が減少し、通常の記憶領域よりも集計が高速になります。キューブの圧縮の詳細は、Oracle OLAPユーザーズ・ガイドを参照してください。
通常、圧縮された記憶域は非常に疎なキューブに使用されます。キューブが非常に疎であるのは、ディメンション階層に複数レベルがあり、ディメンション数がレベル間でほとんど変化しない場合です。そのため、多数の親が複数の連続するレベルに子孫を1つのみ持ちます。集計されるデータ値はレベル間で変化しないため、一度格納すればよいことになります。
圧縮されたコンポジットの場合に選択できるのは、「SUM」および加算以外の集計演算子のみです。
パーティション・キューブ このオプションを選択すると、キューブはディメンションの1つに沿ってパーティション化されます。キューブをパーティション化すると、大きなメジャーのパフォーマンスが改善されます。
パーティション・キューブ・オプションの下の表を使用して、キューブのパーティション化に使用するディメンションを指定します。1レベル以上の階層を持つディメンションを指定する必要があり、特定のレベルのすべての親がほぼ同数の子を持つなど、ディメンション・メンバーが均等に分散している必要があります。「ディメンション」列を使用してキューブのパーティション化に使用するディメンションを選択します。「階層」および「レベル」列を使用して、ディメンション階層とレベルを選択します。
通常、「時間」は必要な基準を満たしているため、キューブのパーティション化には最適の選択肢です。また、データは期間別にロードされてロール・オフされるため、データ・リフレッシュ・プロセスの一部として新規パーティションを作成して古いパーティションを削除できます。
グローバル索引を使用します。 グローバル・パーティション索引を作成するには、このオプションを選択します。
「メジャー」タブを使用してキューブ・メジャーを定義します。各メジャーについて次の詳細を指定します。
名前: メジャー名。メジャー名は、キューブ内で一意である必要があります。
説明: メジャーの説明(オプション)。
データ型: メジャーのデータ型。
長さ: メジャーの最大バイト数。長さは、文字データに対してのみ指定されます。
精度: 列に使用できる合計桁数を定義します。精度は数値データ型に対してのみ定義されます。
スケール: 小数点以下の合計桁数を定義します。スケールは数値データ型に対してのみ定義されます。
秒精度: 日時フィールドの小数部の桁数を表します。0から9までの数値を入力できます。秒精度はTIMESTAMP
、TIMESTAMP WITH TIME ZONE
およびTIMESTAMP WITH LOCAL TIME ZONE
データ型に対してのみ使用されます。
式: このフィールドを使用して計算済メジャーを定義します。計算済メジャーは、データが格納されないメジャーです。メジャー値は、定義済の式を使用して必要に応じて計算されます。省略記号のボタンをクリックすると、計算済メジャー・ウィザードが表示されます。計算済メジャー・ウィザードの詳細は、「計算済メジャー・ウィザード」を参照してください。
キューブに定義されている他のメジャーを使用して、メジャーの式を作成できます。定義済の式を検証できるのは配布時のみです。
注意: 計算済メジャーを作成できるのは、MOLAPディメンションの場合のみです。 |
標準メジャーの生成ボタンをクリックすると、基本メジャーに対する一連の標準計算が生成されます。これは、共有、ランクおよび時間ベースの計算を短時間で作成できる操作です。このオプションを使用して作成する計算済メジャーは、計算済メジャー・ウィザードを使用して手動で作成することもできます。
計算済メジャー・ウィザードを使用して、MOLAP実装を使用するキューブに計算済メジャーを作成します。これらの計算済メジャーは、キューブに定義されている他のメジャーと同様に、アナリティック・ワークスペースに配布されます。このウィザードを使用すると、「計算済メジャーの生成」をクリックした場合には作成されない特定の付加的計算を作成できます。
このページを使用して、計算済メジャーの詳細を定義します。このページの内容は、計算済メジャー・タイプの選択ページで選択した計算のタイプに応じて異なります。たとえば、計算済メジャー・タイプとして加算を選択した場合は、このページに2つのリストが表示され、加算するメジャーを選択できます。
計算済メジャー・タイプの選択ページで「カスタム式」を選択した場合は、式ビルダー・インタフェースが表示されます。このインタフェースを使用してカスタム・メジャーを定義します。式ビルダーの詳細は、「式ビルダー」を参照してください。
「集計」タブを使用して、キューブが参照する各ディメンションに対して実行が必要な集計を定義します。データの集計に使用する集計関数を選択します。また、キューブが参照する各ディメンションに沿ったメジャーを事前計算することもできます。デフォルトでは、各代替レベルについて最下位レベルから順番に集計が実行されます。デフォルトの集計関数はSUMです。データ集計計画の詳細は、Oracle OLAPユーザーズ・ガイドのデータ集計に関する章を参照してください。
「集計」タブで次のオプションを指定します。
キューブ集計方法: キューブ・データの集計に使用する集計関数を選択します。デフォルト選択はSUMです。
サマリーのリフレッシュ方法: データのリフレッシュ方法を選択します。「要求時」または「コミット時」を選択できます。
キューブのサマリー方針: このセクションを使用して、各ディメンションについてデータを事前計算するレベルを定義します。ディメンション列には、キューブが参照するディメンションが表示されます。ディメンション内でデータを事前計算するレベルを選択するには、ディメンション名の右にある事前計算列の省略記号ボタンをクリックします。「ロケーション」ダイアログ・ボックスが表示されます。このダイアログ・ボックスを使用して、ディメンション内でメジャー・データを事前計算するレベルを選択します。事前計算するレベルは、ディメンション階層ごとに指定できます。デフォルトでは、最下位レベルから順番に各代替レベルが事前計算されます。
注意: 純粋なリレーショナル・キューブ(データベースのリレーショナル・スキーマにのみ実装され、OLAPカタログには実装されないキューブ)の集計は定義できません。 |
ROLAPキューブの場合、集計データを格納するマテリアライズド・ビューが作成されて集計が実装されます。これらのマテリアライズド・ビューにより、問合せパフォーマンスが向上します。MOLAP実装の場合は、集計データが生成され、基本レベルのデータとともにアナリティック・ワークスペースに格納されます。一部の集計データは配布時に生成され、残りは「集計」タブで定義したルールに従って問合せに対するレスポンス中に必要に応じて集計されます。
注意: ROLAP集計の実装用に作成されるマテリアライズド・ビューは、プロジェクト・ナビゲータの「マテリアライズド・ビュー」ノードには表示されません。 |
「孤立」タブを使用して、キューブにデータをロード中またはキューブからデータを削除中に使用するオーファン管理ポリシーを指定します。このタブには、NULLディメンション・キー値および無効なディメンション・キー値の2つのセクションが含まれていて、NULLディメンション・キー値を持つキューブ・レコードおよび無効なディメンション・キー値を持つキューブ・レコードに対するアクションを指定する場合に使用します。
次のオプションを1つ選択して、NULLおよび無効なディメンション・キー値を持つキューブ・レコードに対するオーファン管理ポリシーを指定します。
メンテナンスなし: オーファン行を積極的に検出、拒否または修正することはありません。
デフォルトのディメンション・レコード: 無効またはNULLのディメンション・キー値を含む行には、デフォルトのディメンション・レコードが割り当てられます。デフォルトの親の行を定義するには、「設定」ボタンを使用します。
孤立拒否: 既存のディメンション・レコードのない行は挿入されません。
「エラー表の配布」を選択して、オーファン管理に関するエラー表を生成し、ディメンションを使用して配布します。
キューブの構造を定義した後、キューブ・データを格納するデータベース表またはビューの詳細を指定する必要があります。「物理的バインド」タブを使用して、キューブに実装オブジェクトを定義できます。次のオプションを1つ選択して、キューブ・データを格納するデータベース・オブジェクトにキューブをバインドできます。
自動バインド
手動バインド
自動バインド: 自動バインドを実行すると、キューブのメジャーとディメンションの参照がそのデータを格納するデータベース列に自動的にマップされます。
自動バインドを実行するには、プロジェクト・ナビゲータでキューブを選択します。「ファイル」メニューで、「バインド」をクリックします。Oracle Warehouse Builderにより、キューブ内のメジャーとディメンションの参照がキューブ・データの格納表にマップされます。
関連項目: 自動バインド・ルールの詳細は、『Oracle Warehouse Builder概要』を参照してください。 |
手動バインド 手動バインドの場合は、キューブ内のメジャーとディメンションの参照を、そのデータを格納するデータベース・オブジェクトに明示的にマップする必要があります。キューブ・データを既存の表に格納するか、新規の表を作成できます。
手動バインドを実行する手順は、次のとおりです。
キューブ・エディタを開き、「物理的バインド」タブにナビゲートします。
空白の領域を右クリックし、「追加」を選択してから、キューブ・データを格納するオブジェクトのタイプを選択します。たとえば、キューブ・データを表に格納する場合は、空白の領域を右クリックし、「追加」、次に「表」を選択します。
「新規または既存の表を追加」ダイアログ・ボックスが表示されます。キューブ・データの格納用に既存の表を選択するか、新規の表を作成します。
ディメンションの各属性を、そのデータを格納するデータベース列にマップします。
データ・オブジェクトを使用してキューブを定義し、バインド(ROLAPキューブの場合のみ)を実行した後、キューブを配布する必要があります。キューブの配布の詳細は、「キューブの配布」を参照してください。
MOLAP実装を使用したキューブはアナリティック・ワークスペースに格納されます。Database 10gのアナリティック・ワークスペース・エンジンには、AWXMLというAPIが用意されています。このAPIにより、(アナリティック・ワークスペース・マネージャのような)クライアント/サーバー方式の使用とjavaのストアド・プロシージャによるバッチ方式の使用の両方が可能になります。この項ではMOLAPキューブの実装の詳細を説明します。
ディメンションの「記憶域」タブで「データ・ソースの自然キーを使用」を選択すると、このディメンションを使用するキューブの不規則ファクト・データを処理できるマッピング・コード(AWXMLマッピング・コード)が生成されます。またキューブ・ディメンション・レベルのソース列は、実際にはすべての親レベルにマップされます。これにより、不規則ファクト・データのロードが可能になります。
ディメンションの「記憶域」タブの「アナリティック・ワークスペースでサロゲート・キーを生成」を選択する場合、このディメンションのレベルでデータをロードするマッピングを作成するときに、このレベルのみにキューブ・ディメンション・メンバーをロードします。
Oracle Warehouse Builderにより追加の階層定義の必要なく既存のディメンションを再利用できます。集計は定義したキューブのディメンションのレベル参照に基づいて生成されます。キューブのディメンションのレベルがメンバーである階層のみが集計に含まれます。参照されるキューブのディメンション・レベルが階層の非リーフ・レベルである場合、階層内のそれより下位のレベルは、キューブまたはメジャーの解決の際に除外されます。たとえば、BUDGETとSALESという2つのキューブがある場合、これらはディメンションの階層定義を追加することなく同じディメンション定義を共有できます。
OLAP AWXMLエンジンの重要な属性は、アナリティック・ワークスペースに格納されているキューブの自動解決機能です。圧縮されたキューブおよび圧縮されていないキューブの両方を自動解決できます。圧縮されたキューブは、「拡張」ダイアログ・ボックスでキューブの圧縮オプションが選択されたキューブです。
次のいずれかの条件が満たされている場合にキューブは自動解決されます。
キューブは圧縮されています。
キューブは圧縮されていません。また次の追加の条件がtrueです。
すべてのメジャーの「解決」プロパティを「はい」に設定します。
キューブで参照するディメンション・レベルはレベルがメンバーのすべての階層のリーフ・レベルです。
キューブを含むマッピングが実行されています。
キューブの増分集計は、自動解決(1つの操作でのロードおよび集計)に依存しています。「増分集計」はマッピングのキューブ演算子のプロパティで、自動解決キューブにのみ適用されます。Oracle Warehouse Builderでは、次の条件がtrueの場合は自動解決キューブではないキューブが生成されます。
キューブは、キューブをロードするマッピングで解決されています。
Oracle Warehouse Builderの変換がキューブの解決に使用されています。
キューブは圧縮されていなません。また次の条件のいずれかがtrueです。
いくつかのメジャーでは「解決」プロパティがNoに設定されています。
キューブで参照するディメンション・レベルはレベルがメンバーのすべての階層のリーフのないレベルです。
圧縮されているキューブおよび圧縮されていないキューブの両方に対して、1つのキューブ・メジャーのみを解決できます。圧縮されたキューブは、「拡張」ダイアログ・ボックスでキューブの圧縮オプションが選択されたキューブです。
圧縮されたキューブで1つのメジャーのみを解決する手順は、次のとおりです。
キューブ・エディタを開き、「集計」タブにナビゲートします。
プロジェクト・ナビゲータでキューブ名をダブルクリックすると、キューブ・エディタが開きます。
「集計」タブの「メジャー」セクションで解決するメジャーを選択します。
「メジャーの集計」セクションに、キューブで参照する各ディメンションの行が表示されます。キューブを解決するディメンションを表す行で、集計関数列のNOAGGを選択します。
圧縮されていないキューブで1つのメジャーのみを解決するには、最新のデータベースのパッチ10.2.0.2が必要です。Database 10gリリース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表を参照してください。
ディメンションが、サロゲート・キーを使用しないで定義されているスター実装の場合、非リーフ・レベルのレコードはディメンション表に含まれないため、キューブは、非リーフ・レベルを参照できません。親レベルの情報が子レコードに含まれているとき、それを一意に識別する方法はありません。キューブ・エディタで、キューブ内のディメンション参照についての非リーフ・レベルが選択できるとき、キューブをロードするときに正しくない結果になります。
親レベルのビジネス・キーのデータ・タイプとリーフ・レベルのビジネスキーが一致しない場合、配布エラーがファクト表に発生する可能性があります。この場合、外部キー列は親レベルのデータ・タイプを持ち、参照される主キー列は、リーフ・レベルのデータ・タイプを持つことになるため、外部キー定義は正しくない場合があります。
たとえば、L1
とL2
の2つのレベルを持つ単純なディメンションを作成します。これらに、 L1
NUMBER
とL2
VARCHAR2(20)
というデータ・タイプを持つビジネス・キー属性を割り当てます。次にこのディメンションを参照するキューブを作成して、L1
(親)を参照先ディメンションとして選択します。このIDにサロゲート・キー属性ロールを作成する場合、ディメンションがサロゲート・キーを持たないようにディメンション属性をNULLに変更します。親レベルを参照として選択後、キューブを再バインドします。ファクト表を配布しようとすると、Oracle Warehouse BuilderによってORA-XXXXXエラーが戻されます。
キューブ・エディタを使用してキューブを編集し、定義を変更できます。ディメンション定義の編集時には、オブジェクトのメタデータのみが変更されます。物理オブジェクトの定義を更新するには、コントロール・センターを使用して変更後のディメンションを配布します。
キューブ定義を編集する方法は次のとおりです。
プロジェクト・ナビゲータでキューブを右クリックして、「開く」を選択します。
または
プロジェクト・ナビゲータで、キューブをダブルクリックします。
キューブ・エディタが表示されます。これらのタブを使用してキューブ定義を編集します。キューブ・エディタの各タブの詳細は、「キューブ・エディタを使用してのキューブの作成」を参照してください。
キューブの構成時には、キューブおよび基礎となる表の両方を構成します。
キューブの物理プロパティを構成する手順は、次のとおりです。
プロジェクト・ナビゲータで、キューブ名を右クリックして「構成」を選択します。
キューブの「構成」タブが表示されます。
次の各カテゴリにリストしたキューブ・パラメータを構成します。
これらのパラメータについては、次のようなキューブの構成についてのガイドラインがあります。
各ディメンションに外部キー制約が存在します。
各外部キー列には、参照先ディメンションへのビットマップ索引が生成されています。
識別
配布可能: このキューブを配布する場合は「TRUE」を選択します。Oracle Warehouse Builderでは、配布可能マークの付いた表制約についてのみスクリプトが生成されます。
配布オプション: このパラメータを使用してキューブの実装のタイプを指定します。オプションは次のとおりです。
すべて配布 リレーショナル実装またはROLAP実装の場合は、キューブがデータベースに配布され、CWM定義がOLAPカタログに配布されます。MOLAP実装については、キューブはアナリティック・ワークスペースに配布されます。
データ・オブジェクトのみ配布キューブのみをデータベースに配布します。このオプションを選択できるのは、リレーショナル実装を持つキューブの場合のみです。
カタログにのみ配布CWM定義をOLAPカタログにのみ配布します。このオプションを使用するのは、キューブ・データのみの配布後にDiscoverer for OLAPなどのアプリケーションでそのデータにアクセスする必要がある場合です。以前にデータ・オブジェクトのみを配布した場合は、このオプションを使用すると、再度データ・オブジェクトを配布せずにCWMカタログ定義を配布できます。
集計の配布: キューブ・メジャーに定義されている集計を配布します。
マテリアライズド・ビュー索引表領域: マテリアライズド・ビュー索引を格納する表領域の名前。
マテリアライズド・ビューの表領域: キューブ用に作成されたマテリアライズド・ビューを格納する表領域の名前。
参照可能: このパラメータは、コード生成で使用されません。
サマリー管理
コストベース集計: このパラメータは、OLAPサマリー(マテリアライズド・ビュー)を持つMOLAPキューブおよびROLAPキューブに適用されます。キューブの集計前の割合を示します。
このパラメータの値を0に設定した場合、集計値は作成されません。集計は実行時に計算されます。このため、この値に設定した結果として、最速のメンテナンス時間と最小の記憶域領域を実現できます。ただし、問合せのレスポンス時間は最も遅くなります。
このパラメータの値を100に設定した場合は、すべての集計値が作成されます。問合せの実行時には、これらの値をフェッチする必要があります。この値の結果として、問合せのレスポンス時間は最短になります。ただし、メンテナンス時間は長くなり、多量の記憶域領域が使用されます。
問合せリライトの有効化: 問合せリライトの有効化を有効にします。サーバーのクエリー・リライト・メカニズムでは、既存のマテリアライズド・ビューを使用するSQL問合せが自動的にリライトされます。これにより、問合せパフォーマンスが向上します。キューブがMV実装のROLAPを使用する場合のみ、このパラメータを設定します。
「MVリフレッシュの有効化」、「MV制約」、「リフレッシュ・モード」、「次のリフレッシュ日」、「リフレッシュ」および「リフレッシュ開始日」の詳細は、「サマリー管理」を参照してください。
配布オプション構成パラメータを設定することで、キューブがターゲット・スキーマに配布される形式を指定できます。キューブの配布オプションに設定できる値は、「すべて配布」、「データ・オブジェクトのみ配布」、カタログに配布および「集計の配布」です。構成オプション・パラメータの設定手順については、「キューブの構成」を参照してください。
配布オプション構成パラメータでは、キューブのフォームも同様に指定した生成モードで配布されます。キューブを含むモジュールのPL/SQL生成モード・パラメータは、モジュール内のオブジェクトが配布されるデータベースを示します。PL/SQL生成モードは、デフォルトのOracle Database 10g、Oracle Database 11g、Oracle8iおよびOracle9iの各オプションのいずれかに設定できます。詳細は、「ターゲット・モジュールの構成」を参照してください。
表3-14に、ROLAP実装でキューブを別のデータベース・バージョンに配布する方法を示します。
表3-14 キューブの配布オプション
配布オプション | ターゲット・スキーマ: Database 10g、ROLAP実装 | ターゲット・スキーマ: Database 11g、ROLAP実装 | ターゲット・スキーマ: Database 11g、MV実装によるROLAP |
---|---|---|---|
データ・オブジェクトの配布 |
n/a |
n/a |
n/a |
カタログに配布 |
CWM2 |
CWM2 |
11g形式AW+ |
表3-15に、MOLAP実装でキューブを別のデータベース・バージョンに配布する方法を示します。
Oracle Warehouse Builderには時間ディメンションの作成ウィザードが用意されており、完全な機能を持つ時間ディメンションをすばやく作成できます。時間ディメンションにデータを移入するマッピングも自動的に作成されます。時間ディメンション用にリレーショナル実装を選択すると、時間ディメンション・データを格納する実装オブジェクトも作成されます。
また、ディメンション・エディタを使用して、独自仕様による時間ディメンションを定義することもできます。この場合は、実装オブジェクトと、時間ディメンションをロードするマップを作成する必要があります。
時間ディメンションの作成ウィザードを使用して時間ディメンションを作成する手順は、次のとおりです。
プロジェクト・ナビゲータで、「データベース」ノード、続いて「Oracle」ノードを開きます。
時間ディメンションを作成するターゲット・モジュールを開きます。
「ディメンション」を右クリックし、「新規」を選択します。
「新規ギャラリ」ダイアログ・ボックスが表示されます。
「時間ディメンション」を選択して、「OK」をクリックします。
時間ディメンションの作成ウィザードのようこそページが表示されます。「次へ」をクリックして次に進みます。ウィザードに表示される指示に従って次の各ページを完了します。
名前ページでは、時間ディメンションを説明します。名前ページでは、次の詳細を入力します。
名前: 時間ディメンション名を入力します。ディメンション名は、モジュール内で一意にする必要があります。
説明: 時間ディメンションの説明(オプション)を入力します。
記憶域ページを使用して、データベースへの時間ディメンション・データの格納方法を指定します。記憶域タイプは、キューブ全体の最下位レベルに格納されるデータ量、および必要なリフレッシュ・レートに基づいて選択します。記憶域タイプのオプションは次のとおりです。
リレーショナル記憶域(ROLAP): 時間ディメンション定義がデータベースにリレーショナル形式で格納されます。このオプションを選択すると、リレーショナル実装またはROLAP実装を使用する時間ディメンションを作成できます。
この時間ディメンションの実装に必要な基礎となる表は、Oracle Warehouse Builderにより自動的に作成されます。時間ディメンションの実装には、スター・スキーマが使用されます。
ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、このディメンションをOLAPカタログに配布することもできます。
ROLAP: MV 時間ディメンション定義とそのデータがデータベースにリレーショナル形式で格納されます。また、キューブ編成されたMVは、アナリティック・ワークスペースに作成されます。このオプションを選択すると、リレーショナル実装を使用してサマリーをアナリティック・ワークスペースに格納するディメンションが作成されます。
このオプションを使用することで、Oracle Database 11gにキューブ編成されたMVに基づいてサマリーを管理できます。問合せを変更する必要なしに、問合せのパフォーマンスを大幅に向上できます。
MOLAP: 多次元記憶域: 時間ディメンション定義とデータがアナリティック・ワークスペースに格納されます。このオプションを選択すると、MOLAP実装を使用する時間ディメンションを作成できます。
時間ディメンションは、Oracle Warehouse Builderによりモジュールと同じ名前のアナリティック・ワークスペースに格納されます。アナリティック・ワークスペースを格納する表領域は、ディメンション・メタデータを含む、スキーマ用のユーザー表領域として定義された表領域です。
これらのオプションの詳細は、「記憶域タイプ・ページ」を参照してください。
データ生成ページを使用して、時間ディメンションのタイプおよび格納されるデータの範囲など、時間ディメンションの詳細情報を指定します。このページには、時間ディメンションに格納されるデータの範囲と一時データのタイプの詳細が表示されます。
データの範囲 データの範囲セクションでは、時間ディメンションに格納される一時データの範囲を指定します。範囲を指定するには、次の項目を定義します。
開始年: 時間ディメンションへのデータ格納を開始する年。リストをクリックして開始年を選択します。
年数: 時間ディメンションにデータを格納する開始年からの合計年数。リストから値を選択して年数を指定します。
時間ディメンションのタイプ 時間ディメンションのタイプ・セクションを使用して、作成する時間ディメンションのタイプを指定します。時間ディメンションのタイプを次のオプションから1つ選択します。
カレンダ: カレンダ時間ディメンションを作成します。
会計: 会計時間ディメンションを作成します。会計時間ディメンションを作成するには、次の詳細を追加入力します。
会計規則: 会計月の表現に使用する規則を選択します。使用可能なオプションは、544および445です。
会計年度の開始: 会計年度の開始月日を選択します。
会計週の開始: 会計週の開始曜日を選択します。
レベル・ページを使用して、作成するカレンダ階層とカレンダ階層に含めるレベルを選択します。「カレンダ週」レベルから上のレベルへのドリルアップ・パスはないため、カレンダ階層の作成用に次の2つのオプションが用意されています。
通常階層
週階層
通常階層 「通常階層」には、次のレベルが含まれます。
カレンダ年
カレンダ四半期
カレンダ月
日
カレンダ階層に含めるレベルを選択します。少なくとも2つのレベルを選択する必要があります。
週階層 「週階層」には、「カレンダ週」および「日」という2つのレベルが含まれます。この階層を使用して、「カレンダ週」レベルを含む階層を作成します。「週階層」オプションを選択すると、これらのレベルの両方がデフォルトで選択されます。
レベル・ページを使用して、会計階層に含めるレベルを選択します。次のレベルを選択できます。
会計年度
会計年度四半期
会計年度月
会計年度週
日
少なくとも2つのレベルを選択します。Oracle Warehouse Builderにより、選択したレベルを含む会計階層が作成されます。追加の階層を作成するには、ディメンション・エディタを使用します。ディメンション・エディタの使用方法の詳細は、「時間ディメンション定義の編集」を参照してください。
作成前の設定ページには、時間ディメンションの作成ウィザードの前ページで選択したオプションのサマリーが表示されます。これには、属性、レベル、階層および時間ディメンションの移入に使用するマップの名前が含まれます。Oracle Warehouse Builderでは、これらの設定を使用して時間ディメンションを実装するオブジェクトが作成されます。ウィザードの実装に進むには、「次へ」をクリックします。前のウィザード・ページで選択したオプションを変更するには「戻る」をクリックします。
時間ディメンション進行状況ページには、時間ディメンションの実装の進行状況が表示されます。このページの進行状況ステータス・ログには、時間ディメンションを実装するために時間ディメンション・ウィザードで実行されるアクティビティがリストされます。処理の完了後、「次へ」をクリックして次に進みます。
サマリー・ページには、ウィザードの各ページで選択したオプションのサマリーが表示されます。このページを使用して、選択したオプションを確認します。
時間ディメンションの作成を完了するには、「終了」をクリックします。完全な機能を持つ時間ディメンションが作成されます。このディメンションは、プロジェクト・エクスプローラの「ディメンション」ノードの下に表示されます。この時間ディメンションをロードするマッピングは、プロジェクト・エクスプローラの「マッピング」ノードの下に表示されます。
Oracle Warehouse Builderにより次のオブジェクトが作成されます。
時間ディメンション・オブジェクト
時間ディメンション・レベルのサロゲートIDを移入する順序
時間ディメンション・データを格納する物理構造
リレーショナル実装の場合は、ディメンション・データを格納するデータベース表がワークスペースに作成されます。また、時間ディメンション属性は、Oracle Warehouse Builderにより、その値を格納するデータベース列にバインドされます。MOLAP実装の場合は、時間ディメンションとディメンション・データを格納するアナリティック・ワークスペースが作成されます。
時間ディメンションにデータを移入するマッピング。
注意: 時間ディメンションを削除しても、表、順序、および時間ディメンションに関連付けられているマッピングは削除されません。これらのオブジェクトは明示的に削除する必要があります。 |
時間ディメンション・ウィザードを使用して時間ディメンションを作成する場合、次のデフォルトが使用されます。
記憶域: リレーショナル記憶域のデフォルト実装はスター・スキーマです。MOLAP実装の場合、ディメンションは、時間ディメンションが作成されるモジュールと同じ名前のアナリティック・ワークスペースに格納されます。このアナリティック・ワークスペースは、ディメンションの格納先モジュールを所有するスキーマ用のユーザー表領域として割り当てられた表領域に格納されます。
階層: ディメンションの作成ウィザードのレベル・ページに表示された全レベルを含む標準階層が作成されます。この階層には、レベル・ページに表示されたのと同じ順序でレベルが含まれています。
時間ディメンションを編集する手順は、次のとおりです。
プロジェクト・ナビゲータで、「データベース」ノード、続いてノードを開きます。
編集対象の時間ディメンションを含むターゲット・モジュールを開きます。
編集する時間ディメンションを右クリックし、「開く」を選択します。また、時間ディメンションをダブルクリックする方法もあります。その時間ディメンションのディメンション・エディタが表示されます。
次の各タブで情報を編集します。
時間ディメンションを変更すると、新規の移入マップと新規の実装表が作成されます。既存の移入マップと実装表を削除するか保持するかを選択できます。
マッピング・エディタを使用して、時間ディメンションの移入マップを変更します。時間ディメンションを移入するマッピングを配布する必要があります。
配布前の移入マップを削除すると、時間ディメンションにデータを移入できません。これを回避するには、時間ディメンション・ウィザードを再実行して、別のディメンション移入マップを作成します。
「名前」タブを使用して時間ディメンションを記述します。このタブで次の詳細を入力します。
名前: 時間ディメンション名。名前はそのモジュール内で一意である必要があります。ネーミング規則の詳細は、「データ・オブジェクトのネーミング規則」を参照してください。
説明: 時間ディメンションの説明(オプション)。
データの範囲: 時間ディメンションに格納されるデータの範囲を指定します。範囲を指定するには、次の項目を定義します。
開始年: 時間ディメンションへのデータ格納を開始する年。リストをクリックして開始年を選択します。
年数: 時間ディメンションにデータを格納する開始年からの合計年数。リストから値を選択します。
記憶域タイプ・ページを使用して、時間ディメンション用の記憶域のタイプを指定します。使用できる記憶域オプションは「リレーショナル」または「MOLAP」です。
リレーショナル: 「リレーショナル」オプションを選択すると、時間ディメンション定義はデータベースにリレーショナル形式で格納されます。時間ディメンションのリレーショナル実装について次のオプションを1つ選択します。
スター・スキーマ: 時間ディメンションはスター・スキーマを使用して実装されます。ディメンション・データは、1つのデータベース表またはビューに格納されます。
スノーフレーク・スキーマ: 時間ディメンションはスノーフレーク・スキーマを使用して実装されます。ディメンション・データは、複数の表またはビューに格納されます。
ターゲット・スキーマを含むデータベースがインストールされたOLAPオプションを持つ場合、このディメンションをOLAPカタログに配布することもできます。
MOLAP 「MOLAP」を選択すると、時間ディメンションの定義とデータがデータベースのアナリティック・ワークスペースに格納されます。この方法では、アナリティック・ワークスペースを使用して時間ディメンション・データが格納されます。MOLAP実装の場合は次の詳細を入力します。
AW名: 時間ディメンションを格納するアナリティック・ワークスペースの名前を入力します。省略記号のボタンをクリックすると、使用可能なアナリティック・ワークスペースのリストが表示されます。Oracle Warehouse Builderでは、現行のプロジェクトにあるモジュールごとにノードが1つ表示されます。モジュールを開き、モジュール内のディメンション・オブジェクトのリストを表示します。リストからオブジェクトを選択すると、そのオブジェクトと同じアナリティック・ワークスペースに時間ディメンションが格納されます。
表領域名: アナリティック・ワークスペースを格納する表領域の名前を入力します。値を入力しない場合、アナリティック・ワークスペースは時間ディメンションのメタデータを含むスキーマのユーザー表領域として定義されている表領域に格納されます。
「属性」タブでは、ディメンション属性と、時間ディメンションのディメンション・キーの移入に使用する順序を定義します。「順序」フィールドは、時間ディメンションのディメンション・キー列に移入する順序の名前を表します。このフィールドの右にある「選択」を使用して、「利用可能な順序」ダイアログ・ボックスから順序を選択します。このダイアログ・ボックスには、現行のプロジェクトに属している順序がすべて表示されます。
ディメンション属性 「ディメンション属性」セクションには、時間ディメンションのディメンション属性が表示されます。このページは、新規ディメンション属性の作成にも使用します。属性ごとに次の詳細を指定します。
名前: ディメンション属性名。属性名はディメンション内で一意である必要があります。
説明: 属性の説明(オプション)。
識別子: 属性の識別子のタイプを表します。リストには2つのオプション「サロゲート」および「ビジネス」が表示されます。識別子のタイプを選択します。
データ型: 属性のデータ型を選択します。
長さ: 長さは文字データ型に対してのみ指定されます。
精度: 列に使用できる合計桁数を定義します。精度は数値データ型に対してのみ定義されます。
スケール: 小数点以下の合計桁数を定義します。スケールは数値データ型に対してのみ定義されます。
秒精度: 日時フィールドの小数部の桁数を表します。0から9までの数値を入力できます。秒精度はTIMESTAMP
、TIMESTAMP WITH TIME ZONE
およびTIMESTAMP WITH LOCAL TIME ZONE
データ型に対してのみ使用されます。
記述子: 記述子のタイプを選択します。オプションは「簡単な説明」、「詳細な説明」、「開始日」、「終了日」、「期間」および「前回の期間」です。
「レベル」タブでは、時間ディメンションのレベルを定義します。「レベル」セクションで名前と説明(オプション)を入力してレベルを追加作成できます。「レベル」タブの内容の詳細は、「レベル属性ページ」を参照してください。
「階層」タブを使用して、時間ディメンションに階層を追加作成します。時間ディメンションの定義を変更した場合、それを移入するマップに変更内容を反映させる必要があります。「マップ作成」をクリックして、時間ディメンションを移入するマップを再作成します。会計時間ディメンションの場合は、「会計の設定」をクリックして会計の設定を変更できます。「会計情報設定」ダイアログ・ボックスが表示されます。このダイアログ・ボックスを使用して、会計規則、会計年度の開始および会計週の開始を変更します。
「階層」タブには、「階層」および「レベル」という2つのセクションがあります。
時間ディメンション・エディタを使用して、時間ディメンションの実装を変更します。実装詳細では、スター・スキーマまたはスノーフレーク・スキーマを使用して時間ディメンションが実装されるかどうかを決定します。
各時間ディメンションに、その時間ディメンションをロードするマッピングが自動的に作成されます。そのため時間ディメンションを修正する場合は、時間ディメンションをロードするマッピングも修正する必要があります。
注意: アンバインド・オプションを使用して、時間ディメンションを実装オブジェクトからアンバインドすることはできません。 |
時間ディメンションの実装を変更するには、次の手順を実行してください。
プロジェクト・ナビゲータで、実装を変更する時間ディメンションをダブルクリックします。
時間ディメンションのエディタが開きます。
「ROLAP: リレーショナル記憶域」オプションの「記憶域」タブで、時間ディメンションの新規実装を選択します。
スター・スキーマ実装を変更するには、「スター」を選択します。
スノーフレーク・スキーマ実装を変更するには、「スノーフレーク」を選択します。
「階層」タブで、「マップ作成」をクリックします。
変更された実装に基づいて時間ディメンションをロードするマッピングが再定義されます。
「物理的バインド」タブに、時間ディメンションに対して変更されたバインドが表示されます。
時間ディメンションは、データを時間ディメンションにロードするマッピングを作成することで移入します。時間ディメンションの作成ウィザードを使用して時間ディメンションを作成すると、次のパラメータの値に基づいて時間ディメンションにデータを移入するマッピングが作成されます。
データの開始年
データの年数
会計年度の開始日と開始月(会計時間ディメンションのみ)
会計年度週の開始日(会計時間ディメンションのみ)
会計タイプ(会計時間ディメンションのみ)
これらの属性の値は、時間ディメンションの作成ウィザードを使用して時間ディメンションを作成する時点で初期化されます。
表3-1では、カレンダ時間ディメンションをロードするマッピングを示しています。マッピング入力演算子DATE_INPUTS
は、時間ディメンションを移入するために必要な属性を表します。この演算子の属性値は、時間ディメンションを作成したときに設定した値に基づいて設定されます。これらの値は、DATE_INPUTS演算子をダブルクリックして、Output Attributesリンクをクリックし、入力パラメータの値を変更すると変更できます。ただし、パラメータ値を変更する場合、時間ディメンションをロードするマッピングの再配布を再生成する必要があります。
一部のウェアハウス環境では、現在の要件に基づいて時間ディメンションにデータを動的に移入する必要があります。時間ディメンションへの移入に使用される値は、時間ディメンションの作成時に設定されていますが、Oracle Warehouse Builderではこれらの値を変更して、必要なときに時間ディメンションにデータを動的に移入できます。
配布プリファレンスには、「実行パラメータを要求」というプリファレンスが含まれます。このパラメータをTrueに設定すると、実行時に入力パラメータの値を指定できます。
時間ディメンションを動的に移入するには、次の手順を実行してください。
「実行パラメータを要求」プリファレンスをTrueに設定するようにします。
「ツール」メニューで「プリファレンス」を選択して「プリファレンス」ダイアログ・ボックスを表示します。左側のパネルで「Oracle Warehouse Builder」ノードを展開し、左側のパネルの「配布」をクリックして、「実行パラメータを要求」を選択します。
マッピングを右クリックして「開始」を選択し、時間ディメンションをロードするマッピングを実行します。
開始年、年数などの時間ディメンションをロードするために使用される入力パラメータを含む「入力パラメータ」ダイアログ・ボックスが表示されます。
YEAR_START_DATEおよびNUMBER_YEARSのパラメータに値を設定して、「OK」をクリックします。会計時間ディメンションについては、FISCAL_TYPE、DAYS_OF_FISCAL_WEEK、およびFISCALYEAR_START_DATEの値も設定します。
ユーザーは、時間ディメンションを複数回移入するマップを実行できます。各実行時に、時間ディメンションの移入に必要な属性を指定します。その際、マッピングの実行が以前の実行とオーバーラップする可能性があります。これは、時間ディメンションに存在するデータをロードしようとしたことを意味します。このような場合、レコードが以前の実行ですでに移入されているときは、データは再度移入されません。
たとえば、最初の実行で、2000年から5年間のデータを使用して時間ディメンションを移入したとします。2回目の実行で、2003年から3年間のデータを使用して時間ディメンションを移入しました。2003年の始めから2004年の終わりまでのレコードは時間ディメンションに存在しているため、これらは再作成されません。