ヘッダーをスキップ

Oracle Database 2日でデータ・ウェアハウス・ガイド
11g リリース1(11.1)

E05764-01
目次
目次
索引
索引

戻る 次へ

4 Oracle Warehouse Builderでのウェアハウスの定義

Oracle Warehouse Builderを使用することにより、リレーショナルまたはディメンションのウェアハウスを設計できます。

Oracle Warehouse Builderでは、物理的な実装からディメンションの設計が明示的に区別されます。簡単なクリック操作で、ディメンション・オブジェクトに対してリレーショナル実装または多次元実装のいずれかを選択できます。したがって、リレーショナル・ターゲット・ウェアハウスまたは多次元ウェアハウスとして同じディメンション・オブジェクトを実装できます。

この項では、リレーショナル・ターゲット・ウェアハウスとして実装されるディメンション・モデルを設計する方法を示します。1つのキューブと2つのディメンションで構成される小規模のデータ・ウェアハウスをモデル化します。複合のスノーフレーク・スキーマをモデル化するためにOracle Warehouse Builderを使用できますが、このデモンストレーションの目的のために、2つのディメンションへの外部キー参照がある単一のキューブで構成される1つのスター・スキーマをモデル化します。

この章の内容は次のとおりです。

リレーショナル・ターゲット・ウェアハウスを定義する一般的な手順

リレーショナル・ターゲット・ウェアハウスを定義する手順
  1. 「ウェアハウス・ターゲット・スキーマの指定」の説明に従って、スキーマをウェアハウス・ターゲット・スキーマとして指定します。

  2. ウェアハウス・ターゲット・モジュールにソース・オブジェクトおよびターゲット・オブジェクトを定義またはインポートします。

    一般的に、ウェアハウス・ターゲット・モジュール内のいずれかのノードを右クリックし、「新規」または「インポート」のどちらかを選択します。Oracle Warehouse Builderにより、説明のための適切なウィザードが起動されます。追加情報は、「ヘルプ」をクリックします。

    ウェアハウス・ターゲット・モジュールに追加するオブジェクトのタイプはソース・データおよびデータ・ウェアハウスで実行するものの性質に依存します。

    このガイドで提供されている演習を続行するには、「演習: ターゲット・モジュールへの外部表の追加」および「演習: ディメンションの理解」を参照してください。

  3. 必要に応じて、ソース・オブジェクトおよびターゲット・オブジェクトを構成します。

    いくつかのオブジェクトでは追加構成が必要です。ウェアハウス・モジュールに単一のオブジェクトをインポートまたは定義した後、右クリックして「構成」を選択し、設定を確認して必要に応じて変更します。

後続の手順

ターゲット・ウェアハウスを正常に定義した後、次にソース・データを抽出し、必要に応じて変換し、それをウェアハウスにロードする計画を設計します。

ETL計画の設計については、第5章「ETLロジックの定義」を参照してください。

ウェアハウス・ターゲット・スキーマの指定

従来のデータ・ウェアハウスの実装では、データ・ウェアハウスのターゲットであるターゲット・スキーマは通常1つのみです。ただし、Oracle Warehouse Builderでは、定義したすべてのユーザーにターゲット・スキーマになる可能性があります。したがって、データ・ウェアハウスのターゲット・スキーマになるスキーマを指定する必要があります。

データ・ウェアハウスのターゲット・スキーマとしてスキーマを指定する手順
  1. Oracle Warehouse Builderにスキーマを登録します。

    「グローバル・エクスプローラ」パネルで、「セキュリティ」ノードを開きます。「ユーザー」ノードを右クリックし、「新規」を選択します。

    「ユーザーの作成」ダイアログ・ボックスで、「DBユーザーの作成」を選択し、プロンプトに従います。さらに情報が必要な場合は、「ヘルプ」をクリックします。

    このデモンストレーションでは、新規スキーマを作成し、これをEXPENSE_WHと呼びます。

  2. 新規スキーマの位置情報を指定します。

    接続エクスプローラを右クリックし、「Oracle」ノードの下の「場所」から「新規」を選択します。

    「EXPENSE_WH_LOCATION」という場所を作成します。接続をテストするためのオプションを選択します。

  3. プロジェクト・エクスプローラで、単一のモジュールとスキーマの場所を関連付けます。

    「例: フラット・ファイルからのメタデータのインポート」で、メタデータのインポート元の場所に対応するモジュールを作成しました。同様に、ターゲット・スキーマの場所に対応するモジュールを作成する必要があります。

    OWB_DEMOプロジェクトでは、「データベース」ノードを開き、「新規」を選択します。モジュールを作成するウィザードのプロンプトに従います。モジュールのステータスをWarehouse Targetとして指定することを確認します。

    このデモンストレーションでは、モジュールにEXPENSE_WHという名前を付けます。

  4. 新規のデータ・ウェアハウスのターゲット・スキーマを習熟します。

    プロジェクト・エクスプローラで、新しく定義されたウェアハウス・ターゲット・モジュールのためのノードを開きます。モジュール内に定義またはインポートできるタイプのオブジェクトなど、様々なタイプのオブジェクトがノードの下にリストされます。

