ターゲット・スキーマには、表、ビュー、ディメンションおよびキューブなどの必要なデータ・オブジェクトがすべて含まれます。従来のデータ・ウェアハウスの実装には、通常、ターゲット・スキーマは1つのみで、データ・ウェアハウス・ターゲットです。Warehouse Builderでは、データ・オブジェクト・エディタを使用してターゲット・スキーマを設計します。
この章の内容は次のとおりです。
前の手順で、既存のターゲット・オブジェクトはすでにインポートしています。新規のターゲット・オブジェクトについては、表4-1にリストされているディメンション・オブジェクトまたはリレーショナル・オブジェクトを設計します。
データ・オブジェクトを作成するには、適切なウィザードを起動するか、またはデータ・オブジェクト・エディタを使用できます。ウィザードを使用するには、目的のオブジェクトのノードを右クリックし、「新規」を選択します。ウィザードを使用した後、そのオブジェクトはエディタで変更できます。その場合は、該当するオブジェクトを右クリックし、「エディタを開く」を選択します。
Oracle Databaseモジュールには、Warehouse Builderで定義できるデータ・オブジェクトの各タイプのノードが含まれています。図4-1に示すように、「Oracle」ノードの下にあるプロジェクト・エクスプローラでモジュール・ノードを展開し、サポートされているデータ・オブジェクトをすべて表示します。
Warehouse Builderでは、リレーショナル・データ・オブジェクトとディメンション・データ・オブジェクトがサポートされています。リレーショナル・オブジェクトは、リレーショナル・データベースと同様に、表および表から導出されたオブジェクトを使用して、すべてのデータを格納およびリンクします。ユーザーが定義するリレーショナル・オブジェクトは、データベース内の物理的なコンテナであり、データの格納に使用されます。ウェアハウスを作成した後の問合せは、このリレーショナル・オブジェクトから実行します。リレーショナル・オブジェクトには、表、ビュー、マテリアライズド・ビューおよび順序などがあります。この章では、各種のリレーショナル・オブジェクトに関する特定の情報を提供し、各オブジェクト・タイプがWarehouse Builderでどのように使用されるかを示します。
ディメンション・オブジェクトには、データを識別し、分類するための追加のメタデータが含まれています。ディメンション・オブジェクトを定義するときは、より構造化された形式でデータを格納できるように、論理的な関係を記述します。ディメンション・オブジェクトには、ディメンションおよびキューブがあります。この章では、各種のディメンション・オブジェクトに関する特定の情報を提供し、各オブジェクト・タイプがWarehouse Builderでどのように使用されるかを示します。
Warehouse Builderでは、リレーショナル・オブジェクトとディメンション・オブジェクトの他に、インテリジェンス・オブジェクトもサポートされています。インテリジェンス・オブジェクトは、Oracleモジュールの一部ではありません。エクスプローラでは「ビジネス・インテリジェンス」ノードの下に表示されます。インテリジェンス・オブジェクトを使用すると、ビジネス・ビューおよびレポート構造の定義を格納できます。これらの定義は、Oracle DiscovererやBI Beansなどの分析ツールに配布でき、ウェアハウスに対して非定型の問合せを実行できます。インテリジェンス・オブジェクトの詳細は、第15章「ビジネス・インテリジェンス・オブジェクトの定義」を参照してください。
表4-1に、Warehouse Builderで使用できるデータ・オブジェクトのタイプを説明します。
表4-1 Warehouse Builderのデータ・オブジェクト
データ・オブジェクト | タイプ | 説明 |
---|---|---|
表 |
リレーショナル |
リレーショナル・データベース管理システムの記憶域の基本単位です。表を作成した後は、その表に有効なデータ行を挿入できます。その後、表の情報の問合せ、削除または更新を実行できます。定義済のビジネス・ルールを表のデータで順守するために、表に対して整合性制約を定義できます。 詳細は、「表の使用」を参照してください。 |
外部表 |
リレーショナル |
外部表は、非リレーショナルなフラット・ファイルのデータを、リレーショナル形式で表示する表です。外部表は、フラット・ファイル演算子やSQL*Loaderのかわりに使用します。 詳細は、「外部表の使用」を参照してください。 |
ビュー |
リレーショナル |
ビューは、1つ以上の表のデータをカスタマイズして表示したものです。ビューには、データが実際に格納されているわけではありません。データはビューの基となる表から導出されます。制約はいくつかありますが、表と同様に、ビューに対しても、問合せ、更新、挿入および削除を実行できます。ビューに対して実行した操作はすべて、ビューの実表に影響を与えます。データの表示を簡潔にしたり、データへのアクセスを制限するには、ビューを使用します。 詳細は、「ビューの使用」を参照してください。 |
マテリアライズド・ビュー |
リレーショナル |
マテリアライズド・ビューは事前に計算された表で、ファクト表、および場合によってはディメンション表から集計または結合されたデータで構成されます。サマリー表または集計表とも呼ばれます。問合せのパフォーマンスを改善するには、マテリアライズド・ビューを使用します。 詳細は、「マテリアライズド・ビューの使用」を参照してください。 |
順序 |
リレーショナル |
順序は、一意の数字のリストを生成するデータベース・オブジェクトです。順序を使用すると、一意のサロゲート・キー値を生成できます。 詳細は、「順序の使用」を参照してください。 |
ディメンション |
ディメンショナル |
データ・セットのメンバーの指定に使用される特性を表す一般的な用語です。販売向けのデータ・ウェアハウスにおけるこれら最も一般的な3つのディメンションは、時間、地理および製品です。ほとんどのディメンションには階層があります。 詳細は、「ディメンションの概要」を参照してください。 |
キューブ |
ディメンショナル |
キューブには、メジャーおよび、1つ以上のディメンション表へのリンクが格納されます。これらはファクトとも呼ばれます。 詳細は、「キューブの概要」を参照してください。 |
アドバンスト・キュー |
リレーショナル |
アドバンスト・キューによって、アプリケーションの統合に必要なメッセージ管理および通信が可能になります。 現在は、Warehouse Builderを使用してアドバンスト・キューを作成することはできません。.mdlファイルにエクスポートされたアドバンスト・キューを以前のバージョンのWarehouse Builderを使用してインポートすることのみ可能です。 |
キュー表 |
リレーショナル |
キュー表は、キューを格納する表です。各キュー表には、データ型がオブジェクト・タイプまたはRAWであるペイロードが含まれます。 Warehouse Builderを使用してキュー表を作成することはできません。キュー表は、アドバンスト・キュー・ペイロードの一部としてインポートされます。 |
オブジェクト・タイプ |
リレーショナル |
オブジェクト・タイプは、1つ以上のユーザー定義型またはスカラー型から構成されます。 詳細は、「オブジェクト・タイプについて」を参照してください。 |
可変長配列 |
リレーショナル |
可変長配列は、順序付けられた要素の集合です。 詳細は、「可変長配列について」を参照してください。 |
ネストした表 |
リレーショナル |
ネストした表は、可変長配列データ型の機能を補完します。ネストした表では、1つの行に、1つのオブジェクト内の関連するデータについて複数のミニ行を指定できます。 詳細は、「ネストした表について」を参照してください。 |
データ・オブジェクトのネーミング規則は、「プリファレンス」ダイアログのネーミング・プリファレンス・セクションでWarehouse Builder用に設定するネーミング・モードに応じて異なります。Warehouse Builderでは、リポジトリに格納されているオブジェクトごとにビジネス名と物理名が保持されます。オブジェクトのビジネス名は詳細な論理名であり、物理名はWarehouse Builderでコード生成時に使用される名前です。ネーミング・モードの指定方法の詳細は、「ネーミング・プリファレンス」を参照してください。
データ・オブジェクトの名前を指定または変更するときは、次のネーミング規則を使用してください。
データ・オブジェクトのネーミング
物理ネーミング・モードでは、名前は1文字から30文字までの英数字で、空白は使用できません。オブジェクト名として予約語を使用しないでください。
ビジネス・ネーミング・モードでは、200文字までに制限されています。名前はオブジェクトを所有するオブジェクト・カテゴリ全体で一意である必要があります。たとえば、すべての表がモジュールに属しているため、表名は表が属しているモジュール全体で一意である必要があります。同様に、モジュール名はモジュールが属しているプロジェクト全体で一意である必要があります。
データ・オブジェクトの記述
必要に応じてデータ・オブジェクトの説明を編集します。説明には2文字から2,000文字の英数字を使用でき、空白を含めることができます。データ・オブジェクトの説明を指定するかどうかはオプションです。
表4-2に、列の作成および編集に使用できるデータ型を示します。
表4-2 データ型
データ型 | 説明 |
---|---|
倍精度IEEE 754形式の単精度浮動小数点数を格納します。主に科学分野の高速計算に使用されます。この型のリテラルは |
|
単精度IEEE 754形式の単精度浮動小数点数を格納します。主に科学分野の高速計算に使用されます。この型のリテラルは |
|
ラージ・バイナリ・オブジェクトをデータベースの表内または表外に格納します。すべてのBLOB変数には、ラージ・バイナリ・オブジェクトを指し示すロケータが含まれます。BLOBの最大サイズは4GBです。 |
|
固定長の文字データを最大4000文字まで格納します。内部のデータ表現は、データベースのキャラクタ・セットによって異なります。サイズはバイト数または文字数で指定できます。各文字には、キャラクタ・セットのエンコードに応じて、1バイトまたは複数バイトが含まれます。 |
|
文字データの大規模なブロックをデータベースの表内または表外に格納します。固定幅と可変幅の両方のキャラクタ・セットがサポートされます。すべてのCLOB変数には、文字データの大規模なブロックを指し示すロケータが含まれます。CLOBの最大サイズは4GBです。 |
|
固定長の日時を格納します。この日時には、午前0時から現在時刻までの経過秒数が含まれています。日付は現行月の最初の日、時刻は午前0時にデフォルト設定されます。日付関数SYSDATEは、現在の日時を戻します。 |
|
単精度浮動小数点数を格納します。FLOATが正しい結果でロードされるのは、FLOATの表現に互換性があり、長さが同じであるシステム間の場合のみです。 |
|
NUMBERのサブ型であり、最大精度38桁で整数値を格納します。 |
|
日、時間、分および秒の間隔を格納します。 |
|
年および月の間隔を格納します。 |
|
固定長の文字列を格納します。LONGデータ型はVARCHAR2データ型に類似していますが、LONG値の最大長が2147483647バイト(2GB)である点が異なります。 |
|
空間オブジェクトのジオメトリの記述および許容差です。許容差は、2つの点が同じ点であるとみなすのに十分近いと判断するために使用されます。 |
|
MDSYS.SDO_DIM_ELEMENT型の配列を格納します。 |
|
ディメンション名、下限、上限および許容差を格納します。 |
|
MDSYS.SDO_ORDINATE_ARRAY型の配列を格納します。 |
|
地理情報システム(GIS)データまたは空間データをデータベースに格納します。詳細は、Oracle Spatialユーザーズ・ガイドおよびリファレンスを参照してください。 |
|
ジオメトリを定義するすべての頂点のリストを格納します。 |
|
2次元および3次元の点を格納します。 |
|
固定長(必要に応じて空白が埋め込まれます)の各国語キャラクタ・データを格納します。この型は常にマルチバイト文字に対応可能であるため、この型を使用してUnicode文字データを格納できます。内部のデータ表現は、データベースの作成時に指定された各国語キャラクタ・セットによって異なります。これには、可変幅のエンコーディング(UTF8)または固定幅のエンコーディング(AL16UTF16)が使用される場合があります。 |
|
NCHARデータの大規模なブロックをデータベースの表内または表外に格納します。 |
|
固定小数点または浮動小数点の形式で実数を格納します。このデータ型を使用する数値は、異なるOracleプラットフォーム間で移植可能であることが保証され、最大38桁の精度で表されます。NUMBER列には、正数と負数の他に、0(ゼロ)も格納できます。 |
|
可変長のUnicode文字データを格納します。この型は常にマルチバイト文字に対応可能であるため、この型を使用してUnicode文字データを格納できます。内部のデータ表現は、データベースの作成時に指定された各国語キャラクタ・セットによって異なります。これには、可変幅のエンコーディング(UTF8)または固定幅のエンコーディング(AL16UTF16)が使用される場合があります。 |
|
バイナリ・データまたはバイト文字列を格納します。たとえば、RAW変数には、一連の図形文字またはデジタル化された写真などが格納される場合があります。RAWデータはVARCHAR2データに類似していますが、RAWデータはPL/SQLで解析できない点が異なります。 |
|
特定の型のインスタンスを、データとともに、型の説明も付加して格納できるOracle提供の型です。ANYDATAは表の列データ型として使用でき、単一の列に異なる型の値を格納できます。値には、SQL組込み型またはユーザー定義型を使用できます。 |
|
データ操作言語(DML)による表内の行への変更を表します。この型は、LCR$_ROW_LIST型を使用します。 |
|
DATEデータ型を拡張し、年、月、日、時間、分および秒を格納します。デフォルトのタイムスタンプ書式は、Oracle初期化パラメータNLS_TIMESTAMP_FORMATによって設定されます。 |
|
TIMESTAMPデータ型を拡張し、タイムゾーンによる時差を組み込みます。タイムゾーンによる時差は、ローカル時間と協定世界時(UTC)(元標準グリニッジ時)との差違です。TIMESTAMP WITH TIME ZONEと同様に、名前付きのタイムゾーンを使用することもできます。 |
|
TIMESTAMPデータ型を拡張し、タイムゾーンによる時差を組み込みます。タイムゾーンによる時差は、ローカル時間と協定世界時(UTC)(元標準グリニッジ時)との差違です。 |
|
長さと値のペアのデータ型を格納します。このデータ型は、バイナリ長のサブフィールドと、それに続く指定した長さの文字列で構成されます。長さはバイトで表現されますが、データ・ファイルに文字と長さのセマンティクスが使用されている場合には、文字数で表現されます。 |
|
可変長の文字データを格納します。内部のデータ表現は、データベースのキャラクタ・セットによって異なります。VARCHAR2データ型は、最大4000文字まで指定する必須パラメータを使用します。 |
|
SYS_XMLGEN()およびSYS_XMLAGG()関数の書式設定引数の指定に使用されるオブジェクト型です。 |
|
データベース内のXMLデータの格納および問合せに使用できるOracle提供の型です。XPath式を使用したXMLデータに対するアクセス、抽出および問合せに使用できるメンバー関数が含まれます。XPathは、XML文書の参照用にW3C委員会によって開発された別の標準です。 |
データ・オブジェクト・エディタは、Oracleデータ・オブジェクトの作成、編集、構成、検証および配布に使用する中央インタフェースを提供します。データ・オブジェクト・エディタはリレーショナル、ディメンションおよびビジネス・インテリジェンスの各オブジェクトで使用できます。これらのオブジェクトに格納されているデータを表示することもできます。
データ・オブジェクト・エディタを使用すると、ウェアハウス・スキーマ設計を作成できます。また、設計詳細を短時間で入力できるように直感的なユーザー・インタフェースも用意されています。
データ・オブジェクト・エディタを使用して次の操作を実行できます。
リレーショナル・オブジェクトとディメンション・オブジェクトの作成、編集および削除
ビジネス・インテリジェンス・オブジェクト(ビジネスエリアおよびアイテム・フォルダ)の作成、編集および削除
Oracleデータ・オブジェクト間の関係の定義
Oracleデータ・オブジェクトの検証、生成および配布
データ・オブジェクトのすべての側面(列、制約、索引、パーティション、データ・ルールおよび属性セットなど)の定義と編集
データ・オブジェクトの影響分析および系統情報の表示
リレーショナル実装を使用したディメンション・オブジェクトの実装詳細の定義
データ・オブジェクトに格納されているデータの表示
データ・オブジェクト・エディタの起動
データ・オブジェクト・エディタを起動するには、次のいずれかの方法が使用できます。
プロジェクト・エクスプローラでデータ・オブジェクトを選択し、「デザイン・センター」メニューから「編集」、「エディタを開く」の順に選択します。
プロジェクト・エクスプローラでデータ・オブジェクトを右クリックし、「エディタを開く」を選択します。
プロジェクト・エクスプローラでデータ・オブジェクトをダブルクリックします。
図4-2に、データ・オブジェクト・エディタを示します。
データ・オブジェクト・エディタには、メニュー・バー、複数のツールバーおよび複数のパネルがあります。パネルはすべてドッキング可能です。パネルはサイズ変更でき、エディタ・ウィンドウのどの場所にでも再配置できます。また、各パネルを表示するか非表示にするかを選択できます。
パネルを再配置するには、パネルのタイトル上でマウスのボタンを押し、そのまま新しい場所までドラッグしてマウスのボタンを放します。パネルのサイズを変更するには、パネルの境界上にマウスを置き、双方向矢印が表示された時点でマウスのボタンを押して、適切なサイズになるようにマウスをドラッグします。
データ・オブジェクト・エディタには、次のコンポーネントがあります。
タイトル・バーは、エディタ・ウィンドウの上部に配置されています。タイトル「データ・オブジェクト・エディタ」が表示されます。
メニュー・バーは、タイトル・バーの下に配置され、ここから各エディタ・コマンドにアクセスできます。エディタ・コマンドにアクセスするには、メニュー・バーのオプションをクリックするか、ホット・キーを使用します。たとえば、「ダイアグラム」メニューにアクセスするには、「ダイアグラム」をクリックするか、[Alt]+[D]を押します。
メニュー・バーのオプションを使用すると、データ・オブジェクトを作成、編集、検証および配布できます。メニュー・バーには、次のメニュー項目があります。
「ダイアグラム」メニューには、リレーショナル・オブジェクト、ディメンション・オブジェクトおよびインテリジェンス・オブジェクトを作成、検証、生成および配布するためのオプションがあります。また、ディメンション・オブジェクトのバインドまたはアンバインドも実行できます。「ダイアグラム」メニューのメニュー項目は、キャンバスで現在選択されているタブに適用されます。
「ダイアグラム」には、次のメニュー・オプションがあります。
ウィンドウを閉じる: データ・オブジェクト・エディタを閉じます。
ダイアグラムのエクスポート: キャンバスに表示されている現在のダイアグラムをマシンにファイルとして保存します。SVGファイルまたはJPEGファイルとして保存できます。
すべて保存: リポジトリに対する変更を保存します。
追加: データ・オブジェクトをエディタのキャンバスに追加できます。追加するオブジェクトのタイプを選択するには、「追加」メニュー項目のオプションを使用します。「追加」メニュー項目のオプションは、「表」、「ビュー」、「マテリアライズド・ビュー」、「オブジェクト・タイプ」、「VARRAY」、「ネストした表」、「ディメンション」、「キューブ」、「アイテム・フォルダ」および「ビジネスエリア」です。
「追加」メニュー項目で有効なオプションは一部のみであることに注意してください。有効な「追加」メニュー・オプションは、現在選択されているキャンバス・タブに応じて異なります。たとえば、キャンバスで「ディメンショナル」タブが選択されている場合は、「追加」メニューの「ディメンション」オプションと「キューブ」オプションが有効です。データ・オブジェクト・エディタのキャンバスの詳細は、「キャンバス」を参照してください。
すべてバインド: キャンバス上のすべてのディメンション・オブジェクトに対してバインドを実行します。このオプションは、「ディメンショナル」タブが選択されている場合のみ有効です。
バインドは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみ適用できます。バインドの詳細は、「バインド」を参照してください。
すべてアンバインド: キャンバス上のすべてのディメンション・オブジェクトをアンバインドします。アンバインドすると、ディメンション・オブジェクトと、そのデータが格納されているデータベース・オブジェクトの間のマッピングが削除されます。このオプションは、キャンバスの「ディメンショナル」タブが選択されている場合のみ有効です。
アンバインドは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみ適用できます。
すべて検証: キャンバス上のすべてのデータ・オブジェクトを検証します。検証結果は「生成」パネルに表示されます。
すべて生成: キャンバス上のすべてのデータ・オブジェクトを生成します。生成結果は「生成」パネルに表示されます。
すべて導出: キャンバス上のすべてのリレーショナル・オブジェクトまたはディメンション・オブジェクトに対するビジネス・インテリジェンス・オブジェクトを導出します。
すべて配布: キャンバス上のすべてのデータ・オブジェクトを配布します。
印刷プレビュー: 印刷前に、キャンバスの内容のプレビューを表示します。
印刷: キャンバスの内容を印刷します。
「オブジェクト」メニューには、現在選択されているデータ・オブジェクトを検証、生成および配布するためのオプションがあります。また、ディメンション・オブジェクトのバインドおよびアンバインドも実行できます。複数のデータ・オブジェクトを選択するには、[Shift]キーを押しながらデータ・オブジェクトを選択します。
「オブジェクト」メニューには、次のオプションがあります。
バインド: キャンバスで選択されているディメンション・オブジェクトを、そのデータが格納されるデータベース表にバインドします。Warehouse Builderによって、ディメンション・オブジェクト・データを格納するデータベース表が作成されます。
バインドは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみ実行できます。
アンバインド: 選択されているディメンション・オブジェクトと、そのデータが格納されているデータベース表の間のバインドを削除します。アンバインドされた表は削除されません。表は明示的に削除する必要があります。
アンバインドは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみ実行できます。
検証: キャンバスで選択されているデータ・オブジェクトを検証します。検証結果は「生成」ウィンドウに表示されます。
生成: キャンバスで選択されているデータ・オブジェクトを生成します。生成結果は「生成」ウィンドウに表示されます。
導出: 選択されているデータ・オブジェクトからビジネス・インテリジェンス・オブジェクトを導出します。
配布: キャンバスで選択されているデータ・オブジェクトを配布します。
関連の表示: キャンバス上で選択されているデータ・オブジェクトが関連付けられているデータ・オブジェクトを表示します。たとえば、キューブの場合は、このオプションを選択すると、キャンバス上のキューブが参照しているディメンションが表示されます。
「編集」メニューを使用すると、キャンバス上のデータ・オブジェクトの削除、非表示、コピーおよび貼付けを実行できます。「編集」メニューには、次のオプションがあります。
コピー: 選択されているオブジェクトをコピーします。
貼付け: データ・オブジェクトをクリップボードからキャンバスに貼り付けます。
削除: データ・オブジェクトをリポジトリから削除します。
非表示: データ・オブジェクトをリポジトリからは削除せずに、キャンバスから削除します。
すべて選択: エディタ・キャンバス上のすべてのデータ・オブジェクトを選択します。
リフレッシュ: エディタ・パネルに表示されているデータをリフレッシュします。たとえば、表EMPLに対してデータ・オブジェクト・エディタを開いているとします。デザイン・センターで、ビューEMP_VIEWの名前をEMPL_VIEWに変更します。エディタをリフレッシュすると、ビューの新しい名前がデータ・オブジェクト・エディタの「エクスプローラ」パネルに表示されます。
「表示」オプションを使用すると、エディタの表示に関するプリファレンスを変更できます。プリファレンスには、ズームの設定、ツールバーの表示/非表示、エディタのオブジェクトのレイアウト(中央、ウィンドウに適合、自動レイアウト)などがあります。キャンバス上のデータ・オブジェクトを最大化または最小化することもできます。
ツールバー: エディタに表示するツールバーの種類を選択できます。選択可能なオプションは、「汎用」と「グラフィック」です。ツールバーの詳細は、「ツールバー」を参照してください。
ズーム: キャンバスに表示されるオブジェクトのサイズを拡大または縮小します。キャンバスのズームに選択可能なオプションは、「400%」、「200%」、「100%」、「75%」、「50%」および「25%」です。
ウィンドウに適合: キャンバス上のオブジェクトを、エディタのキャンバスのサイズにあうように調整します。オブジェクトのサイズは、キャンバス上のオブジェクトの数に応じて拡大または縮小します。
自動レイアウト: キャンバス上のデータ・オブジェクトを、そのデフォルト・サイズとレイアウトで表示します。
中央: キャンバス上のデータ・オブジェクトを中央に配置します。
最小化: キャンバス上の選択されているデータ・オブジェクトを最小化します。
元のサイズに戻す: 最小化されたデータ・オブジェクトのサイズを元に戻してキャンバスに表示します。
最大化: キャンバス上の選択されているデータ・オブジェクトを最大化します。
デフォルトにサイズを設定: 選択されているデータ・オブジェクトをそのデフォルト・サイズで表示します。たとえば、データ・オブジェクトのサイズは、データ・オブジェクトの端にカーソルをあわせたときに表示される双方向矢印を使用して変更している場合があります。このオプションを使用すると、データ・オブジェクトがそのデフォルト・サイズで表示されます。
クリップボードの内容: クリップボードの内容の詳細を表示する「クリップボードの内容」ダイアログを表示します。
水平スクロールを有効化: キャンバス上に表示されているすべてのデータ・オブジェクトに対して、水平スクロールを有効化または無効化します。
「ウィンドウ」メニューを使用して、データ・オブジェクト・エディタのパネルの表示/非表示を切り替えます。「ウィンドウ」メニューには、次のオプションがあります。
エクスプローラ: データ・オブジェクト・エディタの「エクスプローラ」パネルの表示/非表示を切り替えます。
パレット: 「データ・オブジェクトのエディタ・パレット」の表示/非表示を切り替えます。
鳥瞰図: データ・オブジェクト・エディタの「鳥瞰図」パネルの表示/非表示を切り替えます。
生成結果: データ・オブジェクト・エディタの「生成結果」パネルの表示/非表示を切り替えます。
オブジェクトの詳細: データ・オブジェクト・エディタの「オブジェクトの詳細」パネルの表示/非表示を切り替えます。
構成パネル(@P): データ・オブジェクト・エディタの「構成」パネルの表示/非表示を切り替えます。
すべて配置: エディタ・ウィンドウにすべてのパネルを配置します。
すべてのオプションが切替えオプションです。たとえば、「ウィンドウ」、「オブジェクトの詳細」の順に選択すると、オブジェクトの詳細パネルの表示/非表示が切り替わります。
「ヘルプ」メニューのオプションを使用すると、オンライン・ヘルプ、Oracle Technology Network、およびWarehouse Builderのバージョンに関する情報にアクセスできます。Warehouse Builderクライアントのバージョンおよびリポジトリのバージョンを表示するには、「Warehouse Builderバージョン情報」オプションを使用します。
「セッション・プロパティ」オプションを使用すると、「セッション・プロパティ」ダイアログが表示されます。このダイアログには、ユーザー詳細、Oracleデータベースのバージョン、および現在ログインしているユーザーに付与されているロールなど、現在のWarehouse Builderセッションに関する情報が表示されます。
メニュー・バーの下に配置されているツールバーには、よく使用されるコマンドのアイコンがあります。このアイコンは、エディタのメニュー項目にアクセスするためのショートカットです。たとえば、このツールバーには、データ・オブジェクトを配布するためのアイコンがあります。
データ・オブジェクト・エディタには、「汎用」と「グラフィック」の2つのツールバーがあります。汎用ツールバーでは、データ・オブジェクトの検証、生成、配布および同期化などの一般的な操作を起動できます。グラフィック・ツールバーでは、キャンバスをナビゲートして、キャンバス上のオブジェクトの倍率を変更できます。
ツールバーは、エディタの「表示」オプションを使用して非表示にできます。また、ツールバーの左側にあるドラッグ・ハンドルをクリックして新しい位置までドラッグし、ツールバーをエディタ・ウィンドウの任意の場所に移動することもできます。
データ・オブジェクト・エディタを初めて開くと、左上隅に「エクスプローラ」が表示されます。「エクスプローラ」は、データ・オブジェクト・エディタのどこにでも再配置できます。
「エクスプローラ」には、キャンバスで表示または編集可能なデータ・オブジェクトを示すフォルダ構造に似たビューが表示されます。「エクスプローラ」は、データ・オブジェクト・エディタのキャンバスで現在アクティブになっているタブと同期化されます。そのため、「エクスプローラ」に表示されるオブジェクトは、キャンバスで選択しているタブに応じて異なります。キャンバスの各タブの詳細は、「キャンバス」を参照してください。
「エクスプローラ」では、キャンバスに現在表示されているデータ・オブジェクトとその定義の詳細も表示できます。たとえば、表ノードを展開して、制約や索引などの詳細を表示できます。
「エクスプローラ」には、「使用可能なオブジェクト」および「選択したオブジェクト」という2つのタブがあります。「選択したオブジェクト」ツリーで選択されているデータ・オブジェクトは、キャンバスでも選択されます。
使用可能なオブジェクト: このタブには、キャンバスで表示または編集できるデータ・オブジェクトが表示されます。データ・オブジェクトを表示または編集するには、このタブからオブジェクトをドラッグしてキャンバスにドロップします。Warehouse Builderにより、モジュールごとにノードが表示されます。モジュール・ノードを開いて、そのモジュールのデータ・オブジェクトを表示します。
図4-3に、「エクスプローラ」パネルの「使用可能なオブジェクト」タブを示します。
このタブに表示されるデータ・オブジェクトは、キャンバスで現在選択しているタブに応じて異なります。たとえば、モジュールMOD1に表が3つ、ディメンションが4つ、キューブが1つ含まれているとします。キャンバスで「リレーショナル」タブが選択されている場合、「使用可能なオブジェクト」タブにはMOD1ノードの下にある3つの表が表示されます。キャンバスで「ディメンショナル」タブが選択されている場合、「使用可能なオブジェクト」タブには「エクスプローラ」のMOD1ノードの下にある4つのディメンションと1つのキューブが表示されます。
選択したオブジェクト: このタブには、キャンバスに表示される各データ・オブジェクトのノードが表示されます。ノードを開いてオブジェクト定義の詳細を表示します。たとえば、データベース表のノードを開くと、その表に定義されている列、キー、パーティションおよび索引が表示されます。
データ・オブジェクト・エディタを開くと、エディタ・ウィンドウの左側にパレットが表示されます。パレットは、エディタ・ウィンドウのどこにでも再配置できます。
データ・オブジェクト・エディタのパレットには、キャンバスにドラッグ・アンド・ドロップできるデータ・オブジェクトのタイプに対応するアイコンが表示されます。パレットの一部のアイコンは無効になっている場合があります。エクスプローラと同様に、パレットもキャンバスと同期化されます。パレットで有効なデータ・オブジェクトは、キャンバスで現在アクティブになっているタブに応じて異なります。たとえば、キャンバスで現在は「リレーショナル」タブがアクティブであれば、パレットではすべてのリレーショナル・データ・オブジェクトが有効です。
パレットの上部にあるドロップダウン・リストを使用すると、パレットに特定タイプのデータ・オブジェクトのみを表示できます。このドロップダウン・リストのオプションは「すべて」、「リレーショナル」、「ディメンショナル」および「ビジネス定義」です。このドロップダウン・リストからタイプを選択すると、そのタイプに属しているオブジェクトのアイコンのみが表示されます。
たとえば、このドロップダウン・リストから「ディメンショナル」を選択すると、ディメンション・オブジェクトのアイコンのみがパレットに表示されます。
「構成」パネルには、キャンバスまたは「エクスプローラ」の「選択したオブジェクト」タブで選択したデータ・オブジェクトの構成プロパティが表示されます。このウィンドウを使用して、選択したデータ・オブジェクトの構成プロパティを設定または編集します。「データ・オブジェクト・エディタ」を初めて開くと、左上に「構成」パネルが表示されます。このパネルは、エディタ・ウィンドウのどこにでも再配置できます。
「鳥瞰図」では、1回のマウス・ドラッグ操作でキャンバスのビューを移動できます。つまり、スクロール・バーを使用せずにキャンバスのビューを再配置できます。
「鳥瞰図」には、キャンバス全体のミニチュア版が表示されます。青いボックスがあり、キャンバスで現在フォーカスが置かれている部分が表されます。キャンバス・サイズよりも大きく広がっているマッピングの場合は、青いボックスをクリックしてキャンバス上でフォーカスを置く部分にドラッグできます。
キャンバスとは、リレーショナル・オブジェクト、ディメンション・オブジェクトおよびビジネス・インテリジェンス・オブジェクトが表示される中央のグラフィック領域です。この領域には、データ・オブジェクトとそのアソシエーション(存在する場合)がグラフィック表示されます。また、相互に関係のない2つのオブジェクトをキャンバスに表示することもできます。
特定のオブジェクトのデータ・オブジェクト・エディタを開くと、そのデータ・オブジェクトが他の関連データ・オブジェクトとともにキャンバスに表示され、各オブジェクトと相互関係がグラフィック表示されます。たとえば、キューブのデータ・オブジェクト・エディタを開くと、キューブとキューブが参照するディメンションがキャンバスに表示されます。
キャンバス上の各オブジェクトはノードで表示されます。図4-4に、EMPLOYEES表のキャンバスを示します。この表を表すノードには、「列」および「キー」という2つのグループが含まれています。「列」グループは表の列を表します。列ごとに、列名とデータ型がキャンバスに表示されます。「キー」グループには、表の主キー、外部キーおよび一意キーと、そのキーを構成する列が表示されます。
このキャンバスには、表DEPARTMENTSおよびJOB_HISTORYのノードも含まれています。この2つの表の間の外部キー関係を表示できます。
キャンバスでは、同じタイプのデータ・オブジェクトをグループ化するために、次のタブが使用されます。
リレーショナル
ディメンショナル
ビジネス定義
これらのタブはすべて、エディタを初めて開いたときに表示されます。各タブは、そのタブが表すオブジェクトのタイプに関する情報を表示するために使用されます。たとえば、ディメンションを作成または編集している場合は、該当するディメンションが「ディメンショナル」タブにグラフィック表示されます。「リレーショナル」タブは、表、ビューまたはマテリアライズド・ビューを表示するために使用されます。
これらのタブの他に、キャンバスでは、データ・オブジェクトの詳細表現を表示する追加のタブが使用されます。キャンバスの任意のデータ・オブジェクトに関する詳細表現を表示できます。キャンバスで、データ・オブジェクトを表すノードを右クリックし、「詳細の表示」を選択します。
図4-5に、CHANNELSディメンションの詳細表示を示します。ディメンション・データは、表CHANNELSに格納されています。関係には、ディメンションの属性データが格納されている表の列が示されています。
キャンバスのショートカット・メニューを使用すると、データ・オブジェクトの作成、検証、生成、配布などの操作を実行できます。「メニュー・バー」の項では、同じ操作をメニュー・バーを使用して実行する方法を説明しています。
データ・オブジェクトを表すノードのタイトル・バーを右クリックします。ショートカット・メニューに次のオプションが表示されます。
生成: 選択されているデータ・オブジェクトを生成します。結果は「生成」パネルに表示されます。
検証: 選択されているデータ・オブジェクトを検証します。結果は「生成」パネルに表示されます。
配布: 選択されているデータ・オブジェクトを配布します。
導出: 選択されているデータ・オブジェクトを使用してビジネス・インテリジェンス・オブジェクトを導出します。インテリジェンス・オブジェクトの導出の詳細は、「ビジネス・インテリジェンス・オブジェクトの導出」を参照してください。
コピー: 選択されているデータ・オブジェクトをコピーします。その後、このデータ・オブジェクトは、別のモジュールまたはプロジェクトに貼り付けることができます。さらに、このオブジェクトをキャンバスに貼り付けると、オリジナルと同じスキーマに新規オブジェクトを作成できます。
非表示オブジェクト: キャンバス上のデータ・オブジェクトを非表示にします。データ・オブジェクトは削除されません。
リポジトリから削除: データ・オブジェクトをリポジトリから削除します。
詳細の表示: 選択されているデータ・オブジェクトの詳細表示が含まれる新規タブをキャンバスに作成します。リレーショナル実装を使用しているディメンション・オブジェクトの場合、このタブには実装の詳細が表示されます。ディメンション・オブジェクトの手動バインドを実行するには、このタブを使用します。
関連の表示: キャンバス上で選択されているデータ・オブジェクトに関連付けられているオブジェクトを表示します。
自動バインド: ディメンション・オブジェクトの自動バインドを実行します。このオプションは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみ有効です。自動バインドの詳細は、「バインド」を参照してください。
アンバインド:選択されているディメンション・オブジェクトと、ディメンション・オブジェクトのデータが格納されているデータ・オブジェクトの間のバインドを削除します。自動バインドの詳細は、「バインド」を参照してください。
キャンバスのショートカット・メニューを使用して、データ・オブジェクトをキャンバスに追加することもできます。キャンバス上の何もない領域(空白)を右クリックすると、現在のコンテキストでキャンバスに追加できるオブジェクトのリストが表示されます。項目のリストは、キャンバスで現在選択されているタブに応じて異なります。たとえば、「ディメンショナル」タブで何もない領域を右クリックすると、キューブとディメンションを追加するためのオプションが表示されます。「リレーショナル」タブのショートカット・メニューには、表、ビュー、マテリアライズド・ビュー、オブジェクト・タイプ、可変長配列およびネストした表を追加するためのオプションがあります。
「詳細」パネルには、データ・オブジェクトの定義に使用する一連のタブがあります。「詳細」パネルのタイトルには、データ・オブジェクトのタイプ、モジュール名およびデータ・オブジェクト名が含まれています。これらの詳細の後に、データ・オブジェクトが開かれるモードが付いています。たとえば、HRモジュールに格納されている表DEPTの「データ・オブジェクト・エディタ」を開くと、ウィンドウ名は「表の詳細: HR.DEPT "読取り/書込み"」となります。キャンバスでオブジェクトが選択されていなければ、「詳細」パネルには「詳細: オブジェクトが選択されていません」と表示されます。
「詳細」パネルに表示されるタブは、キャンバスで選択したデータ・オブジェクトのタイプに応じて異なります。たとえば、表に関するタブの数と名前は、ディメンションの場合とは異なります。「詳細」パネルのタブを使用して、データ・オブジェクト定義を定義または編集します。「詳細」パネルで行った変更内容はリポジトリに格納されます。キャンバスと「エクスプローラ」も、変更内容を反映するようにリフレッシュされます。
各データ・オブジェクト用のタブの詳細は、次の項を参照してください。
「生成」パネルには、データ・オブジェクトの生成結果と検証結果が表示されます。最初にエディタ・ウィンドウを開いた時点では、このパネルは非表示になっており、データ・オブジェクトを初めて生成または検証すると表示されます。「生成」パネルの表示と非表示は、エディタ・メニューから「ウィンドウ」→「生成結果」を選択して切り替えることができます。
「生成」ウィンドウには、「スクリプト」および「メッセージ」という2つのタブがあります。「スクリプト」タブには、キャンバスで選択したデータ・オブジェクトを実装するためにWarehouse Builderで生成されたスクリプトが表示されます。「メッセージ」タブには、選択したデータ・オブジェクトに関する検証メッセージが表示されます。メッセージをダブルクリックすると、メッセージ・テキスト全体を表示できます。
図4-6に示すように、エディタの下端にはモード・アイコンとインジケータが表示されます。左隅には、ネーミング・モードおよび改名モードのアイコン・インジケータがあります。マウスをアイコンに合せると、モードの現在の設定が表示されます。右側には、ズーム・インジケータとナビゲーション・モードが表示されます。
「データ・ビューア」を使用して、データ・オブジェクトに格納されているデータを表示できます。たとえば、表の「データ・ビューア」を使用して、表データを表示できます。「データ・ビューア」にアクセスするには、次の方法のいずれかを使用します。
プロジェクト・エクスプローラで、データ・オブジェクトを右クリックして「データ」を選択します。
データ・オブジェクトのデータ・オブジェクト・エディタで、「詳細」パネルの「データ・ビューア」タブにナビゲートします。「問合せの実行」ボタンをクリックします。
図4-7に、COUNTRIES表のデータ・ビューアを示します。
「データ・ビューア」タブには、「問合せの実行」、「詳細を取得」および「WHERE句」の3つのボタンがあります。このタブにナビゲートすると、これらのボタンのみが表示されます。「問合せの実行」ボタンをクリックし、データ・オブジェクトに対する問合せを実行し、そのデータをフェッチします。
「詳細を取得」ボタンを使用して、データ・オブジェクトに関する詳細データをフェッチします。デフォルトでは、「データ・ビューア」には、最初の100行のデータが表示されます。残りのデータを表示するには、「詳細を取得」ボタンを使用します。また、「データ・ビューア」の下部にある「詳細」ボタンを使用しても、同じ処理を実行できます。
「WHERE句」ボタンを使用して、「データ・ビューア」に表示されるデータを制限する条件を指定します。このオプションは、表およびビューに対してのみ適用できます。このボタンをクリックすると、「WHERE句」ダイアログが表示されます。このダイアログを使用して、データをフィルタするための条件を指定します。
リレーショナル、ディメンションおよび特定のビジネス・インテリジェンス・オブジェクトを作成するには、データ・オブジェクト・エディタを使用します。データ・オブジェクト・エディタを使用してデータ・オブジェクトを作成する方法は複数あります。データ・オブジェクト・エディタを開いて次のいずれかの方法を使用する必要があります。
データ・オブジェクトを作成するには、次のいずれかのエディタ・コンポーネントを使用します。
メニュー・バー
「メニュー・バーを使用したデータ・オブジェクトの作成」を参照してください。
キャンバス
「キャンバスを使用したデータ・オブジェクトの作成」を参照してください。
データ・オブジェクトのエディタ・パレット
「データ・オブジェクトのエディタ・パレットを使用したデータ・オブジェクトの作成」を参照してください。
メニュー・バーを使用してデータ・オブジェクトを作成する手順は、次のとおりです。
データ・オブジェクト・エディタを開きます。
「データ・オブジェクト・エディタの起動」で説明しているいずれかの方法を使用します。
作成するデータ・オブジェクトのタイプに対応するタブにナビゲートします。
たとえば、表を作成するには、「リレーショナル」タブを選択します。ビジネス・エリアを作成するには、「ビジネス・インテリジェンス」タブを選択します。
「ダイアグラム」メニューから、「追加」を選択してから、作成するデータ・オブジェクトのタイプを選択します。
Warehouse Builderに、「新規または既存の<オブジェクト>を追加」ダイアログが表示されます。このダイアログの詳細は、「「新規または既存のデータ・オブジェクトを追加」ダイアログ」を参照してください。
「追加」メニューのデータ・オブジェクトのリストに、無効なアイテムがいくつか含まれることに注意してください。現在のエディタ・コンテキストから作成できるデータ・オブジェクトのみが有効となっています。
「新規<オブジェクト>の作成」オプションを選択します。
たとえば、表を追加するには、「新規表の作成」オプションを選択します。
「新規<オブジェクト>名」フィールドを使用してデータ・オブジェクト名を指定します。
「新規<オブジェクト>名」フィールドに、オブジェクトのデフォルト名が表示されます。このデフォルト名を保持するよう選択するか、別名を指定します。
「OK」をクリックします。
Warehouse Builderにより、新規データ・オブジェクトのノードがキャンバスに追加されます。
「詳細」パネルのタブを使用して、データ・オブジェクトを定義します。
キャンバスを使用してデータ・オブジェクトを作成する手順は、次のとおりです。
データ・オブジェクト・エディタを開きます。
「データ・オブジェクト・エディタの起動」で説明しているいずれかの方法を使用します。
作成するデータ・オブジェクトのタイプに対応するタブにナビゲートします。
たとえば、マテリアライズド・ビューを作成するには、「リレーショナル」タブを選択します。ディメンションを作成するには、「ディメンショナル」タブを選択します。
キャンバス上の空白(空白領域)を右クリックします。
Warehouse Builderに、作成できるデータ・オブジェクトのタイプが含まれるショートカット・メニューが表示されます。このダイアログの詳細は、「「新規または既存のデータ・オブジェクトを追加」ダイアログ」を参照してください。
作成するオブジェクトのタイプに対応するオプションを選択します。
たとえば、マテリアライズド・ビューを作成するには、「マイテリアライズド・ビューの追加」オプションを選択します。Warehouse Builderに、「新規または既存の<オブジェクト>を追加」ダイアログが表示されます。
「新規<オブジェクト>の作成」オプションを選択します。
たとえば、キューブを追加するには、「新規キューブの作成」オプションを選択します。
「新規<オブジェクト>名」フィールドを使用してデータ・オブジェクト名を指定します。
「新規<オブジェクト>名」フィールドに、オブジェクトのデフォルト名が表示されます。このデフォルト名を保持するよう選択するか、別名を指定します。
「OK」をクリックします。
Warehouse Builderにより、新規データ・オブジェクトのノードがキャンバスに追加されます。
「詳細」パネルのタブを使用して、データ・オブジェクトを定義します。
パレットを使用してデータ・オブジェクトを作成する手順は、次のとおりです。
データ・オブジェクト・エディタを開きます。
「データ・オブジェクト・エディタの起動」で説明しているいずれかの方法を使用します。
作成するデータ・オブジェクトのタイプに対応するタブにナビゲートします。
たとえば、ビューを作成するには、「リレーショナル」タブを選択します。キューブを作成するには、「ディメンショナル」タブを選択します。
作成するオブジェクトのタイプに対応する演算子をキャンバスにドラッグ・アンド・ドロップします。
たとえば、ビューを作成するには、「パレット」からキャンバスに「ビュー演算子」をドラッグ・アンド・ドロップします。
Warehouse Builderに、作成できるデータ・オブジェクトのタイプが含まれるショートカット・メニューが表示されます。このダイアログの詳細は、「「新規または既存のデータ・オブジェクトを追加」ダイアログ」を参照してください。
「新規<オブジェクト>の作成」オプションを選択します。
たとえば、キューブを追加するには、「新規キューブの作成」オプションを選択します。
「新規<オブジェクト>名」フィールドを使用してデータ・オブジェクト名を指定します。
「新規<オブジェクト>名」フィールドに、オブジェクトのデフォルト名が表示されます。このデフォルト名を保持するよう選択するか、別名を指定します。
「OK」をクリックします。
Warehouse Builderにより、新規データ・オブジェクトのノードがキャンバスに追加されます。
「詳細」パネルのタブを使用して、データ・オブジェクトを定義します。
「新規または既存の<データ・オブジェクト>を追加」ダイアログでは、「データ・オブジェクト・エディタ」のキャンバスに新規または既存のデータ・オブジェクトを追加できます。このダイアログを使用して追加した新規のデータ・オブジェクトは、リポジトリに格納されます。
次のオプションを1つ選択します。
新規<データ・オブジェクト>の作成 このオプションを使用すると、表、ディメンションまたはアイテム・フォルダなど、新規のOracleデータ・オブジェクトを作成できます。「新規<データ・オブジェクト>名」フィールドにデータ・オブジェクトの名前を入力します。Warehouse Builderでは、データ・オブジェクトのデフォルト名として「<データ・オブジェクト・タイプ>_1」が表示されます。このデフォルト名を選択して新規の名前を入力すると名前を変更できます。
「Oracleモジュール」ドロップダウン・リストを使用して、データ・オブジェクトが属するOracleモジュールを選択します。リレーショナル・オブジェクトとディメンション・オブジェクトの場合、Warehouse Builderでは、エディタで現在開いているデータ・オブジェクトの所属モジュールが最初に表示されます。この選択は変更できます。ビジネス・インテリジェンス・オブジェクトの場合は、データ・オブジェクトが属するビジネス定義モジュールが表示されます。
アイテム・フォルダの場合は、さらに「アイテム・フォルダ・タイプ」というドロップダウン・リストが表示されます。このドロップダウン・リストを使用して、単純アイテム・フォルダを作成するか複合アイテム・フォルダを作成するかを指定します。
これらのデータ・オブジェクト詳細を指定した後、「OK」をクリックします。データ・オブジェクトが作成され、このデータ・オブジェクト用のノードがエディタ・キャンバスに追加されます。「詳細」ウィンドウのタブを使用してデータ・オブジェクトを定義します。
既存の<データ・オブジェクト>を選択 このオプションを使用すると、既存のリポジトリ・データ・オブジェクトをエディタ・キャンバスに追加できます。この操作が必要になるのは、データ・オブジェクト間の関係を定義する場合です。たとえば、ディメンション属性を、そのデータを格納するデータベース列に手動でバインドできます。
データ・オブジェクトを名前で検索するには、「検索」フィールドにデータ・オブジェクト名を入力して「実行」をクリックします。また、「検索」フィールドの下に表示される選択ツリーからデータ・オブジェクト名を選択することもできます。
データ・オブジェクトの選択後に「OK」をクリックします。Warehouse Builderにより、このデータ・オブジェクト用のノードがエディタ・キャンバスに追加されます。
構成では、データ・オブジェクトの物理的な特性が定義されます。たとえば、表領域を定義したり、表の構成にパフォーマンス・パラメータを設定できます。
オブジェクトの構成は、配布前であればいつでも変更できます。
同じオブジェクト・セットに対して複数の構成を定義できます。この機能は、テスト環境や本番環境など、複数の環境に配布する場合に便利です。
すべてのオブジェクトには、デフォルトで選択された「配布可能」パラメータが指定されています。オブジェクトの配布を避けるには、このパラメータを消去します。
オブジェクトを構成する手順は、次のとおりです。
プロジェクト・エクスプローラで、該当するオブジェクトを選択して「構成」アイコンをクリックします。
「構成プロパティ」ダイアログ・ボックスが表示されます。
パラメータを選択して、右側のパネルの下部にそのパラメータの説明を表示します。詳細は、「ヘルプ」をクリックしてください。
変更内容を入力して「OK」をクリックします。
属性セットには、選択した列のセットが指定した順に含まれています。属性セットは、マッピングの定義時、またはデータのインポートおよびエクスポート時に役立ちます。Warehouse Builderでは、表、ビューおよびマテリアライズド・ビューの属性セットを定義できます。簡潔に表現するために、以降の各項では、属性セットの定義が可能なすべてのオブジェクトを表という語で表します。
各表に対して、Warehouse Builderでは、その表内のすべての列が含まれる事前定義済の属性セットが生成されます。さらに、定義済の各制約に対しても事前定義済の属性セットが生成されます。事前定義済の属性セットは変更または削除できません。
属性セットの作成および編集の詳細は、次の各項を参照してください。
制約は、データベース内の情報と関連付けるビジネス・ルールを順守するために使用されます。制約によって、無効なデータが表に挿入されないようにします。ビジネス・ルールでは、必ずTRUEまたはFALSEになる条件と関係が指定されます。Warehouse Builderでは、表、ビューおよびマテリアライズド・ビューに対して制約を作成できます。
たとえば、従業員表の給与列に、給与<10,000という制約を定義した場合、この制約によって、この表のすべての行で、この列には10,000を超える数値を格納できない、というルールが順守されます。INSERT文またはUPDATE文によってこの整合性制約への違反が発生した場合は、エラー・メッセージが表示されます。制約を使用すると、ロードのパフォーマンスが低下することに注意してください。
表、ビューおよびマテリアライズド・ビューに対して次の制約を定義できます。
一意キー(UK): 一意キーの制約では、1つの列または列セット(キー)内のすべての値が一意であることが必要です。表内のどの2つの行にも、指定された列または列セットに重複する値を格納できません。UK列にはNULL値も格納できます。
主キー(PK): キー(列または列セット)に定義される値。この値は、表内の各行を、キー(列または列セット)内の値で一意に識別できることを指定します。表内のどの2つの行にも、指定された列または列セットに重複する値を格納できません。データベース内の各表に設定できるPK制約は1つのみです。PK列にはNULL値を格納できません。
外部キー(FK): 1つの表内のキー(列または列セット)に定義されるルール。このルールは、該当するキーの値が、参照表のPKキーまたはUKキー(列または列セット)の値と一致することを保証します。
チェック制約: 列(または列セット)に対するユーザー定義のルール。このルールは、行の挿入と更新を、その列(または列セット)に格納されている値に基づいて制限します。チェックの条件は、挿入または更新する行の値を使用して評価されるブール式であることが必要です。たとえば、受注日<出荷日という条件では、受注日列の値が出荷日列の値より必ず前の日付であることがチェックされます。この条件を満たしていない場合は、表のロード時にエラーが発生し、レコードは拒否されます。チェック条件に、副問合せや順序、またはSYSDATE、UID、USER、USERENV SQL関数を含めることはできません。チェック制約はデータの検証に役立ちますが、ロードのパフォーマンスは低下します。
表で制約を使用する方法の詳細は、次の項を参照してください。
データ・ウェアハウスの問合せパフォーマンスを改善するには、索引を使用します。Warehouse Builderでは、表、マテリアライズド・ビュー、ディメンションおよびキューブに対して索引を作成できます。簡潔に表現するために、以降の各項では、索引の定義が可能なすべてのオブジェクトを表という語で表します。
索引は、ウェアハウス内で処理されるデータに迅速にアクセスすることによって問合せを高速化するために重要です。表の1つ以上の列に索引を作成すると、その表に対するSQL文の実行を高速化できます。索引には、次のような特徴があります。
索引では、特定のキー値が格納されている表内の行へのポインタが提供されます。
索引列の値は、事前ソートされて保存されます。
索引はデータベースの別の領域に格納されるため、基礎となる表に影響を与えずに、いつでも作成および削除できます。
索引は表のデータから独立しています。データを削除、追加または更新すると、索引は自動的にメンテナンスされます。
索引および索引の方針に関する詳細は、Oracle 10gデータ・ウェアハウス・ガイドを参照してください。
通常、索引を定義するには、データ・オブジェクト・エディタの「索引」タブを使用します。データ・オブジェクト・エディタを起動するには、プロジェクト・エクスプローラで表または他のデータ・オブジェクトに移動し、該当するオブジェクトをダブルクリックするか、右クリックして「エディタを開く」を選択します。索引タイプを選択すると、その索引の定義に使用できる適切なテンプレートが表示されます。
ビットマップ索引を除くすべてのタイプの索引については、基礎となる表のパーティション化メソッドを継承するかどうかを決定できます。パーティション化メソッドを継承する索引はローカル索引と呼ばれ、独自のパーティション化メソッドを使用する索引はグローバル索引と呼ばれます。詳細は、「索引パーティション化」を参照してください。
Warehouse Builderでは、次のタイプの索引を作成できます。
一意: これらの索引では、表内のどの2つの行にも、キー列または複合キー列に重複値がないことが保証されます。
標準: 非一意索引とも呼ばれます。これらはBツリー・タイプの索引で、キー列または複合キー列の重複値に対する制限はありません。
ビットマップ: これらの索引は、大量のデータの問合せを可能にするために、データ・ウェアハウス・アプリケーションで主に使用されます。キー値として、行IDのリストのかわりにビットマップが使用されます。ビットマップは、索引キーの値が小さいリストを構成している場合に有効です。たとえば、AGE_GROUPは索引キーとして適切ですが、AGEは適切ではありません。
ビットマップでは、スター問合せ変換が可能です。この変換は、スター問合せの効率的な実行を目的とした、コストベースの問合せ変換です。スター型変換の前提条件は、ビットマップ索引が、キューブ(複数可)の各外部キー列に作成されていることです。
Warehouse Builderでビットマップ索引を定義するときは、そのスコープをLOCALに、パーティション化をNONEに設定します。
ファンクション・ベース: これらの索引では、表内の1つ以上の列に定義したファンクションまたは式の値が計算され、格納されます。ファンクションは、PL/SQLファンクション、パッケージ・ファンクション、CコールアウトまたはSQLファンクションを含む算術式です。
コンポジット: 連結索引とも呼ばれる複数列に対する索引です。表内の列の順序は任意で、互いに隣接している必要はありません。
Warehouse Builderでコンポジット索引を定義するには、他の索引と同じように索引を作成し、2から32の索引列を割り当てます。
逆: この索引は、ROWID列以外の索引付けされた各列について、列内のバイトを逆にします。ROWIDは逆にされないため、この索引では列順は保守されます。
Warehouse Builderで逆索引を定義するには、他の索引と同じように索引を作成した後、構成ウィンドウに移動し、「パフォーマンス・パラメータ」の下にある「索引ソート」を「逆」に設定します。
パーティションを使用すると、非常に大きい表や索引を、管理しやすい小さい部分に分割して効率的に管理できます。パーティションでは、操作がデータのサブセットに対して行われるため、問合せやロードのパフォーマンスが向上します。パーティションを使用すると、データ・アクセスが改善され、全体的なアプリケーション・パフォーマンスが向上します。何百万もの行があり、データ・サイズがGB単位の表や索引にアクセスするアプリケーションに対しては特に有効です。
Warehouse Builderでは、表、索引、マテリアライズド・ビューおよびMOLAPキューブに対してパーティションを定義できます。簡潔に表現するために、以降の各項では、パーティションの定義が可能なすべてのオブジェクトを表という語で表します。この後の項では、MOLAPキューブを除く前述のすべてのオブジェクトに対するパーティション化について説明します。MOLAPキューブについては別に説明します。
これらのオブジェクトに対するパーティションを定義するには、データ・オブジェクト・エディタの「パーティション」タブを使用します。データ・オブジェクト・エディタを起動するには、プロジェクト・エクスプローラでオブジェクトに移動し、そのオブジェクトをダブルクリックするか、右クリックして「編集」を選択します。作成するパーティションのタイプに応じて、構成ウィンドウでパーティションの表領域の構成が必要となる場合もあります。
次のタイプのパーティションを作成できます。
レンジ・パーティション化: 列内の値の範囲に基づいてパーティションを作成するには、レンジ・パーティション化を使用します。日付列をパーティション・キーとしてレンジ・パーティション化を使用すると、「パーティション交換ロードを使用したパフォーマンスの向上」で説明するように、ターゲット表を即時に更新するマッピングを設計できます。
ハッシュ・パーティション化: Oracle Databaseによって、推奨する偶数個のパーティション間でデータを均等に分割するには、ハッシュ・パーティション化を使用します。このタイプのパーティション化は、データに履歴がなく、明確な列または列リストが存在しない場合に有効です。
HASH BY QUANTITYパーティション化: HASH BY QUANTITYパーティション化は、ハッシュ・パーティション化をすばやく定義する方法として使用します。このパーティション化はハッシュ・パーティション化と類似していますが、指定するのはパーティション・キーとパーティション数のみで、Warehouse Builderによってパーティションが作成され、名前が設定される点が異なります。その後は、同じ表領域リストを共有するようにパーティションを構成できます。
リスト・パーティション化: 選択したパーティション・キーに基づいて複数の行をパーティションに明示的に割り当てるには、リスト・パーティション化を使用します。このパーティション化では、表では使用できない構造にデータを編成できます。
コンポジット・パーティション化: Warehouse Builderを使用すると、RANGE-HASH、RANGE-HASH BY QUANTITYまたはRANGE-LISTパーティション化のいずれかのコンポジットを指定できます。Oracle Databaseでは、最初にレンジ・パーティション化が実行され、次にユーザーが選択した2番目のパーティション化を使用してデータがさらに分割されます。たとえば、RANGE-LISTパーティション化では、販売取引日に基づいてパーティション化し、次に取引が発生した州のリストに基づいてデータをさらに分割できます。
索引パーティション化: 基礎となる表のパーティション化メソッドを継承する索引を定義できます。または、独自のパーティション化方針を使用して索引をパーティション化できます。
データを識別および分類するための追加のメタデータが含まれるオブジェクトを、ディメンション・オブジェクトと呼びます。Warehouse Builderでは、ディメンションとキューブという2つのタイプのディメンション・オブジェクトを設計、配布およびロードできます。この章では、ディメンションとキューブの両方をディメンション・オブジェクトという語で表します。
ほとんどの分析問合せで時間ディメンションを使用する必要があります。Warehouse Builderには、簡単な質問に答えることで時間ディメンションを容易に作成し、移入できるツールが用意されています。
設計と実装
Warehouse Builderでは、ディメンション・オブジェクトの論理設計が記憶域から分離されています。論理設計(ビジネス・ルール)では、最初に、ディメンション・オブジェクトの構造と内容を重点的に考えることができます。次に、そのディメンション・オブジェクトに対して、リレーショナル、ROLAPまたはMOLAP実装を選択できます。
ROLAP実装およびリレーショナル実装では、データベースのリレーショナル・スキーマ内にディメンション・オブジェクトが格納されます。
MOLAP実装では、データベースのアナリティック・ワークスペース内にディメンション・オブジェクトが格納されます。
Warehouse Builderを使用すると、同じメタデータを使用して、リレーショナル・データ・ストアと多次元データ・ストアの両方を作成および管理できます。設計と実装の分離には、次の利点があります。
最初に設計し、その後で実装するため、実装が容易になります。
どのタイプの実装に対してもETLが同じであるため、タイプを意識せずに操作できます。
OLAPの使用
ビジネス組織には通常、複雑な分析、予測および計画の要件があります。分析ビジネス・インテリジェンス(BI)アプリケーションでは、データベース内のデータを使用して重要なビジネス上の問題に対応することで、ソリューションを提供します。
ディメンション・オブジェクトは、データ・ウェアハウスに対して複雑な分析機能を提供します。データをディメンション・オブジェクトにロードした後は、ツールやアプリケーションを使用して、ビジネス上の問題に対応する複雑な分析問合せを実行できます。これらの分析問合せには、時系列分析、行間計算、集計された履歴データおよび現行データへのアクセス、予測などがあります。多次元オブジェクトは、このような問合せに迅速に対応する点でより効果的です。
ディメンション・オブジェクトの作成は、次の4つの上位タスクで構成されます。
ディメンション・オブジェクトを定義するときは、より構造化された形式でデータを格納できるように、論理的な関係を記述します。たとえば、ディメンションを定義するには、属性、レベルおよび階層を記述します。
Warehouse Builderでは、次の2通りの方法でディメンション・オブジェクトを定義できます。
ウィザード: ディメンション・オブジェクトを簡単に作成するには、ウィザードを使用します。ウィザードでは、完全に機能するディメンション・オブジェクトが、ディメンション・オブジェクト・データを格納する実装オブジェクトとともに作成されます。多数のオプションが、最も一般的な設定にデフォルト設定されています。これらの設定は、エディタを使用して後で変更できます。
ディメンションの作成にはディメンションの作成ウィザード、時間ディメンションの作成には時間ディメンションの作成ウィザード、キューブの作成にはキューブの作成ウィザードをそれぞれ使用します。
エディタ: ディメンション・オブジェクトを作成または編集するには、エディタを使用します。ウィザードで使用されるデフォルト設定とは異なる設定を指定する場合は、ディメンション・オブジェクトの作成にエディタを使用します。また、ウィザードの使用時には使用できない特定の拡張オプションを使用するディメンション・オブジェクトを作成する場合も、エディタを使用します。たとえば、スノーフレーク・スキーマ実装を使用するリレーショナル・ディメンションを作成するには、エディタを使用する必要があります。ウィザードを使用した場合、使用されるデフォルト実装メソッドはスター・スキーマです。
ディメンション・オブジェクトを実装するには、ディメンション・オブジェクトの物理構造を作成します。Warehouse Builderには、ディメンション・オブジェクトに対して次の実装が用意されています。
ディメンション・オブジェクトに対する実装のタイプを指定するには、「配布オプション」構成プロパティを設定します。このプロパティの設定の詳細は、「ディメンションの構成」および「キューブの構成」を参照してください。
リレーショナル実装では、ディメンション・オブジェクトとそのデータが、リレーショナル形式でデータベースに格納されます。ディメンション・オブジェクト・データは、実装オブジェクトに格納されます。このオブジェクトは通常は表です。ディメンション・オブジェクトで実行される問合せでは、これらの表からデータが取得されます。
Warehouse Builderでは、ディメンション・オブジェクトを作成するDDLスクリプトが作成されます。これらのスクリプトは、コントロール・センターを使用してデータベースに配布できます。
ウィザードを使用してディメンション・オブジェクトを定義すると、Warehouse Builderでは、ディメンション・オブジェクト・データを格納するデータベース表が作成されます。データ・オブジェクト・エディタを使用してディメンション・オブジェクトを定義する場合は、Warehouse Builderで実装表を作成するか、独自の表とビューにディメンション・オブジェクト・データを格納するかを決定できます。バインドに関する次の項では、ディメンション・オブジェクトとその実装オブジェクトの間の関係を指定する方法を説明します。
バインドは、ディメンション・オブジェクトの属性と関係を、それらのデータが格納されている表またはビューの列に結合するプロセスです。バインドを実行するのは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみです。多次元オブジェクトについては、バインドは暗黙的であり、アナリティック・ワークスペースで解決されます。
Warehouse Builderには、次の2通りのバインド方法があります。
自動バインド
手動バインド
自動バインド: 自動バインドでは、Warehouse Builderによって、ディメンション・オブジェクトの属性と関係が、それらのデータが格納されているデータベース列にバインドされます。自動バインドは、ウィザードとエディタの両方で実行できます。
ウィザードを使用してディメンション・オブジェクトを作成すると、Warehouse Builderによって実装表が作成され、自動バインドが実行されます。ディメンションの場合、ディメンション・データの格納に使用される表の数は、記憶域に対して選択したオプションによって異なります。これらのオプションの詳細は、「ディメンションのリレーショナルおよびROLAP実装」を参照してください。
エディタを使用してディメンション・オブジェクトを作成する場合は、自動バインドと手動バインドの両方を実行できます。
手動バインド: 手動バインドでは、ディメンション・オブジェクトの属性を、そのデータが格納されているデータベース列に明示的にバインドする必要があります。ディメンション・オブジェクトを既存の表またはビューにバインドする場合は、手動バインドを使用します。
アンバインド: Warehouse Builderでは、ディメンション・オブジェクトのアンバインドも実行できます。アンバインドすると、ディメンション・オブジェクトと、そのデータが格納されている表の間の結合が削除されます。
現在の実装からディメンション・オブジェクトをアンバインドするには、キャンバスの「リレーショナル」タブでディメンション・オブジェクトを右クリックし、「アンバインド」を選択します。アンバインドすると、ディメンション・オブジェクトとその実装オブジェクトの間のバインドが削除されます。ただし、実装オブジェクトは変更されません。
ROLAP実装では、リレーショナル実装と同様に、ディメンション・オブジェクトとそのデータが、リレーショナル形式でデータベースに格納されます。ROLAP実装を使用すると、データベースに配布できるDDLスクリプトを作成する以外に、ディメンション・オブジェクトに対するCWM2メタデータをOLAPカタログに作成できます。
ウィザードを使用してディメンション・オブジェクトを定義すると、Warehouse Builderでは、ディメンション・オブジェクト・データを格納するデータベース表が作成されます。データ・オブジェクト・エディタを使用してディメンション・オブジェクトを定義する場合は、Warehouse Builderで実装表を作成するか、独自の表とビューにディメンション・オブジェクト・データを格納するかを決定できます。ディメンション・オブジェクトとその実装オブジェクトの間の関係を指定する方法の詳細は、「バインド」を参照してください。
MOLAP実装では、ディメンション・オブジェクト・データが、Oracle Database 10gのアナリティック・ワークスペースに格納されます。このアナリティック・ワークスペースは、データベースに格納されます。
注意: MOLAP実装を使用するには、次の製品が必要です。
|
アナリティック・ワークスペースは、データを多次元形式で格納するOracleデータベース内のコンテナです。アナリティック・ワークスペースによって、OLAP処理に対する最適なサポートが実現します。アナリティック・ワークスペースには、ディメンションや変数など、様々なオブジェクトを格納できます。
アナリティック・ワークスペースは、リレーショナル・データベース表に格納されます。この表は、他の表と同様に、複数のディスク・ドライブにまたがってパーティション化できます。単一のスキーマ内に多数のアナリティック・ワークスペースを作成し、ユーザー間で共有できます。アナリティック・ワークスペースは特定のユーザーが所有し、他のユーザーにはそのアクセス権を付与できます。ディメンション・オブジェクトの名前は、所有者のスキーマ内で一意であることが必要です。アナリティック・ワークスペースの詳細は、Oracle OLAPアプリケーション開発者ガイド10gリリース2(10.2)の第6章、データ記憶域の理解を参照してください。
OLAPカタログは、OracleデータベースのOLAPオプション用に提供されているメタデータ・リポジトリです。このメタデータでは、リレーショナル表とアナリティック・ワークスペースの両方に格納されるデータが記述されます。
Warehouse Builderを使用してディメンション・オブジェクトを配布するときは、ディメンション・オブジェクト・メタデータをOLAPカタログに格納するかどうかを指定できます。
OLAPメタデータは、アクティブ・カタログ・ビュー(名前がALL_OLAP2_AWで始まるビュー)と呼ばれる一連のビューを介して動的に提示されます。
Oracle Database 10gのOLAPカタログ・メタデータは、OLAPツールおよびアプリケーションが、リレーショナルなスター・スキーマおよびスノーフレーク・スキーマに格納されているデータにアクセスするために使用します。BI BeansやDiscovererなどの外部アプリケーションでは、リレーショナル・データおよび多次元データの問合せにOLAPカタログが使用されます。このアプリケーションでは、データがリレーショナル表に格納されているか、アナリティック・ワークスペースに格納されているかを意識する必要はなく、アクセスするためのメカニズムを認識する必要もありません。図4-8は、OLAPカタログを使用して、リレーショナル表およびアナリティック・ワークスペースに格納されているデータにアプリケーションがアクセスできる仕組みを説明しています。
OLAPカタログは、格納されているメタデータを使用して、リレーショナル表またはビューに格納されているデータにアクセスします。OLAPカタログによって、論理多次元オブジェクトが定義され、それらが物理データ・ソースにマッピングされます。論理オブジェクトはディメンションおよびキューブです。物理データ・ソースは、リレーショナル表またはビューの列です。
データベースのディメンション・オブジェクトをインスタンス化するには、それらを配布する必要があります。Warehouse Builderには、ディメンション・オブジェクトに対して次の配布オプションがあります。
すべて配布: リレーショナル実装またはROLAP実装の場合は、ディメンション・オブジェクトがデータベースに配布され、CWM定義がOLAPカタログに配布されます。MOLAP実装の場合は、ディメンション・オブジェクトがアナリティック・ワークスペースに配布されます。
データ・オブジェクトのみ配布: ディメンション・オブジェクトのみをデータベースに配布します。このオプションは、リレーショナル実装を使用しているディメンション・オブジェクトに対してのみ選択できます。
カタログにのみ配布: CWM定義をOLAPカタログにのみ配布します。このオプションは、データのみを配布した後で、BI BeansまたはDiscoverer for OLAPなどのアプリケーションでディメンション・オブジェクト・データにアクセスする場合に使用します。
集計の配布: キューブ・メジャーに定義されている集計を配布します。このオプションは、キューブに対してのみ使用できます。
MOLAP実装を使用するディメンション・オブジェクトの配布
MOLAP実装を使用するディメンション・オブジェクトは、定義後すぐに配布できます。ディメンション・オブジェクトの配布には、デザイン・センターまたはコントロール・センター・マネージャを使用できます。
リレーショナル実装またはROLAP実装を使用するディメンション・オブジェクトの配布
リレーショナルまたはROLAPのディメンション・オブジェクトを配布する前に、実装詳細が指定されていることを確認します。つまり、ディメンション・オブジェクトがその実装オブジェクトにバインドされている必要があります。また、ディメンション・オブジェクトが有効であることも確認します。ディメンション・オブジェクトの実装の詳細は、「ディメンション・オブジェクトのリレーショナル実装」を参照してください。バインドの実行の詳細は、「バインド」を参照してください。
バインドを実行した後は、ディメンション・オブジェクトを配布します。ディメンション・オブジェクトを配布する前に、すべての実装オブジェクトが配布されていることを確認します。ディメンションの場合、これには、ディメンション・レベルのサロゲート識別子の生成に使用される順序が含まれます。または、実装オブジェクトをディメンション・オブジェクトと同時に配布することもできます。
ディメンション・オブジェクトを配布した後は、マッピングを作成して、ディメンション・オブジェクトにデータをロードします。マッピング・エディタを使用して、ソース・オブジェクトからディメンション・オブジェクトにデータをロードするマッピングを作成します。作成後、このマッピングを配布し、実行します。
ディメンションのロードの詳細は、「ターゲットとしてのディメンション演算子」を参照してください。キューブのロードの詳細は、「キューブ演算子」を参照してください。
ディメンションは、データを編成する構造です。一般的に使用されるディメンションの例には、顧客、時間および製品があります。
リレーショナル・ディメンションの場合は、ディメンションの使用によって、問合せパフォーマンスが向上します。これは、ユーザーが既知の階層をドリルダウンしてデータを分析することがよくあるためです。階層の例には、年、四半期、月、日という時間階層があります。Oracleデータベースでは、詳細表ではなくマテリアライズド・ビューからデータを取り出す問合せをリライトして、これらの定義済階層を使用します。
一般的なリレーショナル・ディメンション表には、次の特徴があります。
ウェアハウス・キーと呼ばれる、値が移入された単一列の主キーがあります。
ウェアハウス・キーは、ディメンションを管理し、ディメンション履歴を保持する技術をサポートし、キューブのサイズを削減します。
ディメンション・オブジェクトとして明示的に定義された1つ以上の階層があります。階層によって、Oracleサーバーによる問合せリライトの数が最大化されます。
Warehouse Builderを使用してディメンション・オブジェクトを作成するときは、該当するディメンションが次のルールに従っている必要があります。
ディメンションには、サロゲート識別子とビジネス識別子が必要です。
サロゲート識別子を構成できるのは、1つの属性のみです。ただし、ビジネス識別子は複数の属性で構成できます。
各ディメンション・レベルには、少なくとも1つの属性が必要です。
1つのディメンション属性が一度に果せる役割は、次の中の1つのみです。有効日、有効期限、トリガー属性、サロゲート識別子、ビジネス識別子または親識別子。
リレーショナル実装またはROLAP実装を使用するディメンションには、少なくとも1つのレベルが必要です。
リレーショナル実装またはROLAP実装を使用するディメンションを実装するすべてのデータベース表またはビューには、LONG、LONG RAWまたはNCLOB列が1つのみ必要です。
リレーショナル実装またはROLAP実装を使用するディメンションの場合は、すべてのレベル属性が、データベース表またはビューにのみバインドされている必要があります。
リレーショナル実装またはROLAP実装を使用するディメンションは、ディメンション・キー属性のロードに使用される順序に関連付けられている必要があります。
リレーショナル実装またはROLAP実装を使用するディメンションのディメンション・キー属性は、表の主キーにバインドされている必要があります。
タイプ2のSCDには、有効日、有効期限、および少なくとも1つのトリガー属性が必要です。
タイプ3のSCDには、有効日、および少なくとも1つのトリガー属性が必要です。
ディメンションは、一連のレベルと、これらのレベルに定義されている一連の階層で構成されます。ディメンションを作成するには、次の内容を定義する必要があります。
ディメンション属性
レベル
レベル属性
階層
ディメンション属性は、ディメンション・メンバーの記述特性です。ディメンション属性には、名前とデータ型があり、ディメンション内の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が格納されます。
ディメンションの一例として、製品データの編成に使用する製品ディメンションを紹介します。表4-3に、製品ディメンションの各レベルと、ディメンション内の各レベルのサロゲート識別子とビジネス識別子をリストします。
表4-3 製品ディメンション・レベルの詳細
レベル | 属性名 | 識別子 |
---|---|---|
Total |
ID |
サロゲート |
名前 |
ビジネス |
|
説明 |
||
Groups |
ID |
サロゲート |
名前 |
ビジネス |
|
説明 |
||
Product |
ID |
サロゲート |
UPC |
ビジネス |
|
名前 |
||
説明 |
||
パッケージ・タイプ |
||
パッケージ・サイズ |
製品ディメンションの階層は、次のとおりです。
階層1: 合計 > グループ > 製品
値ベース階層は、階層の関係が親ディメンション属性と子ディメンション属性によって定義されているディメンションです。これは、この章で階層と呼ばれている、階層の関係が各レベル間で定義されているレベル・ベース階層とは異なります。
親子関係を意味のあるレベルとして分類できない場合は、値ベース階層を作成します。値ベース階層にはレベルがありません。ディメンション属性を作成する場合は、親属性となるディメンション属性を指定する必要があります。
たとえば、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実装のいずれかの実装を選択できます。実装方法の設定に関する詳細は、「ディメンション・オブジェクトの実装」を参照してください。
注意: ディメンションをOLAPカタログに配布する際の特定の制限については、Oracle Warehouse Builderリリース・ノートを参照してください。 |
ディメンション・データをリレーショナル形式で保存する場合は、次の2つの方法のいずれかを使用してディメンションを実装できます。
スター・スキーマ実装では、ディメンション・データは単一の表に格納されます。同じ表またはビューに複数のディメンション・レベルのデータが格納されるため、表にディメンション・キーの列を指定する必要があります。ディメンション・キーの列は、ディメンションの主キーです。この列はキューブの外部キー参照も形成します。
各レベルには、ディメンション属性のサブセットが実装されます。デフォルトでは、レベル属性の名前はディメンション属性の名前と同じです。スター表の名前の指定には、すべてのレベルのデータが同じ表に格納されることで生じる名前の衝突を回避するために、次のガイドラインが使用されます。
レベル属性の名前が一意でない場合は、レベル名に接頭辞が付きます。
レベル属性の名前が一意の場合、接頭辞は使用されません。
注意: 接頭辞が使用されないようにするには、ディメンションの作成ウィザードまたはデータ・オブジェクト・エディタで、レベル属性の名前を明示的に変更する必要があります。 |
たとえば、スター・スキーマを使用して製品ディメンションを実装する場合は、ディメンションのすべてのレベルの実装に単一の表が使用されます。図4-9は、製品ディメンションのスター・スキーマ実装を示しています。すべてのレベルの属性は、PRODUCTSと呼ばれる単一の表の異なる列にマッピングされます。DIMENSION_KEYという列には、ディメンションのサロゲートIDが格納され、これが表の主キーです。
スノーフレーク・スキーマ実装では、複数の表を使用してディメンション・データが格納されます。個別のデータベース表またはビューに、ディメンションの各レベルに関するデータが格納されます。
図4-10に、製品ディメンションのスノーフレーク実装を示します。ディメンションの各レベルは異なる表にマップされます。
バインドを実行する場合は、各属性のデータおよびディメンション内のレベルの関係を格納するデータベース列を指定します。ディメンションに対して自動バインドまたは手動バインドを実行できます。バインドの詳細は、「バインド」を参照してください。
自動バインド: 自動バインドを実行すると、ディメンション・オブジェクトの属性がそのデータを格納するデータベース列にバインドされます。自動バインドを初めて実行する場合は、ディメンション・データの格納に使用される表も作成されます。
すでにバインド済のディメンションに対して自動バインドを実行する場合は、次のルールが使用されます。
ディメンションの実装方法が同じ場合、ディメンション・オブジェクトは既存の実装オブジェクトに再バインドされます。実装方法はスターまたはスノーフレークを使用できます。実装方法の詳細は、「ディメンションのリレーショナルおよびROLAP実装」を参照してください。
たとえば、スター・スキーマ実装方法を使用してProductsディメンションを作成し、自動バインドを実行したとします。ディメンション・データはProductsと呼ばれる表に格納されます。後日、ディメンション定義を変更しましたが、実装方法はスターのままです。この状況でProductsディメンションを自動バインドすると、Productsディメンションの属性は同じ実装表に再バインドされます。
ディメンションの実装方法を変更すると、古い実装オブジェクトが削除され、一連の新しい実装表が作成されます。古い実装オブジェクトを保持する場合は、自動バインドを実行する前に、ディメンション・オブジェクトをアンバインドする必要があります。実装方法の詳細は、「ディメンションのリレーショナルおよびROLAP実装」を参照してください。
たとえば、スター・スキーマ実装方法を使用して製品ディメンションを作成し、それを実装表にバインドしたとします。その後、このディメンションを編集し、実装方法をスノーフレークに変更しました。変更した製品ディメンションの自動バインドを実行すると、ディメンション・データが格納されていた表は削除され、新しい実装表が作成されて、ディメンション属性および関係が新しい実装表にバインドされます。
自動バインドを実行する手順は、次のとおりです。
プロジェクト・エクスプローラで、ディメンションを右クリックして「エディタを開く」を選択します。
このディメンションのデータ・オブジェクト・エディタが表示されます。
「ディメンショナル」タブで、「ディメンション」ノードを右クリックして「バインド」を選択します。
あるいは、キャンバスで「ディメンション」ノードを選択し、「オブジェクト」メニューから「バインド」を選択します。
「ディメンションのリレーショナルおよびROLAP実装」に説明されているように、自動バインドによって実装設定が使用されます。
手動バインド 通常は、手動バインドを使用して既存の表をディメンションにバインドします。自動バインドまたは再バインドが不要な場合は、手動バインドを使用します。
ディメンションの手動バインドを実行する手順は、次のとおりです。
ディメンション・データの格納に使用する実装オブジェクト(表またはビュー)を作成します。
リレーショナルまたはROLAPディメンションの場合は、ディメンションのサロゲート識別子のロードに使用する順序を作成します。既存の順序を使用することもできます。
プロジェクト・エクスプローラで、ディメンションを右クリックして「エディタを開く」を選択します。
そのディメンションのデータ・オブジェクト・エディタが表示されます。キャンバスでは「ディメンショナル」タブがアクティブになります。
ディメンションを右クリックして「詳細の表示」を選択します。
ディメンションと同じ名前の新しいタブが表示されます。
パレットから、実装オブジェクトを表す演算子をキャンバスにドラッグ・アンド・ドロップします。
「新規または既存の<オブジェクト>を追加」ダイアログが表示されます。たとえば、ディメンション・データが表に格納されている場合は、パレットからキャンバスに表演算子をドラッグ・アンド・ドロップすると、「新規または既存の表を追加」ダイアログが表示されます。
「既存の<オブジェクト>を選択」オプションを選択し、選択ツリーに表示されるオブジェクトのリストからデータ・オブジェクトを選択します。
「OK」をクリックします。
追加したオブジェクトを表すノードがキャンバスに表示されます。
ディメンション・データの格納に複数のデータ・オブジェクトが使用される場合は、各データ・オブジェクトについてステップ4から6を実行します。
ディメンションの各レベルの属性を、そのデータを格納する列にマッピングします。そのためには、ディメンション属性の上でマウスを押したまま、属性値を格納する列にドラッグ・アンド・ドロップします。
レベルの関係も、そのデータを格納するデータベース列にマッピングします。
たとえば、「ディメンションの例」に記載されている製品ディメンションの場合、製品ディメンションのグループ・レベルの名前属性は、Products_tab表のGroup_name属性に格納されます。名前属性の上でマウスを押したまま、Products_tab表のGroup_name属性にドラッグ・アンド・ドロップします。
ディメンションがMOLAP環境に実装されている場合、ディメンション定義とデータはアナリティック・ワークスペースに格納されます。格納する際は、ディメンション、関係などのアナリティック・ワークスペース・オブジェクトが使用されます。同じアナリティック・ワークスペースには複数のキューブを格納できます。MOLAP実装の詳細は、「ディメンション・オブジェクトのMOLAP実装」を参照してください。
緩やかに変化するディメンション(SCD)は、現行データと履歴データの両方を一定期間にわたってデータ・ウェアハウスで保存および管理するディメンションです。データ・ウェアハウスでは、一般に認知されている3種類のSCDタイプがあります。
適切なライセンスでWarehouse Builderを使用すると、3種類のSCDタイプすべてを定義、配布およびロードできます。穏やかに変化するディメンションは、リレーショナル実装を使用するディメンションに対してのみ作成できます。
注意: タイプ1に追加ライセンスは不要です。ただし、タイプ2とタイプ3のSCDには、Warehouse BuilderのEnterprise ETLオプションが必要です。
表4-4では、3つのタイプのSCDについて説明します。
表4-4 緩やかに変化するディメンションのタイプ
タイプ | 用途 | 説明 | 履歴データの保持 |
---|---|---|---|
タイプ1 |
上書き |
単一バージョンのディメンション・レコードのみが存在します。変更時に、レコードは上書きされ、履歴データは保存されません。 |
いいえ |
タイプ2 |
新バージョンのディメンション・レコードの作成 |
同じディメンション・レコードの複数のバージョンが存在し、変更時に新バージョンが作成されても、旧バージョンは保持されます。 |
はい |
タイプ3 |
現行値フィールドの作成 |
単一バージョンのディメンション・レコードが存在します。このレコードには、選択した属性について元の値と現行値が保存されます。 |
はい |
タイプ2またはタイプ3のSCDを作成するには、通常のディメンション属性に加え、次のロールを実行する追加属性が必要です。
トリガー属性: これらは履歴値を格納する必要がある属性です。たとえば、製品ディメンションでは、製品レベルの属性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として作成する手順は、次のとおりです。
製品レベルのPACKAGE_TYPE属性とPACKAGE_SIZE属性をトリガー属性として指定します。
製品レベルの2つの追加属性を使用して、そのレベルのレコードの有効日と有効期限を格納します。ディメンションの作成ウィザードを使用してタイプ2のSCDを作成すると、これらの追加属性は最下位レベルに対してのみ作成されます。データ・オブジェクト・エディタを使用してタイプ2のSCDを作成する場合は、これらの属性を明示的に作成して、その属性を該当するレベルに適用する必要があります。
いずれかのトリガー属性の値が変更されると、次の処理が実行されます。
当初のディメンション・レコードが失効されます。このレコードの有効期限は、現在時刻または指定した値に設定されます。有効期限の設定の詳細は、「ディメンション演算子」を参照してください。
変更された属性値を使用して新規レコードが作成されます。この新規レコードの有効期限はNULLまたは定義した値に設定されます。有効期限属性値の設定の詳細は、「ディメンション演算子」を参照してください。
タイプ3のSCDには、選択した特定のレベル属性の値について2つのバージョンが格納されます。各レコードには、バージョン管理された属性について元の値と現行の値が格納されます。バージョン管理されたいずれかの属性の値が変更されると、現行の値は古い値として格納され、新しい値が現行の値となります。各レコードには、現在の値がアクティブになった日付を識別する有効日が格納されます。これにより、バージョン管理された属性の列数は2倍になるため、タイプ3のSCDはほとんど使用されません。
タイプ3のSCDを定義する手順は、次のとおりです。
各レベルについて、バージョン管理する属性を指定します。つまり、現行の値と同様に元の値を格納する属性を指定します。
バージョン管理する各属性について、元の値を格納する属性を指定します。
元の値を保持する属性には、次の制約があります。
元の値として指定された属性は、その値よりもさらに前の値は保持できません。
サロゲートIDは元の値を保持できません。
バージョン管理する各レベルについて、有効日を格納する属性を指定します。
タイプ3のSCDのビジネス識別子には、元の値の属性を指定しないことをお薦めします。
例
ディメンションの例に記載されている製品ディメンションは、タイプ3のSCDとして作成できます。製品レベルのPACKAGE_TYPE属性 PACKAGE_SIZE属性をバージョン管理します。製品レベルで、元の値を格納するPREV_PACK_SIZEとPREV_PACK_TYPEという2つの追加属性を定義します。PACKAGE_TYPE属性の値が変更されると、この属性の現行の値がPREV_PACK_TYPE属性に格納され、新しい値がPACKAGE_TYPE属性に格納されることになります。有効日属性は、現在のシステム日付または他の指定した日に設定できます。
キューブには、メジャーおよび1つ以上のディメンションへのリンクが含まれます。キューブの軸にはディメンション・メンバーが組み込まれ、キューブの本体にはメジャーの値が格納されます。ほとんどのメジャーは加法的なメジャーです。たとえば、売上データは、キューブ・エッジに時間、製品および顧客のディメンション値が指定され、キューブ本体にバリュー売上とドル売上のメジャーから値が格納されるキューブに編成できます。
キューブは、外部キー制約によってディメンション表にリンクされます。これらの制約は、データ整合性が最も重要とされるデータ・ウェアハウス環境には不可欠です。この制約によって、データ・ウェアハウスを使用する日常業務での参照整合性が順守されます。
データ分析アプリケーションでは、通常、多くのディメンションにわたってデータが集計されます。これによって、データの変則的または特異なパターンを確認できます。キューブの使用は、この種の操作を実行する最も効率的な方法です。リレーショナル実装で、ウェアハウス・キーが設定されているディメンションを設計する場合、キューブの行の長さは一般的に短くなります。これは、ウェアハウス・キーの長さが対応する本来のデータより短いためです。その結果、キューブ・データに必要な記憶領域は少なくなります。MOLAP実装では、OLAPでVARCHAR2キーが使用されます。
一般的なキューブには、次の要素が含まれます。
一連の外部キー参照列、またはデータ・リストの場合は人工キーまたは一連のウェアハウス・キー列に定義された主キー。キューブがデータ・リストの場合、外部キー参照列ではキューブの各行は一意に識別されません。
表を対応するディメンションにリンクする一連の外部キー参照列。
キューブは、一連のディメンションにわたって定義されたメジャーの集合で構成されます。キューブを作成するには、次の要素を定義する必要があります。
メジャーとは、調査および分析可能なデータで、通常は加法的な数値になります。メジャーの例としては、売上、原価および収益があります。キューブには、1つ以上のディメンションが必要です。メジャーの集計も可能です。ただし、集計できるのは数値メジャーのみです。
キューブは一連のディメンションで定義されます。キューブはディメンション内で最下位レベル以外のレベルを参照できます。
純粋なリレーショナル実装を使用するキューブでは、ディメンション・ロールによって、複数回同じディメンションを再使用できます。ディメンション・ロールの詳細は、「ディメンション・ロール」を参照してください。
キューブを有効にする前に、キューブが参照するディメンションすべてが有効になっていることを確認してください。
ディメンション参照を定義するには、次の要素を指定します。
キューブが参照するディメンションとディメンション内のレベル。
リレーショナル実装を使用するキューブでは、ディメンションの中間レベルを参照できます。ただし、多次元実装を使用するキューブの場合は、ディメンションの最下位レベルのみを参照できます。Warehouse Builderでは、レベルの非サロゲート識別子(ビジネス・キーなど)への参照をサポートしています。
リレーショナル実装またはROLAP実装を使用するディメンションの場合は、各ディメンションのディメンション・ロール。ディメンション・ロールは、キューブ内でディメンション参照が実行するロールを示します。ディメンション・ロールの指定はオプションです。
MOLAPキューブを定義する場合は、ディメンション参照を定義する順序が重要です。ディスク上でのディメンションの物理的な順序は、ディメンション参照を定義した順序と同じになります。物理的な順序は、スパーシティ定義と密接に関係します。ディメンション参照は、最も密な参照から疎の参照への順序で定義してください。一般的に、時間は密ディメンションで、最初にリストすることでデータ・ロードと時間ベースの分析が迅速に処理されます。ディメンション参照の詳細は、「ディメンション・ページ」または「「ディメンション」タブ」を参照してください。スパーシティの詳細は、「「拡張」ダイアログ」を参照してください。
ROLAPキューブのキューブまたはMOLAPキューブのキューブ・メジャーに対して実行する集計を定義できます。すべてのキューブ・メジャーに同じ集計関数を使用することも、各メジャーに異なる集計関数を指定することもできます。
Warehouse Builderでは、SUM、SSUM(scaled SUM)、AVERAGE、HAVERAGE(Hierarchical AVERAGE)、MAX、MIN、FIRST、LAST、AND、OR、HIERARCHICAL_FIRSTおよびHIERARCHICAL_LASTのデフォルト集計方法をサポートしています。集計を実行しない場合はNOAGGを選択します。ANDとORは、多次元実装を使用するキューブには適用できません。
注意: 純粋なリレーショナル・キューブには集計を定義できません。 |
売上キューブには、集計された売上データが格納されます。このキューブにはValue_salesおよびDollar_salesという2つのメジャーが含まれています。
Value_sales: 売上額を売上数量に換算して格納します。
Dollar_sales: 売上額を格納します。
表4-5に、売上キューブのディメンションを示します。この表には、キューブが参照するディメンションの名前とディメンションのレベルがリストされています。
キューブを実装する際は、キューブの物理的な記憶域の詳細を指定します。キューブは、リレーショナル形式または多次元形式でデータベースに実装できます。キューブ・データをデータベースのアナリティック・ワークスペースに格納することを、MOLAP実装と呼びます。
キューブに使用できる実装のタイプは、次のとおりです。
リレーショナル実装
ROLAP実装
MOLAP実装
キューブの実装タイプを設定するには、「配布オプション」構成プロパティを使用します。このオプションの設定の詳細は、「キューブの構成」を参照してください。
キューブ・データの格納に使用されるデータベース・オブジェクトはファクト表と呼ばれます。キューブは、単一のファクト表のみを使用して実装する必要があります。ファクト表には、キューブのメジャーとディメンション参照の列が含まれています。キューブに対する実装オプションの設定の詳細は、「ディメンション・オブジェクトの実装」を参照してください。
キューブを実装する手順は、次のとおりです。
キューブ・データを格納する表またはマテリアライズド・ビューを選択します。
各メジャーについて、メジャー・データを格納する列を選択します。
各ディメンション参照について、ディメンション参照を格納する列を選択します。
各ディメンション参照は、ファクト表の列およびファクト表からディメンション表への外部キー(オプション)に対応します。ファクト表からディメンション表への1対nの関係が順守される必要があります。
図4-11に、売上キューブのリレーショナル実装のバインドを示します。売上キューブのデータはSALESという表に格納されます。
バインドを実行する場合は、キューブのメジャーとディメンション参照の各データを格納するデータベース列を指定します。キューブに対して自動バインドまたは手動バインドを実行できます。バインドの詳細は、「バインド」を参照してください。
自動バインド 自動バインドを実行すると、キューブ・データを格納する表が作成され、キューブのメジャーおよび参照がデータベースの列にバインドされます。自動バインドを実行する手順の詳細は、「自動バインド」を参照してください。
キューブの自動バインドを実行する場合は、キューブが参照するディメンションを自動バインドした後に、キューブを自動バインドします。キューブが最後に自動バインドされた後に、そのキューブによって参照されるディメンションが自動バインドされた場合は、キューブを配布できません。
たとえば、TIMESディメンションとPRODUCTSディメンションを参照するSALESキューブを作成し、そのキューブの自動バインドを実行したとします。その後、PRODUCTSディメンションの定義を変更しました。ここで、再度SALESキューブを自動バインドしようとすると、エラーが生成されます。最初にPRODUCTSディメンションを自動バインドした後に、キューブを自動バインドする必要があります。
手動バインド 手動バインドでは、最初にキューブ・データを格納する表またはビューを作成し、次にそのデータを格納するデータベースの列にキューブの参照およびメジャーをマッピングする必要があります。あるいは、既存のデータベース表またはビューを使用して、キューブ・データを格納することもできます。
キューブの手動バインドを実行する手順は、次のとおりです。
キューブ・データを格納する表またはビューを作成します。
プロジェクト・エクスプローラで、キューブを右クリックして「エディタを開く」を選択します。
そのキューブのデータ・オブジェクト・エディタが開きます。キャンバスでは「ディメンショナル」タブがアクティブになります。
キューブを右クリックして「詳細の表示」を選択します。
キューブと同じ名前の新しいタブが表示されます。
パレットから、実装オブジェクトを表す演算子をキャンバスにドラッグ・アンド・ドロップします。
「新規または既存の<オブジェクト>を追加」ダイアログが表示されます。たとえば、キューブ・データが表に格納されている場合は、パレットからキャンバスに表演算子をドラッグ・アンド・ドロップすると、「新規または既存の表を追加」ダイアログが表示されます。
「既存の<オブジェクト>を選択」オプションを選択し、選択ツリーに表示されるオブジェクトのリストからデータ・オブジェクトを選択します。
「OK」をクリックします。
追加したオブジェクトを表すノードがキャンバスに表示されます。
キューブのメジャーとディメンション参照をキューブ・データが格納される列にマッピングします。そのためには、メジャーまたはディメンション参照をマウス・ボタンで押したまま、そのメジャーまたはディメンション参照を格納するデータ・オブジェクト属性にドラッグ・アンド・ドロップします。
キューブとそのデータをアナリティック・ワークスペースに格納することは、MOLAP実装と呼ばれます。複数のキューブを同じアナリティック・ワークスペースに格納できます。MOLAP実装の詳細は、「ディメンション・オブジェクトのMOLAP実装」を参照してください。
特定のビジネス例では、キューブのディメンションを特定の順序で評価する必要があります。ディメンションの評価順序は、キューブの依存性順序の解決と呼ばれます。たとえば、Salesキューブでは、Productsディメンションの前にTimeディメンションを評価する必要があります。キューブの各ディメンションについて、キューブの別のディメンションに対する依存性を指定できます。
依存性順序を指定する利点は、Warehouse Builderでディメンションおよびキューブの結合計算の問合せ速度が最適化されることにあります。たとえば、時間の条件に基づいてSalesキューブから結果を取得するほうが、製品の条件に基づいて結果を取得するよりも選択肢が絞り込まれるとします。この場合は、Salesキューブに対して、ProductsディメンションがTimeディメンションに依存することを指定できます。
依存性順序の解決の指定はオプションです。依存性順序を指定しない場合は、オプティマイザが解決順序を柔軟に判断します。
時間ディメンションは、時間的なデータを格納するディメンションです。時間ディメンションはデータ・ウェアハウスで広く使用されます。Warehouse Builderでは、時間ディメンションを作成および移入できます。会計およびカレンダの両方の時間ディメンションを作成できます。
ウィザードを使用して時間ディメンションを作成すると、時間ディメンションの移入を実行するマッピングが作成されます。時間ディメンションにロードされたデータは、時間ディメンションについてWarehouse Builderが推奨するベスト・プラクティスに準拠します。
このトピックには、次の項目が含まれます。
Warehouse Builderには、時間ディメンションを作成するアクセラレータが用意されています。また、時間ディメンションを定義するためのベスト・プラクティスとして一連のルールが指定されています。時間ディメンションの作成ウィザードを使用して時間ディメンションを作成する場合は、これらのルールが順守されます。
ルールは、次のとおりです。
時間ディメンションには、Warehouse Builderによって指定された定義済のレベルのサブセットのみを指定できます。
時間ディメンションの各レベルには、期間と終了日の属性が必要です。
時間ディメンションは1つ以上の階層を保持できます。各階層は会計階層またはカレンダ階層になります。
時間ディメンションをOLAPカタログに配布する場合は、レベルに関連する期間と終了日の記述子を、ディメンションとそのレベルにアタッチする必要があります。時間ディメンションの作成ウィザードを使用して時間ディメンションを作成すると、Warehouse Builderによってこの処理が実行されます。
これらのルールではユーザーのビジネス環境に対して制限が多すぎる場合は、データ・オブジェクト・エディタで時間属性を設定し、独自の時間ディメンションを作成できます。データ・オブジェクト・エディタを使用して時間ディメンションを作成する場合は、記述子を設定してください。
時間ディメンションは、一連のレベルとこれらのレベルに定義される一連の階層で構成されます。ディメンション・ロールは時間ディメンションで広く使用されます。ディメンション・ロールの詳細は、「ディメンション・ロール」を参照してください。時間ディメンションを作成するには、次の要素を定義する必要があります。
レベル
ディメンション属性
レベル属性
階層
レベルはデータの集計レベルを表します。時間ディメンションには少なくとも2つのレベルが必要です。時間ディメンションには1つのレベルを1回のみ使用できます。たとえば、時間ディメンションにはカレンダ月レベルを1つのみ指定できます。各レベルには、サロゲート識別子とビジネス識別子が必要です。サロゲート識別子はIDレベルの属性であることが必要です。
Warehouse Builderの時間ディメンションには、次のレベルのサブセットのみを指定できます。
日
会計年度週
カレンダ週
会計年度月
カレンダ月
会計年度四半期
カレンダ四半期
会計年度
カレンダ年
レベル属性とはレベル値を説明する特性です。時間ディメンションに実装することを決めたレベルに基づいて、Warehouse Builderにより時間ディメンションのレベル属性が作成されます。
表4-7に、Warehouse Builder時間ディメンションの各レベルの属性をリストします。各属性の説明は、付録Bを参照してください。
表4-7 時間ディメンション・レベルの属性
レベル名 | 属性名 |
---|---|
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は、時間ディメンション・ウィザードを使用して作成されたカレンダ時間ディメンションで、Year、MonthおよびDayのレベルがあります。ALL_SALESキューブをロードするためのマップを作成する場合は、TIME_FISCALのDayレベルの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値に変換する必要があります。式演算子の使用方法は、「式演算子」を参照してください。
時間ディメンションは、データを時間ディメンションにロードするマッピングを作成することで移入します。時間ディメンションの作成ウィザードを使用して時間ディメンションを作成すると、時間ディメンションを移入するマッピングが作成されます。時間ディメンションは、次のパラメータの値に基づいて移入されます。
データの開始年
データの年数
会計年度の開始日と開始月(会計時間ディメンションのみ)
会計年度週の開始日(会計時間ディメンションのみ)
会計タイプ(会計時間ディメンションのみ)
これらの属性の値は、時間ディメンションの作成ウィザードを使用して時間ディメンションを作成する時点で初期化されます。これらのパラメータの値は、データ・オブジェクト・エディタを使用して変更できます。カレンダ年の開始日とカレンダ年の年数の値を変更するには、データ・オブジェクト・エディタの「名前」タブを使用します。会計時間ディメンションに関するパラメータの値を変更するには、データ・オブジェクト・エディタの「階層」タブにある「会計の設定」ボタンを使用します。
注意: 時間ディメンションにロードするデータに関するいずれかのパラメータの値を変更する場合は、時間ディメンションをロードするマップを再作成する必要があります。マップの再作成の詳細は、「「階層」タブ」を参照してください。 |
図4-12は、カレンダ時間ディメンションをロードするマッピングを示しています。マッピング入力演算子DATE_INPUTSは、時間ディメンションを移入するために必要な属性を表します。
ユーザーは、時間ディメンションを複数回移入するマップを実行できます。各実行時に、時間ディメンションの移入に必要な属性を指定します。その際、マッピングの実行が以前の実行とオーバーラップする可能性があります。これは、すでに存在するデータを時間ディメンションにロードしようとしたことを意味します。このような場合、レコードが以前の実行ですでに移入されているときは、データは再度移入されません。
たとえば、最初の実行で、2000年から5年間のデータを使用して時間ディメンションを移入したとします。2回目の実行で、2003年から3年間のデータを使用して時間ディメンションを移入しました。2003年の始めから2004年の終わりまでのレコードは時間ディメンションにすでに存在しているため、これらは再作成されません。