Oracle Warehouse Builderのフラット・ファイルのソースについて

ターゲット・モジュールに追加するオブジェクトのタイプは、後で設計するETLロジックに影響を与える場合があります。データ・ソースがフラット・ファイルに由来する場合は、SQL*LoaderコードまたはSQLコードのどちらを生成するか選択できます。コードの各タイプには、固有の利点があります。簡潔に言うと、SQL*Loaderは大量のデータの処理により適している一方、SQLではより広範囲の複合結合および変換が可能です。

Oracle Warehouse BuilderでSQL*Loaderを使用するには、「例: フラット・ファイルからのメタデータのインポート」の説明に従ってフラット・ファイルをインポートします。ただし、SQLを使用するには、「演習: ターゲット・モジュールへの外部表の追加」の説明に従ってウェアハウス・モジュールに外部表を定義する必要があります。

外部表は、Oracle Database(バージョン9i 以上)内のデータベース・オブジェクトです。他のデータベース型または9i リリースより前のOracle Databaseでは外部表を使用できません。

演習: ターゲット・モジュールへの外部表の追加

外部表は、リレーショナル・フォーマット内のフラット・ファイルからのデータを表し、Oracle Warehouse Builderで通常のソース表のように動作する読取り専用の表です。作成する外部表は、既存のフラット・ファイル内のシングル・レコード・タイプに対応します。

この演習での目的は、前にインポートした2つのフラット・ファイルに必要な外部表を作成することです。2つのファイルの両方にシングル・レコード・タイプがあるので、各ファイルに対して外部表を1つのみ作成する必要があります。

ターゲット・ウェアハウス・モジュールに外部表を追加する手順
  1. プロジェクト・エクスプローラで、「データベース」ノード、続いて「Oracle」ノードを開きます。

  2. 外部表を作成するターゲット・モジュールを開きます。

    つまり、EXPENSE_WHモジュールが開かれます。

  3. 「外部表」ノードを右クリックして「新規」を選択します。

    Oracle Warehouse Builderで、外部表を作成するウィザードが表示されます。プロンプトに従います。

    外部表にEXPENSE_CATEGORIESという名前を付けます。フラット・ファイルを選択するように求められた場合は、EXPENSE_CATEGORIES_CSVを選択します。

  4. 前のステップを繰り返し、EXPORT_CSVを表すEXPENSE_DATAと呼ばれる外部表を作成します。

  5. 2つの外部表に対して物理ファイル・システムの詳細を構成します。

    モジュールから1つの外部表を右クリックし、「構成」を選択します。「データファイル」ノードを右クリックし、「作成」を選択します。デフォルト名、NEW_DATAFILE_1を受け入れます。外部表がデータを継承するフラット・ファイルの名前を入力します。したがってデータファイル名は、1つの外部表に対してはexpense_categories.csvとし、もう1つの外部表に対してはexport.csvとします。

ディメンションについて

ディメンションは、データを編成する構造です。一般的に使用されるディメンションの例には、顧客、時間および製品があります。

リレーショナル・ディメンションの場合は、ディメンションの使用によって、問合せパフォーマンスが向上します。これは、ユーザーが既知の階層をドリルダウンしてデータを分析することがよくあるためです。階層の例には、年、四半期、月、日という時間階層があります。Oracle Databaseでは、詳細表ではなくマテリアライズド・ビューからデータを取り出す問合せをリライトして、これらの定義済階層を使用します。

一般的なリレーショナル・ディメンション表には、次の特徴があります。

ディメンションは、一連のレベルと、これらのレベルに定義されている一連の階層で構成されます。ディメンションを作成する際は、次の内容を定義する必要があります。

演習: ディメンションの理解

ディメンションの基本概念および設計を理解するには、この演習で事前定義のディメンションを確認します。

ディメンションの理解を深めるための手順
  1. データ・オブジェクト・エディタでPRODUCTSディメンションを開きます。

    「プロジェクト・エクスプローラ」パネルで、「OWB_DEMO」、「データベース」、「Oracle」、「SALES_WH」にナビゲートして、「ディメンション」を開きます。「PRODUCTS」をダブルクリックします。

    Oracle Warehouse Builderはデータ・オブジェクト・エディタを起動します。データ・オブジェクト・エディタは、様々なデータベースまたはディメンション・オブジェクトの設計、作成および管理が簡単にできる単一インタフェースです。

  2. ディメンション属性を監視します。

    ディメンション属性は、ディメンション・メンバーの記述特性です。ディメンション属性には、名前とデータ型があり、ディメンション内の1つ以上のレベルに適用できます。これらは、データを格納するためのレベル属性として実装されます。

    ディメンション属性のリストには、ディメンション内のあらゆるレベルに必要なすべての属性が含まれる必要があります。

    たとえば、PRODUCTSディメンションには、説明というディメンション属性があります。この属性は、すべてのレベルの合計、グループおよび製品に適用でき、その中には、これらのレベルの各メンバーに対する説明が格納されます。

  3. レベルを監視します。

    ディメンションのレベルは、データの集計レベルを表します。ディメンションには、少なくとも1つのレベルが含まれている必要があります。ただし、値ベース階層が含まれるディメンションは除きます。各レベルには、レベル属性およびレベル識別子が必要です。

    たとえば、PRODUCTSディメンションには、合計、グループおよび製品のレベルを設定できます。

  4. 追加の演習として、次のWebサイトのOracle By Exampleを参照してTIMEディメンションおよび通常のディメンションを作成できます。

    http://www.oracle.com/technology/obe/10gr2_owb/owb10gr2_gs/owb/lesson3/relational-wh-03.htm

レベルについて

各レベルには、サロゲート識別子とビジネス識別子の2つの識別子が必要です。ディメンションを作成するときは、そのディメンションのサロゲート識別子およびビジネス識別子(複合ビジネス識別子の場合は属性)としてマーク付けされたディメンション属性が、各レベルで実装される必要があります。

サロゲート識別子は、ディメンションのすべてのレベルにまたがって、各レベルのレコードを一意に識別します。この識別子は、単一の属性で構成する必要があります。サロゲート識別子を使用すると、ファクトを最下位ディメンション・レベルのみでなく、どのディメンション・レベルにもフックできます。

リレーショナル実装を使用しているディメンションの場合、サロゲート識別子のデータ型はNUMBERであることが必要です。サロゲート識別子の値は、すべてのディメンション・レベルにまたがって一意である必要があるため、すべてのディメンション・レベルのサロゲート識別子を同じ順序を使用して生成します。

リレーショナル実装の場合、サロゲート識別子は次の目的を果します。

ビジネス識別子はユーザーが選択する属性リストで構成されます。ビジネス識別子は、特定のレベルで一意であることが必要であり、常にデータ・ソースの自然キーから導出されます。ビジネス識別子はメンバーを一意に識別します。たとえば、製品レベルのビジネス識別子として統一商品コード(UPC)を使用できます。UPCは、各商品に対応する一意のコードです。

ビジネス識別子は、次のように機能します。

ディメンションに子レベルを移入する場合は、その親レベルのビジネス識別子を指定する必要があります。キューブを移入する場合は、そのキューブが参照するディメンション・レベルのビジネス識別子を指定する必要があります。

親識別子は、値ベース階層の親参照に注釈を付けるために使用されます。

たとえば、値ベース階層のEMPLOYEEディメンションに、ID、FIRST_NAME、LAST_NAME、EMAIL、PHONE、JOB_ID、HIRE_DATEおよびMANAGER_IDのディメンション属性があるとします。このディメンションでは、IDがサロゲート識別子で、MANAGER_IDが親識別子です。

レベル属性の定義

レベル属性とはレベル・メンバーを説明する特性です。ディメンションの各レベルには一連のレベル属性があります。レベル属性を定義するには、そのレベルで実装するディメンション属性を単純に選択します。レベル属性には個別名とデータ型があります。データ型は、そのレベル属性に実装されているディメンション属性から継承されます。レベル属性の名前は、実装されているディメンション属性の名前とは異なる名前に変更できます。

すべてのレベルは、一連のディメンション属性のサロゲート識別子およびビジネス識別子としてマークされた属性を実装する必要があります。

階層の定義

ディメンション階層は、データの編成方法として、順序付けされたレベルまたは一連のデータ値(値ベース階層の場合)を使用する論理構造です。階層構造は一連のレベルの親子関係を説明します。レベル・ベース階層には少なくとも1つのレベルが必要です。複数の階層の一部を1つのレベルにできます。

たとえば、TIMEディメンションには次の2つの階層が指定されます。

会計階層: 会計年度 > 会計年度四半期 > 会計年度月 > 会計年度週 > 日

カレンダ階層: カレンダ年 > カレンダ四半期 > カレンダ月 > 日

すべての階層は、完全な1対nの関係になります。親レベルの1つのレコードは子レベルの複数のレコードに対応します。一方、子レベルの1つのレコードは階層内で1つの親レコードにのみ対応します。

ディメンション・ロール

ディメンション・ロールとはディメンションの別名です。データ・ウェアハウスでは、キューブが同じディメンションを複数回参照する場合、参照する都度そのディメンションを格納する必要はありません。同じディメンションに対する複数回の参照は混乱の原因となります。そこで、ディメンションを参照するたびに別名を作成することで、結合を瞬時に理解できるようになります。このような場合は、同じディメンションがキューブ内の異なるディメンション・ロールを実行します。

たとえば、売上レコードには次の3つの時間値があります。

3つのTIMEディメンションを作成し、それらのディメンションにデータを移入するかわりに、ディメンション・ロールを使用できます。1つのTIMEディメンションのモデルを作成し、そのディメンションに3つのロール(受注記帳時間、受注出荷時間、受注履行時間)を作成します。SALESキューブでは、受注時間、出荷時間および受注履行時間のディメンションを参照できます。

ディメンションがデータベースに格納される場合は、1つのディメンションのみが作成され、このディメンションを各ディメンション・ロールが参照します。一方、ディメンションがOLAPカタログに格納される場合は、Oracle Warehouse Builderによって、各ディメンション・ロールに1つのディメンションが作成されます。したがって、TIMEディメンションに3つのロールがある場合、OLAPカタログには3つのディメンションが作成されます。ただし、3つのディメンションはすべて同一の基礎となる表にマッピングされます。これは、OLAPカタログがディメンション・ロールをサポートしていないための対策です。


注意:

ディメンション・ロールは、リレーショナル実装を持つディメンションに対してのみ作成できます。 


レベルの関係

レベルの関係とは、ディメンション階層内のレベル間のアソシエーションです。レベルの関係は、階層内の親レベルへの参照を格納するレベル属性を使用して実装されます。

たとえば、PRODUCTSディメンションに「合計 > グループ > 製品」という階層があるとします。Oracle Warehouse Builderでは、2つのレベルの関係(製品からグループ、グループから合計)が作成されます。2つの新しい属性には、このレベルの関係(製品レベルでの関係とグループ・レベルでの関係)が実装されます。これらの属性には、親レベルのサロゲートIDが格納されます。

ディメンションの例

ディメンションの一例として、製品データの編成に使用するPRODUCTSディメンションを紹介します。表4-1に、PRODUCTSディメンションの各レベルと、ディメンション内の各レベルのサロゲート識別子とビジネス識別子をリストします。

表4-1    PRODUCTSディメンションのレベルの詳細 
レベル  属性名  識別子 

合計 

ID 

サロゲート 

 

名前 

ビジネス 

 

説明 

 

グループ 

ID 

サロゲート 

 

名前 

ビジネス 

 

説明 

 

製品 

ID 

サロゲート 

 

UPC 

ビジネス 

 

名前 

 

 

説明 

 

 

パッケージ・タイプ 

 

 

パッケージ・サイズ 

 

PRODUCTSディメンションの階層は、次のとおりです。

階層1: 合計 > グループ > 製品

制御行

Oracle Warehouse Builderにより、ファクト・データを各レベルのディメンションにリンクできるコントロール行が作成されます。たとえば、TIMEディメンションを2つの異なるキューブで再利用して、予算データを月レベルで記録し、実際のデータを日レベルで記録する場合などです。ディメンションはコントロール行と一緒にロードされるため、追加定義をすることなくこれを実行できます。ディメンション階層の各メンバーは、単一のレコードを使用して表示されます。

すべての制御行には-2から始まる負のディメンション・キー値があります。上位レベルのレベル値では行が生成され、ファクト表に対して一意でリンクする行として動作できます。このリンクの下位レベルまたは制御行は無効化されます。

「ディメンションの例」で説明されているPRODUCTSディメンションを考慮します。4つの製品カテゴリを含む表からデータをこのディメンションにロードします。Oracle Warehouse Builderは表4-2に示されるディメンションに制御行を挿入します。これらの行によりどのディメンション・レベルでもキューブにリンクできます。表にはすべてのディメンション属性値が含まれるわけではありません。

表4-2    PRODUCTSディメンションに作成された制御行 
ディメンション・キー  合計名  カテゴリ名  製品名 

-3 

TOTAL 

 

 

-9 

TOTAL 

ハードウェア 

 

-10 

TOTAL 

ソフトウェア 

 

-11 

TOTAL 

エレクトロニクス 

 

-12 

TOTAL 

周辺機器 

 

ディメンション内の行の実数を取得するには、NULL行を除いたWHERE句を含む行の数を数えます。たとえば、「製品」上の数を取得するには、「製品」内のNULL行を除いたWHERE句を含む行の数を数えます。

ディメンションの実装

ディメンションの実装とは、ディメンションおよびそのデータを物理的に格納する方法を指定することです。Oracle Warehouse Builderによって、ディメンション・オブジェクトに対して複数のタイプの実装(多次元実装を含む)を行うことができます。ただし、このガイドでは、リレーショナル実装についてのみ説明します。

スター・スキーマ

スター・スキーマ実装では、Oracle Warehouse Builderによって単一の表にディメンション・データが格納されます。同じ表またはビューに複数のディメンション・レベルのデータが格納されるため、表にディメンション・キーの列を指定する必要があります。ディメンション・キーの列は、ディメンションの主キーです。この列はキューブの外部キー参照も形成します。

各レベルには、ディメンション属性のサブセットが実装されます。デフォルトでは、レベル属性の名前はディメンション属性の名前と同じです。すべてのレベルのデータが同じ表に格納されることで生じる名前の衝突を回避するため、Oracle Warehouse Builderでは、スター表の名前の指定に、次のガイドラインが使用されます。

たとえば、スター・スキーマを使用してPRODUCTSディメンションを実装する場合、Oracle Warehouse Builderは単一の表を使用し、ディメンションにすべてのレベルを実装します。

図4-1は、PRODUCTSディメンションのスター・スキーマ実装を示しています。すべてのレベルの属性が、PRODUCTSという1つの表のそれぞれの列にマッピングされています。DIMENSION_KEYという列に、ディメンションのサロゲートIDが格納されています。この列は表の主キーです。

図4-1    PRODUCTSディメンションのスター・スキーマ実装


画像の説明

バインド

バインドを実行する場合は、各属性のデータおよびディメンション内のレベルの関係を格納するデータベース列を指定します。ディメンションに対して自動バインドまたは手動バインドを実行できます。

自動バインド

自動バインドを実行すると、Oracle Warehouse Builderによって、ディメンション・オブジェクトの属性がそのデータを格納するデータベース列にバインドされます。自動バインドを初めて実行するときは、ディメンション・データの格納に使用される表も作成されます。

すでにバインド済のディメンションに対して自動バインドを実行すると、Oracle Warehouse Builderでは次のルールが使用されます。

自動バインドを実行する手順
  1. プロジェクト・エクスプローラで、ディメンションを右クリックして「エディタを開く」を選択します。

    このディメンションのデータ・オブジェクト・エディタが表示されます。

  2. 「ディメンショナル」タブで、「ディメンション」ノードを右クリックして「バインド」を選択します。

    あるいは、キャンバスで「ディメンション」ノードを選択し、「オブジェクト」メニューから「バインド」を選択します。

    「バインド」オプションが有効になっていない場合は、ディメンションがリレーショナル・ディメンションであるかどうか、また「手動」オプションが「記憶域」タブの「実装」セクションで設定されていないかどうかをチェックします。

「スター・スキーマ」に説明されているように、自動バインドによって実装設定が使用されます。

手動バインド

通常は、手動バインドを使用して既存の表をディメンションにバインドします。自動バインドまたは再バインドが不要な場合は、手動バインドを使用します。

ディメンションの手動バインドを実行する手順
  1. ディメンション・データの格納に使用する実装オブジェクト(表またはビュー)を作成します。

    リレーショナル・ディメンションの場合は、ディメンションのサロゲート識別子のロードに使用する順序を作成します。既存の順序を使用することもできます。

  2. プロジェクト・エクスプローラで、ディメンションを右クリックして「エディタを開く」を選択します。

    そのディメンションのデータ・オブジェクト・エディタが表示されます。キャンバスでは「ディメンショナル」タブがアクティブになります。

  3. ディメンションを右クリックして「詳細の表示」を選択します。

    Oracle Warehouse Builderによって、ディメンションと同じ名前の新しいタブが表示されます。

  4. パレットから、実装オブジェクトを表す演算子をキャンバスにドラッグ・アンド・ドロップします。

    Oracle Warehouse Builderによって、「新規または既存の<オブジェクト>を追加」ダイアログ・ボックスが表示されます。たとえば、ディメンション・データが表に格納されている場合は、パレットからキャンバスに表演算子をドラッグ・アンド・ドロップすると、「新規または既存の表を追加」ダイアログ・ボックスが表示されます。

  5. 「既存の<オブジェクト>を選択」オプションを選択し、選択ツリーに表示されるオブジェクトのリストからデータ・オブジェクトを選択します。

  6. 「OK」をクリックします。

    追加したオブジェクトを表すノードがキャンバスに表示されます。

  7. ディメンション・データの格納に複数のデータ・オブジェクトが使用される場合は、各データ・オブジェクトについてステップ4から6を実行します。

  8. ディメンションの各レベルの属性を、そのデータを格納する列にマッピングします。そのためには、ディメンション属性の上でマウスを押したまま、属性値を格納する列にドラッグ・アンド・ドロップします。

    レベルの関係も、そのデータを格納するデータベース列にマッピングします。

    たとえば、「ディメンションの例」に記載されているPRODUCTSディメンションの場合、PRODUCTSディメンションのグループ・レベルの名前属性は、Products_tab表のGroup_name属性に格納されます。名前属性の上でマウスを押したまま、Products_tab表のGroup_name属性にドラッグ・アンド・ドロップします。

キューブについて

キューブには、メジャーおよび1つ以上のディメンションへのリンクが含まれます。キューブの軸にはディメンション・メンバーが組み込まれ、キューブの本体にはメジャーの値が格納されます。ほとんどのメジャーは加法的なメジャーです。たとえば、売上データは、キューブ・エッジに時間、製品および顧客のディメンション値が指定され、キューブ本体にバリュー売上とドル売上のメジャーから値が格納されるキューブに編成できます。

キューブは、外部キー制約によってディメンション表にリンクされます。これらの制約は、データ整合性が最も重要とされるデータ・ウェアハウス環境には不可欠です。この制約によって、データ・ウェアハウスを使用する日常業務での参照整合性が順守されます。

データ分析アプリケーションでは、通常、多くのディメンションにわたってデータが集計されます。これによって、データの変則的または特異なパターンを確認できます。キューブの使用は、この種の操作を実行する最も効率的な方法です。リレーショナル実装で、ウェアハウス・キーが設定されているディメンションを設計する場合、キューブの行の長さは一般的に短くなります。これは、ウェアハウス・キーの長さが対応する本来のデータより短いためです。その結果、キューブ・データに必要な記憶領域は少なくなります。

一般的なキューブには、次の要素が含まれます。

キューブの定義

キューブは、一連のディメンションにわたって定義されたメジャーの集合で構成されます。キューブを作成するには、次の要素を定義する必要があります。

キューブ・メジャー

メジャーとは、調査および分析可能なデータで、通常は加法的な数値になります。メジャーの例としては、売上、原価および収益があります。キューブには、1つ以上のディメンションが必要です。メジャーの集計も可能です。ただし、集計できるのは数値メジャーのみです。

キューブのディメンション

キューブは一連のディメンションで定義されます。キューブはディメンション内で最下位レベル以外のレベルを参照できます。

純粋なリレーショナル実装を使用するキューブでは、ディメンション・ロールによって、複数回同じディメンションを再使用できます。ディメンション・ロールの詳細は、「ディメンション・ロール」を参照してください。

キューブを有効にする前に、キューブが参照するディメンションすべてが有効になっていることを確認してください。

ディメンション参照を定義する場合に指定する要素

キューブの例

SALESキューブには、集計された売上データが格納されます。このキューブにはValue_salesおよびDollar_salesという2つのメジャーが含まれています。

表4-3に、SALESキューブのディメンションを示します。この表には、キューブが参照するディメンションの名前とディメンションのレベルがリストされています。

表4-3    SALESキューブのディメンション 
ディメンション名  レベル名 

Products 

製品 

Customers 

顧客 

Times 

日 

キューブの実装

キューブを実装する際は、キューブの物理的な記憶域の詳細を指定します。ディメンションの場合と同様に、Oracle Warehouse Builderによって、リレーショナル形式または多次元形式でキューブを実装できます。このガイドでは、リレーショナル実装について説明します。

キューブのリレーショナル実装

キューブ・データの格納に使用するデータベース・オブジェクトは、ファクト表と呼ばれます。キューブは1つのファクト表のみを使用して実装する必要があります。ファクト表にはキューブのメジャーおよびディメンション参照の列が含まれます。

キューブを実装する手順

図4-2に、SALESキューブのリレーショナル実装のバインドを示します。SALESキューブのデータはSALESという表に格納されます。

図4-2    SALESキューブの実装


画像の説明

バインド

バインドを実行する場合は、キューブのメジャーとディメンション参照の各データを格納するデータベース列を指定します。キューブに対して自動バインドまたは手動バインドを実行できます。

自動バインド

自動バインドを実行すると、Oracle Warehouse Builderによって、キューブ・データを格納する表が作成され、キューブのメジャーおよび参照がデータベースの列にバインドされます。自動バインドを実行する手順の詳細は、「自動バインド」を参照してください。

キューブの自動バインドを実行する場合は、キューブが参照するディメンションを自動バインドした後に、キューブを自動バインドします。キューブが最後に自動バインドされた後に、そのキューブによって参照されるディメンションが自動バインドされた場合は、キューブを配布できません。

たとえば、TIMESディメンションとPRODUCTSディメンションを参照するSALESキューブを作成し、そのキューブの自動バインドを実行したとします。その後、PRODUCTSディメンションの定義を変更しました。ここで、再度SALESキューブを自動バインドしようとすると、Oracle Warehouse Builderによってエラーが生成されます。最初にPRODUCTSディメンションを自動バインドした後に、キューブを自動バインドする必要があります。

手動バインド

手動バインドでは、最初にキューブ・データを格納する表またはビューを作成し、次にそのデータを格納するデータベースの列にキューブの参照およびメジャーをマッピングする必要があります。あるいは、既存のデータベース表またはビューを使用して、キューブ・データを格納することもできます。

キューブの手動バインドを実行する手順
  1. キューブ・データを格納する表またはビューを作成します。

  2. プロジェクト・エクスプローラで、キューブを右クリックして「エディタを開く」を選択します。

    そのキューブのデータ・オブジェクト・エディタが開きます。キャンバスでは「ディメンショナル」タブがアクティブになります。

  3. キューブを右クリックして「詳細の表示」を選択します。

    Oracle Warehouse Builderによって、キューブと同じ名前の新しいタブが表示されます。

  4. パレットから、実装オブジェクトを表す演算子をキャンバスにドラッグ・アンド・ドロップします。

    Oracle Warehouse Builderによって、「新規または既存の<オブジェクト>を追加」ダイアログ・ボックスが表示されます。たとえば、キューブ・データが表に格納されている場合は、パレットからキャンバスに表演算子をドラッグ・アンド・ドロップすると、「新規または既存の表を追加」ダイアログ・ボックスが表示されます。

  5. 「既存の<オブジェクト>を選択」オプションを選択し、選択ツリーに表示されるオブジェクトのリストからデータ・オブジェクトを選択します。

  6. 「OK」をクリックします。

    追加したオブジェクトを表すノードがキャンバスに表示されます。

  7. キューブのメジャーとディメンション参照をキューブ・データが格納される列にマッピングします。そのためには、メジャーまたはディメンション参照をマウス・ボタンで押したまま、そのメジャーまたはディメンション参照を格納するデータ・オブジェクト属性にドラッグ・アンド・ドロップします。


戻る 次へ
Oracle
Copyright © 2007 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引