3 ディメンションとキューブの作成
この章では、Analytic Workspace Managerを使用したデータ・モデルの設計方法およびディメンションとキューブの作成方法を説明します。次の項目が含まれます。
データの次元モデルの設計
第1章では、各種次元オブジェクト(キューブ、メジャー、ディメンション、レベル、階層、属性)の概要を説明しました。この章では、これらをOracle Databaseで定義する方法について説明しますが、その前に、作成する次元モデルについて決定する必要があります。使用するメジャーやディメンションを決めたり、データのディメンションと属性をどのように区別するかを決めます。次元モデルの設計は、紙と鉛筆を使用したり、データベース設計ソフトウェア・パッケージを利用したりするなど、各自に合った方法で行うことができます。
ソース・データがスター・スキーマまたはスノーフレーク・スキーマに格納されている場合、次元モデルの要素は次のように決まります。
-
ファクト表は、キューブに対応する。
-
ファクト表のデータ列は、メジャーに対応する。
-
ファクト表の外部キー制約は、ディメンション表に対応する。
-
ディメンション表は、ディメンションに対応する。
-
ディメンション表の主キーは、ベース・レベルのディメンション・メンバーに対応する。
-
ディメンション表の親列は、上位レベルのディメンション・メンバーに対応する。
-
ディメンション・メンバーの説明や特性が格納されているディメンション表の列は、属性に対応する。
ソース・データを基にして現在生成されているレポートを検討することにより、次元モデルの構成を把握することもできます。これらのレポートから、レポート利用者にとって必要な集計レベルや、データを絞り込む際に使用する属性を特定できます。
ソース・データを調査するときに、作成しようとしている次元モデルとの一致度がより高いリレーショナル・ビューを作成することもできます。
関連項目:
ディメンション・オブジェクトの概要は、「ディメンション・データ・モデルの概要」を参照してください
Globalアナリティック・ワークスペースのディメンション・モデルの作成事例は、「ディメンション・モデルの設計」を参照してください
Analytic Workspace Managerの概要
Analytic Workspace Managerは、Oracle Database内の次元オブジェクトを作成、構築および管理するためのメイン・ツールです。Analytic Workspace Managerを使用する目的は、ビジネス分析をサポートする次元データ・ストアを構築することです。このデータ・ストアは単独で利用できますが、リレーショナル・データ・ウェアハウスの一部としてサマリー・データを格納することもできます。
次元オブジェクトの作成には、データの物理的な変換が伴います。この変換の最初のステップでは、キューブ、メジャー、ディメンション、レベル、階層および属性を定義します。その後で、次元オブジェクトをリレーショナル・データソースにマップします。データは、データ・ロード・プロセスによってリレーショナル形式から次元形式に変換されます。
Analytic Workspace Managerでは、次の作業を行うことができます。
-
データの次元モデルの構築
-
次元オブジェクトとしてのモデルのインスタンス化
-
リレーショナル表から次元オブジェクトへのデータのロード
-
情報量の多い計算の定義。
-
データベース・リフレッシュ・システムで使用できるマテリアライズド・ビューの作成
-
次元オブジェクトのリレーショナル・ビューの自動生成
-
表
-
ビュー
-
シノニム
データをディメンションやキューブにロードするためには、リレーショナル・データソースに対するSELECT
権限が必要です。この章では、スター・スキーマやスノーフレーク・スキーマなど、次元オブジェクトをサポートしているリレーショナル・スキーマをすでに所有しているものと仮定します。
図3-1に、Analytic Workspace Managerのメイン・ウィンドウを示します。このウィンドウには、メニュー、ツールバー、ナビゲーション・ツリーおよびプロパティ・シートがあります。ナビゲーション・ツリーでオブジェクトを選択すると、右側のプロパティ・シートにそのオブジェクトの詳細情報が表示されます。オブジェクトを右クリックすると、そのオブジェクトに対する適切なアクションを選択できるメニュー項目が表示されます。
Analytic Workspace Managerには、状況依存ヘルプを含む完全なオンライン・ヘルプ・システムがあります。
Analytic Workspace Managerを使用した次元データ・ストアの作成
アナリティック・ワークスペースとは、関連するキューブを格納するためのコンテナです。ディメンションやキューブなどの次元オブジェクトは、アナリティック・ワークスペース内で作成します。
アナリティック・ワークスペースを作成するには、次の手順を実行します。
-
Analytic Workspace Managerを開き、この目的で定義されているユーザーとしてデータベース・インスタンスに接続します。
-
次の手順で、データベースにアナリティック・ワークスペースを作成します。
-
データのディメンションを定義します。
ディメンションの作成を参照してください。
-
データのキューブを定義します。
キューブの作成を参照してください。
-
キューブとディメンションにデータをロードします。
「キューブへのデータのロード」を参照してください。
これらの手順を完了すると、リレーショナル表またはビューからフェッチされたディテール・データが移入されたアナリティック・ワークスペースが作成されます。また、サマリー・データおよび計算済メジャーも作成されます(該当する手順を実行した場合)。
次元オブジェクトへの機能の追加
基本手順に付け加える形で、キューブに次の機能を追加できます。
-
作成処理をカスタマイズするためのカスタム・キューブ・スクリプトを作成する。
「カスタム・キューブ・スクリプトの作成および実行」を参照してください。
-
自動リフレッシュやクエリー・リライトを実行できるマテリアライズド・ビューを生成する。
「キューブへのマテリアライズド・ビュー機能の追加」を参照してください。
-
メタデータおよび属性値の翻訳を追加することで、複数の言語をサポートする。
「複数減のサポート」を参照してください。
-
エンド・ユーザーが簡単にアクセスできるように、メジャー・フォルダを定義する。
「メジャー・フォルダの定義」を参照してください。
Analytic Workspace Managerで変更内容が保存されるタイミング
Analytic Workspace Managerは、ユーザーがアナリティック・ワークスペースに対して加えた変更を自動的に保存します。ユーザーが明示的に変更内容を保存する必要はありません。
次のような操作を行ったときに、保存が実行されます。
-
ダイアログ・ボックス内の「OK」またはこれと同等のボタンをクリックする。
たとえば、「ディメンションの作成」ダイアログ・ボックス内の「作成」をクリックすると、ディメンションがデータベースにコミットされます。
-
プロパティ・シートで「適用」をクリックする。
たとえば、オブジェクトの「一般」プロパティ・ページでラベルを変更した場合、「適用」をクリックしたときに変更が有効になります。
ディメンションの作成
ディメンションは、データを識別および分類する一意の値のリストです。これらのディメンションによって、キューブのエッジおよびキューブ内のメジャーのエッジが形成されます。レポートでは、ディメンションの値(またはディメンションの値の説明属性)によって、行と列のラベルが指定されます。
次の一般形式のディメンションを定義できます。
-
親子関係を使用してメンバーをレベルにグループ化するレベルベース・ディメンション。ほとんどのディメンションがレベルベースです。
-
メンバー間に親子関係が存在するが、それが意味のあるレベルを形成しない値ベース・ディメンション。
-
レベルまたは階層を持たないリスト・ディメンションまたはフラット・ディメンション。
ディメンションは、ユーザー・ディメンション、Timeディメンションまたはメジャー・ディメンションとして定義します。ディテール・レベルのディメンションの値は、通常、ファクト表の一意キーに対応します。メジャー・ディメンションはディメンション・メンバーとしてメジャーを持ちます。
この項の内容は次のとおりです。
ディメンションの要件
ディメンションは次の要件を満たしている必要があります。
ディメンション・メンバーが一意である必要性
各ディメンション・メンバーは、一意の値でなければなりません。データの内容によっては、リレーショナル・ソースの自然キーまたはサロゲート・キーをメンバーに使用するディメンションを作成できます。すべてのレベルにおいて値が一意であるかどうか確信できない場合は、デフォルトで選択されるサロゲート・キーを使用してください。
-
ソース・キーは、リレーショナル・ソースから変更されることなくそのまま読み込まれます。ソース・データとまったく同じキーを使用するには、その値がすべてのレベルを通じて一意でなければなりません。各レベルは、異なるリレーショナル列にマップされる場合もあるため、ソース・データではこの一意性が保証されない場合もあります。たとえば、あるディメンション表のDay列に
1
から366
の値があり、Week列に1
から52
の値があるとします。この場合、一意性を保証する手段を講じないと、Dayの52までの値はWeek列の値によって上書きされます。 -
サロゲート・キーでは、アナリティック・ワークスペースにメンバーをロードする際、レベル名を接頭辞としてメンバー名に追加することによって、一意性を保証します。前述の例で言うと、サロゲート・キーは、
1
という単一のディメンション・メンバーを作成するのではなく、DAY_1
とWEEK_1
という2つのディメンション・メンバーを作成します。サロゲート・キーを持つディメンションは、少なくとも1つのレベルベース階層を使用して定義する必要があります。
Analytic Workspace Managerでは、ユーザーが特に指定しないかぎりはサロゲート・キーが作成されます。
ディメンションの作成
この項では、標準的なUserまたはTimeディメンションの作成方法について説明します。メジャー・ディメンションの作成方法は、「メジャー・ディメンションの作成」を参照してください。
ディメンションを作成するには、次の手順を実行します。
-
目的のアナリティック・ワークスペースのフォルダを開きます。
-
「ディメンション」を右クリックし、「ディメンションの作成」を選択します。
「ディメンションの作成」ダイアログ・ボックスが表示されます。
-
「一般」タブに必要な情報を入力します。
-
ソース表のキーがすべてのレベルにおいて一意である場合は、「実装の詳細」タブでデフォルトの設定を変更できます。
-
「作成」をクリックします。
ディメンションが「ディメンション」のサブフォルダとして表示されます。
図3-2は、Productディメンションの作成画面です。
レベルの作成
通常、ビジネス分析では、データはレベル単位で集計されます。たとえば、トランザクション・データベースの日次スナップショットがデータベースに格納されているとします。日はベース・レベルです。週次、四半期、年次レベルでこのデータをまとめる場合があります。
レベルは、親子関係または1対多関係を持ち、これらがレベルベース階層を形成します。たとえば、各週は7日間を集計したもの、各四半期は13週間を集計したもの、各年は4四半期を集計したものです。このような階層構造により、分析者は、高いレベルでなんらかの傾向を発見したら、より低いレベルへとドリルダウンして、その傾向を形成している要因を確認できます。
定義するレベルごとに、そのレベルのディメンション・メンバーのデータソースを指定する必要があります。すべてのレベルのメンバーが、同じディメンションに格納されます。前述の例で言うと、Timeディメンションには、週、四半期および年のメンバーが格納されます。
次の手順で、レベルを作成します。
-
目的のディメンションのフォルダを開きます。
-
「レベル」を右クリックし、「レベルの作成」を選択します。
「レベルの作成」ダイアログ・ボックスが表示されます。
-
「レベルの作成」ダイアログ・ボックスの「一般」タブに必要な情報を入力します。
-
「作成」をクリックします。
レベルが「レベル」フォルダ内の項目として表示されます。
ヒント:
「ディメンションの作成」ダイアログ・ボックスの「レベル」タブでレベルを作成することもできます。
図3-3は、ProductディメンションのClassレベルの作成画面です。
階層の作成
ディメンションは、1つ以上の階層を持つことができます。レベルベース階層または値ベース階層を使用できます。
レベルベース階層
ほとんどの階層はレベルベースです。Analytic Workspace Managerでは、次の一般的なタイプのレベルベース階層がサポートされています。
-
通常階層は、1つ以上の集計レベルで構成されます。メンバーは、多対1の関係における次に高いレベルにロールアップされ、これらのメンバーがその次に高いレベルにロールアップされ、最終的にトップ・レベルまでロールアップされます。
-
不規則階層には、異なるベースを持ち、階層の「不規則な」ベース・レベルを形成するメンバーが1つ以上含まれます。不規則階層はキューブ・マテリアライズド・ビューではサポートされません。
-
スキップレベル階層には、複数の高いレベルに親を持ち、階層に欠落部分を作成するメンバーが1つ以上含まれます。スキップレベル階層の例としては、少なくとも1つの都市がその親として国を持つ(アメリカ合衆国におけるワシントン市など)都市-州-国という階層があげられます。
リレーショナル・ソース表では、スキップレベル階層はレベル列にNULLを含む場合があります。スキップレベル階層はキューブ・マテリアライズド・ビューではサポートされません。
通常、1つのディメンションに対する複数の階層は、ベースレベルのディメンション・メンバーを共有して、別個の階層に分岐します。これらの階層ですべて同一のベース・メンバーが使用され、同一の集計演算子が使用される場合は、これらの階層で最上位レベルを共有できます。それ以外の場合は、別個の集計値を格納するために、別個の最上位レベルが必要です。たとえば、Customerディメンションには、すべてのベース・レベルの顧客を格納し、共通の最上位レベルに集計される、複数の階層を作成できます。一方、Calendar階層とFiscal階層を持つTimeディメンションの場合は、Calendar Yearレベル(1月から12月まで)とFiscal Yearレベル(7月から6月まで)に分けて集計する必要があります。これらの階層では使用されるベース・レベル・メンバーが異なるためです。
値ベース階層
親子関係を含むが、レベルをサポートしないディメンションも存在します。たとえば、従業員ディメンションは、各従業員の上司を識別する親子関係を含みます。しかし、第1レベルの上司、第2レベルの上司、第3レベルの上司などをグループ化するレベルは分析にとって意味がありません。同様に、明細項目ディメンションが、意味のあるレベルにグループ化できないメンバーを含む場合もあります。このような場合は、指定されたレベルを持たない、親子関係で定義された値ベース階層を作成できます。サロゲート・キーはレベルの名前を使用して形成されるため、値ベース階層は、ソース・キーを使用するディメンションに対してのみ作成できます。
次の手順で、階層を作成します。
-
目的のディメンションのフォルダを開きます。
-
「階層」を右クリックし、「階層の作成」を選択します。
「階層の作成」ダイアログ・ボックスが表示されます。
-
「階層の作成」ダイアログ・ボックスの「一般」タブに必要な情報を入力します。
「ヘルプ」をクリックすると、各項目の詳細を参照できます。
-
「作成」をクリックします。
階層が「階層」フォルダ内の項目として表示されます。
図3-4は、ProductディメンションのPrimary階層の作成画面です。
属性の作成
自動的に定義される属性
Analytic Workspace Managerでは、ディメンションの作成時に一部の属性が自動的に作成されます。これらの属性は一意の型(「詳細な説明」など)を持ちます。
すべてのディメンションは、詳細な説明および簡単な説明付きで作成されます。ソース表に詳細な説明および簡単な説明が含まれている場合は、属性を対応する列にマップできます。ただし、ソース表に含まれている説明が1セットのみである場合は、説明属性を1つのみ作成してマップします。詳細な説明属性と簡単な説明属性の両方を同じ列にマップすると、データは2回ロードされます。
Timeディメンションは、期間属性および終了日属性付きで作成されます。この情報は、Timeディメンションのすべてのメンバーに対して指定する必要があります。
ユーザー定義の属性
ディメンション・メンバーに関する補足的な情報(顧客の住所や電話番号、製品の色やサイズなど)を示す、ユーザー定義の属性を追加することもできます。
次の手順で、属性を作成します。
-
目的のディメンションのフォルダを開きます。
-
「属性」を右クリックし、「属性の作成」を選択します。
「属性の作成」ダイアログ・ボックスが表示されます。
-
「属性の作成」ダイアログ・ボックスの「一般」タブに必要な情報を入力します。
すべてのディメンション・メンバーに適用される属性と、1つのレベルにしか適用されない属性があります。「属性を適用」ボックスで選択する項目に応じて、属性を1つの列にマッピングするか、複数の列にマッピングするかを制御できます。
「ヘルプ」をクリックすると、各項目の詳細を参照できます。
-
デフォルトのデータ型は
VARCHAR2
ですが、別のデータ型に変更する場合は「実装の詳細」タブで設定します。 -
「作成」をクリックします。
属性が「属性」フォルダ内の項目として表示されます。
図3-5は、ProductディメンションのMarketing Manager属性の作成画面です。ここでは、この属性はItemレベルにのみ適用されます。
メジャー・ディメンションの作成
メジャー・ディメンションを使用すると、キューブ内のすべてのメジャーについて同時に計算済メジャーを生成できます。メジャー・ディメンションを作成するには、先にファクト・ビューを作成する必要があります。ファクト・ビューは、メジャーが列ではなく行を識別するようにファクト表をピボット操作します。
メジャー・ディメンションの作成手順:
-
「ツール」メニューからメジャー・ディメンションを含むファクト・ビューの作成を選択します。
メジャー・ディメンションを含むファクト・ビューの作成ダイアログ・ボックスが表示されます。
-
メジャー・ディメンションを含むファクト・ビューの作成ダイアログ・ボックスで必要な情報を入力します。
-
「スキーマ」リストからスキーマを選択します。
-
「オブジェクト」リストからファクト表を選択します。
-
ファクト・ビュー名フィールドで、デフォルト名のままにするか、別の名前を入力します。
-
ファクト表の列の表で、メジャー・ディメンションに含めるメジャーの列を選択します。
-
オプション: メジャー・ディメンションの表を自動的に作成するには、メジャー・ディメンション表の作成オプションを選択します。
-
「作成」をクリックします。
-
-
目的のアナリティック・ワークスペースのフォルダを開きます。
-
「ディメンション」を右クリックし、「ディメンションの作成」を選択します。
「ディメンションの作成」ダイアログ・ボックスが表示されます。
-
「一般」タブに必要な情報を入力します。「ディメンション・クラス・タイプ」では、必ず「メジャー・ディメンション」を選択してください。
メジャー・ディメンションは、レベルや階層を持たないフラット・ディメンションです。
-
「作成」をクリックします。
ディメンションが「ディメンション」のサブフォルダとして表示されます。
メジャー・ディメンションを作成したら、キューブを作成してディメンションを追加します。
注意:
ファクト表に新しい列を作成し、その列をメジャー・ディメンションに追加する場合は、ファクト表のファクト・ビューを再作成して、メジャー・ディメンションとキューブをメンテナンスする必要があります。
メジャー・ディメンションへのメジャーの追加手順:
-
「ツール」メニューからメジャー・ディメンションを含むファクト・ビューの作成を選択します。
メジャー・ディメンションを含むファクト・ビューの作成ダイアログ・ボックスが表示されます。
-
メジャー・ディメンションを含むファクト・ビューの作成ダイアログ・ボックスで必要な情報を入力します。
-
「スキーマ」リストからスキーマを選択します。
-
「オブジェクト」リストから、メジャー・ディメンションの作成時に使用したファクト表を選択します。
-
ファクト・ビュー名フィールドで、デフォルト名のままにするか、別の名前を入力します。
-
ファクト表の列の表で、メジャー・ディメンションに含めるメジャーの列を選択します。
-
オプション: メジャー・ディメンションの表を自動的に作成するには、メジャー・ディメンション表の作成オプションを選択します。
-
「作成」をクリックします。
-
-
メジャー・ディメンションを右クリックしてディメンションのメンテナンスを選択します。
-
メジャー・ディメンションが属しているキューブを右クリックしてキューブのメンテナンスを選択します。
関連項目:
ディメンションのマッピング
マッピングによって、各次元オブジェクトのリレーショナル・データソースを特定します。ディメンションをリレーショナル表またはビューの列にマッピングした後で、データをロードできます。各ディメンションに対して作成、マッピング、ロードの手順を個別に実行するか、またはすべてのディメンションに対して1つの手順を実行してから次の手順を実行します。
ディメンション用のSQLデータ型
ディメンションおよびレベルは、次のSQLデータ型を持つ列にマップできます。これらのデータ型はデータのロード中にテキストに変換されます。
-
VARCHAR2
-
NVARCHAR2
-
NUMBER
-
INTEGER
-
DECIMAL
-
CHAR
-
NCHAR
-
DATE
-
TIMESTAMP
-
TIMESTAMP WITH TIMEZONE
-
TIMESTAMP WITH LOCAL TIMEZONE
同じデータ型のキューブやメジャーには属性をマップできます(「データ型」を参照)。
ディメンションのマッピング・ウィンドウ
マッピング・ウィンドウには、表形式ビューとグラフィカル・ビューがあります。この2つのビューは、キャンバスの上部にあるアイコンを使用して切り替えることができます。
-
表形式ビュー: スキーマ・ナビゲーション・ツリーから、個々の列名を次元オブジェクトの行にドラッグ・アンド・ドロップします。
-
グラフィカル・ビュー: スキーマ・ナビゲーション・ツリーから、表およびビューを表すアイコンをマッピング・キャンバスにドラッグ・アンド・ドロップします。その後、列から次元オブジェクトに線を引きます。
表形式ビューでディメンションをマップするときはOLAP式の構文を使用できます。この機能があるため、ディメンション表にソース列がなくてもディメンションの最上位レベルを作成することが可能です。
また、異なる表から属性をマップすることも可能です。OLAPは、同じ名前の列で自動的に表を結合します。
マッピング・ウィンドウの「ヘルプ」をクリックすると、詳細を確認できます。
ディメンションのマッピング手順:
-
ナビゲーション・ツリーでディメンションのフォルダを開き、「マッピング」をクリックします。
マッピング・ウィンドウには、左側にスキーマ・ナビゲーション・ツリーがある他、選択したディメンションのマッピング表(行はレベルとその属性)が表示されます。これが表形式ビューです。
-
正規化されたディメンション表の場合は、「ディメンション表のタイプ」に「スノーフレーク・スキーマ」を選択します。
-
マッピング・ウィンドウを大きくするために、ペインの境界線を左側にドラッグします。
-
スキーマ・ツリーで、ディメンションのメンバーおよび属性が格納されている表、ビューまたはシノニムを開きます。
-
ソース列を、ディメンションのマッピング表の適切なセルにドラッグ・アンド・ドロップします。
-
すべてのレベルと属性をマップしたら、「適用」をクリックします。
-
境界線を右側にドラッグして、ナビゲーション・ツリーが表示されるようにします。
図3-6は、表形式ビューでマップしたProductディメンションを示したものです。矢印は、PRODUCT_DIM.ITEM_BUYER
列がPRODUCT.ITEM.BUYER
属性にマッピングされていることを表しています。
リレーショナル・ソースなしで最上位レベルをマップする手順:
-
ディメンションとそのレベル(最上位レベルを含む)、階層および属性を作成します。
-
前述のディメンションを最上位レベル以外のすべてにマップします。
-
OLAP式の構文で、最上位レベルの式を入力します。
例3-1 Global Timeディメンションの最上位レベルの作成
この例は、Timeディメンションにおけるすべての年の最上位レベルを示しています。TimeディメンションのTotalレベル(すべての年)に使用するマッピングの式は次のようになります。
Member: 'TOTAL' LONG_DESCRIPTION: 'Total' SHORT_DESCRIPTION: 'Total' END_DATE: TO_DATE('31-Dec-2007', 'dd-mon-yyyy') TIME_SPAN: 3646
Member
、LONG_DESCRIPTION
およびSHORT_DESCRIPTION
はリテラル文字列に設定され、END_DATE
はTO_DATE
関数を使用し、TIME_SPAN
は数値に設定されます。
ソース・データの問合せ
マッピング・ウィンドウから直接、特定のソース列の内容を表示できます。この情報はすぐに確認できるので、名前から内容を判断できないときに推測で作業を進める必要がなくなります。
特定のソース表またはビューの値の表示手順:
-
スキーマ・ツリーまたはマッピング・キャンバスのグラフィカル・ビューでソース・オブジェクトを右クリックします。
-
ショートカット・メニューから「データを表示」を選択します。
図3-7は、PRODUCT_DIM
表に格納されているデータを示しています。
ディメンションへのデータのロード
Analytic Workspace Managerでは、複数の方法で次元オブジェクトにデータをロードできます。データ・モデルを最も早く作成できるのは、メンテナンス・ウィザードのデフォルト設定を使用する方法です。本番環境では、ここで紹介する方法よりも適切な方法がある場合もあります。これらについては、「データのメンテナンス方法の選択」を参照してください。
ディメンションにデータをロードする手順:
-
ナビゲーション・ツリーで、「ディメンション」フォルダまたは特定のディメンションのフォルダを右クリックします。
-
ディメンションのメンテナンスを選択します。
メンテナンス・ウィザードが起動し、「オブジェクトを選択」ページが表示されます。
-
「使用可能なターゲット・オブジェクト」から1つ以上のディメンションを選択し、矢印のボタンを使用して「選択済ターゲット・オブジェクト」に移動します。
-
ディメンション値をすぐにロードする場合は、「終了」をクリックします。
ウィザードの他のページでは、SQLスクリプトを作成したり、ロード処理をOracleジョブ・キューに送ることができます。これらのオプションを使用する場合は、「次へ」をクリックします。
-
作成ログを確認します(このログは作成が完了したときに表示されます)。ログにエラーの発生が記録されている場合は、そのエラーを修正してから再度メンテナンス・ウィザードを実行します。
一般に、エラーの原因は不適切なマッピングです。不完全なマッピングやソース・オブジェクトに対する変更がないかどうかを確認してください。
ディメンション・ビューの表示
メンテナンス・ウィザードは、ディメンションおよび階層のリレーショナル・ビューを自動的に生成します。これらのビューおよびビューに対する問合せ方法は、「ディメンション・オブジェクトの問合せ」を参照してください。
図3-10は、Product Primary階層のリレーショナル・ビューの説明画面です。データについては「データ」タブで確認できます。
デフォルト階層の表示
デフォルト階層の表示手順:
-
ナビゲーション・ツリーで、ディメンションの名前を右クリックします。
-
「データを表示」を選択します。
図3-11は、ProductディメンションのPrimary階層です。
キューブの作成
キューブは、まったく同じディメンションを持つメジャーを識別する情報オブジェクトです。したがって、データのロード、集計、格納および問合せというすべての段階において、同時に処理される対象となります。
キューブは、ビジネス・メジャーの形状を定義します。キューブは、一連の順序付け済ディメンションによって定義されます。ディメンションによってキューブのエッジが形成され、メジャーがキューブ本体のセルになります。
キューブを作成するには、次の手順を実行します。
-
目的のアナリティック・ワークスペースのフォルダを開きます。
-
「キューブ」を右クリックし、「キューブの作成」を選択します。
「キューブの作成」ダイアログ・ボックスが表示されます。
-
「一般」タブで、キューブの名前を入力し、ディメンションを選択します。
計算済メジャーを処理するときに必要な追加の計算済メジャーをAnalytic Workspace Managerで作成可能にするには、「SQL式の有効化」を選択します。「SQL式の有効化」は、Oracle Business Intelligence Enterprise Edition (OBIEE) Plug-in for Analytic Workspace Managerを使用して、キューブをOBIEEにエクスポートするとき特に便利です。
-
「集計」タブで「ルール」サブタブをクリックし、各ディメンションの集計方法を選択します。キューブで複数の方法を使用する場合は、必要な結果を取得するためのディメンションの集計順序を指定する必要があります。
集計から除外する階層を指定する必要がなければ、タブの一番下のオプションは無視してかまいません。
-
キューブのマッピング後にアドバイザを実行すると、最適なパーティションと記憶域がOracle OLAPによって決定されます。かわりに、これらのオプションをユーザー自身で定義する場合は、キューブを作成する前に「パーティショニング」タブと「記憶域」タブで設定を行います。
-
「作成」をクリックします。キューブが「キューブ」以下にサブフォルダとして表示されます。
図3-12は、Unitsキューブの「ルール」サブタブに演算子のリストが表示されている画面です。
関連項目:
集計演算子については、「集計演算子」を参照してください。
メジャーの作成
メジャーは、ビジネスに関して収集されたファクトを格納します。各メジャーは特定のキューブに属しているため、キューブの他のメジャーと特定の特性(同じディメンションなど)を共有します。メジャーのデフォルト特性は、キューブから継承されます。
注意:
メジャー・ディメンションのキューブに属するメジャーは1つのみです。これは、Analytic Workspace Managerによって自動的に作成されます。
メジャーを作成するには、次の手順を実行します。
-
メジャーのディメンションを持つキューブのフォルダを開きます。
-
「メジャー」を右クリックし、「メジャーの作成」を選択します。
「メジャーの作成」ダイアログ・ボックスが表示されます。
-
「一般」タブで、メジャーの名前を入力します。
-
「作成」をクリックします。
メジャーが「メジャー」フォルダ内の項目としてナビゲーション・ツリーに表示されます。
図3-13は、「メジャーの作成」ダイアログ・ボックスの「一般」タブです。
キューブのマッピング
キューブのマッピングでは、ディメンションをマッピングしたときと同じインタフェースを使用します(「ディメンションのマッピング」を参照)。キューブを1つのファクト表に直接マップしたり、OLAP式の構文を使用して複雑なマッピングを作成することが可能です。OLAP式の構文は、式、結合条件およびフィルタをサポートしています。
通常、ファクト表のディメンション列にはディテール・レベルのキー値のみが含まれますが、複数のレベルからの値を含む集計表にキューブをマップすることもできます。たとえば、Time列は、日、月、四半期、年を含み、Geography列は、市、州、国を含むことがあります。作成処理によってキューブのデータがディテール・レベルからロールアップされると、ロード済の集計値が計算値によって上書きされるため、発生した不整合はすべて修正されます。
データ型
キューブおよびメジャーは、次のSQLデータ型を持つ列にマップできます。
-
NUMBER
-
INTEGER
-
DECIMAL
-
BINARY_FLOAT
-
BINARY_DOUBLE
-
VARCHAR2
-
NVARCHAR2
-
CHAR
-
NCHAR
-
DATE
-
TIMESTAMP
-
TIMESTAMP WITH TIMEZONE
-
TIMESTAMP WITH LOCAL TIMEZONE
-
INTERVALYEARTOMONTH
-
INTERVALDAYTOSECOND
式
表形式ビューでキューブをマップするときはOLAP式の構文を使用できます。この機能により、データ・メンテナンスの一部として次のタスクを実行できるため、中間的なデータ・ステージングが不要になります。
-
OLAP式の構文で使用できる関数や演算子を組み合せて、リレーショナル・データに対する計算を実行する。
-
基になるリレーショナル・ソースよりも集計度が高いメジャーを作成する。たとえば、TimeディメンションにDay、Month、QuarterおよびYearという列があり、Salesのファクト表がDay外部キー列によってTimeに関連付けられているとします。基本的なマッピングの場合、Dayレベルでキューブにデータを格納します。しかし、データ・リフレッシュ時にMonthレベルで集計することが可能です。ワンアップ・マッピングと呼ばれる方法を使用して、キューブをTimeのMonth列にマップして、Day列でディメンション表とファクト表との結合を指定します。
注意:
メジャー・ディメンションは式にマップできません。列にマップする必要があります。
結合条件
表形式ビューでは、各ディメンションのマッピングに結合条件が含まれています。ファクト表の外部キーを関連するディメンション表の主キーにマップする基本的な場合は、結合条件を省略できます。この情報は、マッピングを保存するときにリレーショナル・ソース表から導出されます。
たとえば、UNITS_CUBE
マッピングのTIME
ディメンションについて、Analytic Workspace Managerは次のような結合条件を提供します。
GLOBAL.TIME_DIM.MONTH_ID = GLOBAL.UNITS_FACT.MONTH_ID
注意:
メジャー・ディメンションの結合条件は単純な等価結合であることが必要です。
フィルタ
フィルタは、リレーショナル・ソースからキューブにデータをロードする問合せにWHERE
句を適用します。フィルタを使用すると、特定の条件を満たす行のみに絞り込むことができます。次のフィルタは、データを2007年のものに制限しています。
GLOBAL.UNITS_FACT.MONTH_ID LIKE '2007%'
フィルタは、メジャーを含む2つ以上の表を結合する際にも使用できます。次のフィルターは、GlobalスキーマのUNITS_FACT
表とPRICE_FACT
表を、Time(MONTH_ID
)ディメンションとProduct(ITEM_ID
)ディメンションで結合しています。
GLOBAL.PRICE_FACT.MONTH_ID=GLOBAL.UNITS_FACT.MONTH_ID AND GLOBAL.PRICE_FACT.ITEM_ID=GLOBAL.UNITS_FACT.ITEM_ID
集計関数
集計関数は、ファクト表のデータをキューブにロードする方法を指定するために使用します。「グループ化基準」リストから集計関数を選択します。集計関数は次のとおりです。
-
SUM
-
AVG
-
MAX
-
MIN
-
COUNT
キューブのマッピング手順:
-
ナビゲーション・ツリーでキューブのフォルダを開き、「マッピング」をクリックします。
マッピング・ウィンドウには、左側にスキーマ・ナビゲーション・ツリーがある他、選択したキューブとそのディメンションのマッピング表が表示されます。これが表形式ビューです。
値が集計されるディメンションのレベルは、記号で示されます。キューブのプロパティ・ソートの「集計」タブの「ルール」サブタブにある「集計の開始レベル」列でラベルを指定します。
-
マッピング・ウィンドウを大きくするために、ペインの境界線を左側にドラッグします。
-
スキーマ・ツリーで、メジャーのデータが格納されている表、ビューまたはシノニムを開きます。
-
ソース列を、キューブのマッピング表の適切なセルにドラッグ・アンド・ドロップします。
メジャー・ディメンションをメジャー・ディメンション・ファクト・ビューにマップします。メジャー・ディメンション・ファクト・ビューの作成方法の詳細は、「メジャー・ディメンションの作成」を参照してください。メジャー・ディメンションのファクト表列で、キューブのメジャーのソース列として
MEASURE_VALUE
を指定し、キューブのメジャー・ディメンションのソース列としてMEASURE_DIM
を指定します。 -
オプション: マッピング用のSQL文を確認するには、「SQLを表示」をクリックします。SQLはファイルまたはクリップボードに保存できます。
-
すべてのディメンションとメジャーをマップしたら、「適用」をクリックします。
-
境界線を右側にドラッグして、マッピング・ウィンドウのサイズを小さくします。
図3-14では、マッピング・キャンバスで、UnitsキューブがUNITS_FACT
表の列にマップされています。マッピングを保存すると、この図のようなベース・レベルのマッピングの結合状態が表示されます。
ファクトがキューブにロードされたときにメジャーのファクトを計算する手順:
-
キューブを作成します。
-
すべてのディメンションとメジャーをソース表にマップします。
-
OLAP式の構文の計算を含むようにメジャーのマッピングを編集します。
たとえば、
UNITS_FACT.SALES
をUNITS_FACT.SALES*1.06
に変更します。行の式、列の式、条件は使用できますが、ネストしたSQL問合せは使用できません。
ディテール・レベルより上のキューブのマッピング手順:
-
目的のレベルでキューブのディメンションを作成し、それらをソースのディメンション表にマップします。
-
キューブとそのメジャーを作成します。
-
各メジャーをファクト表のソース列にマップします。
-
集約されないディメンションの場合は、ディテール・レベルをファクト表のソース列にマップします(キューブの基本的なマッピング方法と同じ)。
-
集約されるディメンションの場合は、次のようにします。
-
ディメンションを、ファクト表ではなくディメンション表の対応する列にマップします。前述のシナリオでは、TimeディメンションのMonthレベルをTimeディメンション表のMonth列にマップします。たとえば、Monthをtime_dim.month_columnにマップします。
-
ファクト表とディメンション表間のディテール・レベルでの結合条件を入力します。たとえば、
time_dim.day_key = fact_tbl.day_foreign_key
となります。
-
異なる表へのメジャーのマッピング手順:
-
目的のレベルでキューブのディメンションを作成し、それらをソースのディメンション表にマップします。
-
キューブとそのメジャーを作成します。
-
各メジャーを対応する表のソース列にマップします。
-
各ディメンションのディテール・レベルをそれぞれの表のソース列にマップします。追加するソース列名をドロップすると、既存のマッピングに追加するか、または既存のマッピングと置き換えるかを尋ねるメッセージが表示されます。「追加」を選択します。
例3-2 異なる表へのメジャーのマッピング
この例では、キューブの2つのメジャーを2つの異なるファクト表の列にマップしています。UNIT_PRICE
のデータはUNITS_FACT
表内にあり、UNITS_SOLD
のデータはPRICE_FACT
表内にあります。次のマッピングは、MONTH
とPRODUCT
の2つの表のディメンション・キーを示しています。
UNIT_PRICE: GLOBAL.PRICE_FACT.UNIT_PRICE UNITS_SOLD: GLOBAL.UNITS_FACT.UNITS MONTH: GLOBAL.PRICE_FACT.MONTH_ID GLOBAL.UNITS_FACT.MONTH_ID PRODUCT: GLOBAL.PRICE_FACT.ITEM_ID GLOBAL.UNITS_FACT.ITEM_ID
次の例では、キューブの1つのメジャーを2つの異なるファクト表の列にマップしています。North AmericaのデータはAMERICA
表にあり、EuropeのデータはEMEA
表にあります。UNION_CUBE
のUNITS_SOLD
メジャーを使用した次のマッピングは、2つのファクト列の結合を作成します。
UNITS_SOLD: GLOBAL.AMERICA.UNITS GLOBAL.EMEA.UNITS TIME: GLOBAL.AMERICA.MONTH_ID GLOBAL.EMEA.MONTH_ID CHANNEL: GLOBAL.AMERICA.CHANNEL_ID GLOBAL.EMEA.CHANNEL_ID CUSTOMER: GLOBAL.AMERICA.SHIP_TO_ID GLOBAL.EMEA.SHIP_TO_ID PRODUCT: GLOBAL.AMERICA.ITEM_ID GLOBAL.EMEA.ITEM_ID
キューブのパーティション化
パーティション化は物理的にメジャーをキューブに格納する方法です。これによって、大きいメジャーのパフォーマンスが次のように向上します。
-
データ構造をコンパクトに保つことで、スケーラビリティが向上します。各パーティションは、小さなメジャーのように機能します。
-
関連するデータはまとめて格納されるため、問合せまたはメンテナンスの際に対象となるデータセットが小さくて済みます。
-
データ・メンテナンス時のパラレル集計が可能になります。各パーティションを別々のプロセスで集計できます。
-
記憶域上の古いデータの削除が容易になります。古いパーティションを削除し、新しいパーティションを追加できます。
パーティションの数は、キューブへのデータのロードやデータの集計に割当て可能なデータベース・リソースに影響します。十分なリソースが割り当てられていれば、複数のパーティションを同時に集計できます。
パーティショニングには、複数の階層と、階層の複数のレベルを選択できます。
キューブのプロパティ・シートの「パーティショニング」タブでパーティションを選択し、そのパーティションのプロパティを指定します。パーティションに関する情報を表示して、パーティション化計画を決定するときに利用することもできます。
注意:
キューブはデフォルトでパーティション化されます。
パーティションを選択するには、次のようにします。
-
ナビゲーション・ツリーでキューブを選択します。
-
プロパティ・シートで「パーティショニング」タブを選択します。
図3-15のような「パーティショニング」タブが表示されます。
-
「パーティション・キューブ」を選択し、「パーティションの選択」サブタブを選択します。
-
「パーティションの選択」サブタブに必要な情報を入力します。
-
オプション: パーティションに関する情報を表示するには、「パーティション・メンバー分析」サブタブを選択します。
-
キューブにパーティション化を適用するには、「適用」をクリックします。
関連項目:
パーティションの選択
パーティション化に使用するディメンションとレベルを「パーティションの選択」サブタブで選択します。この項では、サブタブで選択可能な次の項目について説明します。
ディメンション
キューブをパーティション化するためのディメンション。ディメンションには少なくとも1つのレベル・ベース階層が必要です。パーティション化計画の策定では、通常、最良のパフォーマンスを得るため、各パーティションにほぼ同じ量のデータが含まれるようにメンバーを均等に分散させます。「集計の階層」での選択はそのままで、ディメンション間で切り替えられるので、データを自由に検索できます。デフォルトでは、パーティションは時間ディメンションで作成されます。
集計の階層
選択したディメンションの階層およびそのレベルからパーティション化のレベルを選択します。ディメンションに複数の階層が含まれていて、そのうちの1つでのみパーティション化している場合は、メンバーが最も多い階層を選択します。この階層は、デフォルトの階層として定義されています。選択した後、大カッコは同じパーティションに格納されるレベルを示します。
選択したレベルの各ディメンション・メンバーは、その子孫とともに、個別のパーティションに格納されます。上位レベルのディメンション・メンバーまたは階層内に存在しないディメンション・メンバーは、複数のレベルをパーティション化で選択しない限り、一括して格納されます。
注意してレベルを選択し、パーティション間で均等にデータを分散します。たとえば、時間ディメンションに、年レベル、四半期レベル、月レベルおよび日レベルで10年間のデータが含まれている場合は、四半期レベルでパーティション化できます。これによって、40のパーティション(四半期ごとに1つ)およびその子孫(月および日)が作成されます。年レベルの10のメンバーは、個別のパーティションに一括して格納されます。データが非常にスパースな場合、四半期ではなく年単位でパーティション化できます。
もう1つの例は、暦年と会計年の2つの階層、両方の階層に月と日レベルのある時間ディメンションです。このシナリオでは、月、暦年、会計年レベルでパーティション化できます。
目的はメモリーに合うパーティションを作成して、パフォーマンスを最適化することです。コンピュータに搭載されているメモリーを増加すると、パーティションを大きくでき、これによっても、この目的を達成することができます。
順序の階層
選択したディメンションの階層の集計順序を変更できます。
選択のクリア
現在の表示からすべての階層の選択を削除できます。別のディメンションで選択されている階層は影響を受けません。
事前計算値の編集
データのメンテナンス中に計算および格納された値のパーセンテージを編集できます。残りのメンバーは問合せへの応答で必要時に計算されます。一般的に、最も頻繁に問い合せされる値は事前計算してください。
値0は集計値を作成しません。集計値は実行時に計算されて結果セットを問合せに提供します。事前集計0%の結果は最速のメンテナンス時間と最小の記憶域領域ですが、問合せのレスポンス時間は最も遅くなります。値100はすべての集計値を作成します。集計値は問合せに応じてフェッチされます。事前集計100%の結果は最長のメンテナンス時間と最大の記憶域領域ですが、問合せのレスポンス時間は最も速くなります。ほとんどのDBAはこの2つの両極にある値の間の値を選択して、問合せの要件と、データ・メンテナンス・ウィンドウの制約のバランスを取ります。
値1は集計値の1%のみを作成しますが、集計を格納および追跡するためのデータ構造も作成します。このため、この小さな割合を計算するための時間はそれに応じて長くなります。
実行時のパフォーマンスと、時間およびディスク領域の制約のバランスを取るため、その割合を徐々に調整する場合があります。
パーティションの順序の自動管理
パーティション・メンバーの分析
「パーティション・メンバー分析」サブタブは、選択したディメンションのメンバーのパーティション間での分散を表示します。この情報を使用して、各パーティションにほぼ同じ数のディメンション・メンバーがあるようなパーティション化計画を作成します。
情報は表形式とグラフ形式で表示されます。
表
表には指定したパーティションに関する次の情報が表示されます。
-
パーティション名: 「パーティションの選択」サブタブに表示されるパーティションの名前。
-
パーティション数: 選択したレベルでパーティション化により作成されたパーティションの数。
-
合計メンバー: パーティション間で分散されるディメンション・メンバーの合計数。この数には、パーティション化で選択されたレベルのメンバーと、パーティションに含まれるレベルでのそのメンバーの子が含まれます。
-
最小メンバー: パーティションに割り当てられたディメンション・メンバーの最小数。
-
最大メンバー: パーティションに割り当てられたディメンション・メンバーの最大数。
-
平均メンバー: パーティションに割り当てられたディメンション・メンバーの平均数。
-
標準偏差: パーティション間の平均からの変動量。標準偏差は低い方が高い平均偏差よりも良好です。
グラフ
グラフは表で選択されたパーティションを示します。各パーティションのメンバー数と、ディメンション階層でのそのレベルを視覚的に表現します。
ツール・バーによりグラフに一時的な変更を加えることができます。テキスト・ツールは無効になっています。このために次のツールが用意されています。
-
塗りつぶしの色: グラフの周囲の背景色を変更します。
-
グラフ・タイプ: 表3-1で説明するように、様々な標準のグラフ・タイプを提供します。
-
凡例: 凡例が表示されるかどうかを制御します。
-
グリッド・ライン: 水平グリッド・ラインがX/Y軸と共にグラフに表示されるかどうかを制御します。
-
グラデーション効果: 色のついた領域がソリッドに表示されるか、または色がわずかに変化するかどうかを制御します。
-
3-D効果: グラフを平面と3-Dのどちらで表示するかを制御します。
表3-1 パーティション化のグラフ・タイプ
グラフ・タイプ | 使用方法 |
---|---|
棒 |
比較(デフォルト) |
横棒 |
比較 |
円 |
割合または割合の比較。一部と全体との関係。 |
折れ線 |
一定期間にわたる傾向。データの変更率。 |
面 |
一定期間にわたる傾向。データの変更率。 |
組合せ |
一定期間にわたる傾向。ある変数が他の変数に与える影響。 |
散布 |
2つまたは3つのメジャーの相関関係。 |
株価 |
一定期間にわたる株価。 |
円形 |
循環するパターンまたは指向性のパターン。 |
パレート |
合計に対する最高または最低の貢献。ランク付け。 |
3-D |
3-D比較 |
キューブへのデータのロード
キューブにデータをロードする方法は、ディメンションにデータをロードする方法と同じです。ただし、一般にビジネス・メジャーのデータをロード、集計する時間が長くなります。少数のデータ・サンプルを使用して次元モデルを作成する場合を除き、1つ以上のバックグラウンド・プロセスで作成を実行した方がよい場合もあります。
キューブにデータをロードする手順:
-
ナビゲーション・ツリーで、「キューブ」フォルダまたは特定のキューブの名前を右クリックします。
-
キューブのメンテナンスを選択します。
メンテナンス・ウィザードが起動し、「オブジェクトを選択」ページが表示されます。
-
「使用可能なターゲット・オブジェクト」から1つ以上のキューブを選択し、矢印のボタンを使用して「選択済ターゲット・オブジェクト」に移動します。ディメンションがロードされている場合は、「選択済ターゲット・オブジェクト」からそのディメンションを削除できます。
「次へ」をクリックすると、「データ・リフレッシュ・メソッド」ページが表示されます。
-
「データ・リフレッシュ・メソッド」ページでは、ビルドに含まれるキューブとディメンション、ロード・オプション、ソート順、リフレッシュ・メソッド、およびビルドの手順を定義するキューブ・スクリプトを特定します。
「ヘルプ」をクリックすると、各項目の詳細を参照できます。
図3-16に、「データ・リフレッシュ・メソッド」ページを示します。
「次へ」をクリックすると、「処理オプション」ページが表示されます。
-
「処理オプション」ページでは、デフォルト値を変更する必要はありません。
「次へ」をクリックすると、「スケジューリング」ページが表示されます。
-
「スケジューリング」ページでは、タスク処理オプションを指定できます。作成処理をOracleジョブ・キューに発行したり、Analytic Workspace Managerの外部で実行可能なSQLスクリプトを作成することもできます。
また、この作成処理に使用されるプロセス数を指定することもできます。パラレル処理の数は、キューブのパーティションの数、作成専用のプロセスの数、
JOB_QUEUE_PROCESSES
初期化パラメータの設定のうち、最も小さい数が上限になります。「ヘルプ」をクリックすると、各項目の詳細を参照できます。
-
「終了」をクリックします。
図3-17は、作成処理をすぐにOracleジョブ・キューに発行する場合の例です。
図3-18は、Analytic Workspace Managerで表示されるキューブのメンテナンス・ログです。このメンテナンス・ログは、すべての作成処理をリフレッシュして最新情報を提供します。セッションですぐに実行されるメンテナンス・タスク用に、メンテナンス・ログは自動的に表示されます。ジョブをOracleジョブ・キューに送ると、「メンテナンス・レポート」フォルダ内の様々なレポート(「スケジュールされているジョブ」、「実行中のジョブ」および「ジョブの履歴」)を通して、その進行状況を追跡できます。「実行中のジョブ」と「ジョブの履歴」の各レポートは、図3-18に示したものと同じです。
キューブ内のデータの表示
キューブ内のデータの表示手順:
-
ナビゲーション・ツリーでキューブを右クリックします。
-
ショートカット・メニューから「データを表示」を選択します。
メジャー・データ・ビューアが開き、選択したメジャーがページ上部のクロス集計とページ下部のグラフに表示されます。クロス集計では、行と列の見出しになっているディメンション階層を開いたり閉じたりできます。また、ディメンションをピボットしたりスワップすることによって、ディメンションの位置を変更することもできます。必要に応じて、あるディメンションを別のディメンションの入れ子にして、複数のディメンションを行や列の見出しにできます。
デフォルト表示の変更手順:
-
ピボット操作を行うには、ディメンションをある位置から別の位置に(通常は他のディメンションの上または下に)ドラッグ・アンド・ドロップします。
-
ディメンションをスワップする場合は、ディメンションを別のディメンションの上に直接ドラッグ・アンド・ドロップすれば、2つのディメンションの位置が入れ替わります。
選択データを大幅に変更する場合は、「ファイル」メニューから「クエリー・ビルダー」を選択します。
図3-19は、メジャー・データ・ビューアに表示されたUnitsキューブです。
キューブ・ビューの説明の表示
メンテナンス・ウィザードは、キューブのリレーショナル・ビューを自動的に生成します。これらのビューおよびビューに対する問合せ方法は、「ディメンション・オブジェクトの問合せ」を参照してください。
図3-20は、Unitsキューブのリレーショナル・ビューの説明画面です。
データのメンテナンス方法の選択
データの次元モデルを作成するときは、各オブジェクトを作成した後すぐにそれをマップおよびロードすることをお薦めします。オブジェクト定義やマッピングで間違いがあった場合、すぐに見つけて修正できるためです。
ただし、本番環境では、できるだけ簡単で時間もかからない定期的なメンテナンスが必要です。このような場合は、データのメンテナンス方法を選択できます。
キューブはメンテナンス・ウィザードを使用してリフレッシュできます。このウィザードでは、キューブを即時にリフレッシュするか、リフレッシュ処理をジョブとしてOracleジョブ・キューに送るか、またはPL/SQLスクリプトを生成します。スクリプトは手動で実行する以外にも、Oracle Enterprise Managerのスケジューラや、PL/SQLパッケージのDBMS_SCHEDULER
などのスケジューリング・ユーティリティを使用することもできます。
生成したスクリプトによって、PL/SQLパッケージのDBMS_CUBE
のBUILD
プロシージャがコールされます。このスクリプトを編集したり、このパッケージを使用してスクリプトを始めから作成することができます。
複数のプロセスが作成処理に割り当てられている場合、パーティション化されたキューブのデータはパラレルにロードおよび集計されます。この結果は作成ログで確認できます。
さらに、それぞれのキューブに対して次のデータ・メンテナンス方法を使用できます。
-
カスタム・キューブ・スクリプト
-
メンテナンス・スクリプト
-
キューブ・マテリアライズド・ビュー
既存のマテリアライズド・ビューをキューブに置き換えるように定義した場合は、必ずマテリアライズド・ビューを使用してデータ・メンテナンスを行います。マテリアライズド・ビュー機能を有効にすると、カスタム・キューブ・スクリプトで実行できる分析の種類が制限されます。
カスタム・キューブ・スクリプトの作成および実行
キューブ・スクリプトは、問合せ用のキューブを準備する手順を順番に記述したものです。手順はそれぞれ、特定のデータ変換を表しています。これらの手順が実行される順序を指定することによって、相互依存性を許容できます。
-
データの消去: キューブ全体、選択したメジャー、またはキューブの選択した部分からデータを消去します。高速リフレッシュ用にディテール・データ(リーフ)のみを消去するか、集計データのみを消去するか、または完全リフレッシュ用に両方を消去することもできます。通常、古いデータ値の消去は新しい値をロードする前に実行されます。
-
ロード: ソース表のデータをキューブにロードします。キューブにはすべてのメジャーをロードすることも、選択したメジャーのみをロードすることもできます。
-
集計: キューブに対して定義された規則に従って集計値を生成します。キューブ全体、選択したメジャーまたはキューブの選択した部分を集計できます。
-
分析: オプティマイザ統計を生成します。これにより、特定のタイプの問合せのパフォーマンスが向上する場合があります。詳細は、「キューブおよびディメンションの分析」を参照してください。通常、統計の生成はデータのメンテナンス直後に行います。
-
OLAP DML: OLAP DMLのコマンドまたはプログラムを実行します。
-
PL/SQL: PL/SQLコマンドまたはスクリプトを実行します。たとえば、データ・メンテナンスの開始時にリレーショナル・ソース表のリフレッシュを始めるPL/SQLスクリプトを実行できます。
キューブは、キューブ・スクリプトの高度な分析をサポートするために使用する場合、キューブ・マテリアライズド・ビューとして拡張できません(「キューブへのマテリアライズド・ビュー機能の追加」を参照)。この場合、キューブ内のデータが失効していないかどうかや、リフレッシュする必要があるかどうかについて、ユーザー自身で判断する必要があります。
キューブ・スクリプトの作成
キューブ・スクリプトの作成手順
-
キューブ・マテリアライズド・ビューとして定義されていないキューブのフォルダを開きます。
-
「キューブ・スクリプト」を右クリックし、キューブ・スクリプトを作成を選択します。
キューブ・スクリプトを作成ダイアログ・ボックスが表示されます。
-
「一般」タブで、キューブ・スクリプトの名前を入力します。
-
手順を作成するには、「新規手順」をクリックします。
-
手順のタイプを選択します。
選択した手順のタイプに関する「新規手順」ダイアログ・ボックスが表示されます。
-
それぞれのタブに必要な情報を入力し、「OK」をクリックします。
手順がキューブ・スクリプトの「一般」タブに表示されます。
-
「作成」をクリックします。
キューブ・スクリプトが「キューブ・スクリプト」フォルダ内の項目として表示されます。
-
キューブ・スクリプトを実行します。
-
ナビゲーション・ツリーでキューブ・スクリプトを右クリックし、「キューブ・スクリプトの実行」を選択します。
メンテナンス・ウィザードが起動します。
-
ウィザードの各手順を実行します。
-
結果を表示するには、キューブを右クリックして「データを表示」を選択します。
-
図3-21に「キューブ・スクリプトの作成」ダイアログ・ボックスを示します。この図では、いくつかの手順がすでに定義されています。
キューブ・スクリプトの実行
各キューブには、データをロードしたりキューブに対して定義された規則に従ってデータを集計したりする、LOAD_AND_AGGREGATE
というデフォルトのキューブ・スクリプトが自動的に割り当てられます。スクリプトはいくつでも追加定義でき、そのうちの1つをデフォルトのキューブ・スクリプトとして指定できます。キューブをリフレッシュする方法はすべて、デフォルトのキューブ・スクリプトを実行します。他のキューブ・スクリプトは、メンテナンス・ウィザードを使用して手動で実行できます。
カスタム・キューブ・スクリプトを手動で実行する手順:
-
目的のキューブの「キューブ・スクリプト」フォルダを開きます。
-
キューブ・スクリプトを右クリックし、「キューブ・スクリプトの実行」を選択してメンテナンス・ウィザードを開きます。
-
メンテナンス・ウィザードの各手順を実行します。
デフォルト・スクリプトとしてカスタム・キューブ・スクリプトを実行する手順:
-
目的のキューブの「キューブ・スクリプト」フォルダを開きます。
-
キューブ・スクリプトを選択して、「一般」タブを表示します。
-
「このキューブのデフォルト・スクリプト」を選択して、「適用」をクリックします。
-
ナビゲーション・ツリーの任意の場所でメンテナンス・ウィザードを起動して、キューブを選択します。
-
メンテナンス・ウィザードの各手順を実行します。
メンテナンス・スクリプトの手順としてキューブ・スクリプトを実行する手順:
-
メンテナンス・スクリプトを作成します。
-
作成したキューブ・スクリプトを手順として追加します。
-
メンテナンス・スクリプトを実行します。
メンテナンス・スクリプトの作成および実行
メンテナンス・スクリプトは、スキーマ内の複数のキューブをメンテナンスする手順を順番に記述したものです。メンテナンス・スクリプトを使用すると、キューブ間の相互依存性を管理できます。
キューブまたはディメンションをロードして集計するには、それを手順として追加します。特定のキューブやディメンションのメンテナンスをさらに細かく制御する場合は、キューブ・スクリプトを作成するか、次に示す個々の手順をメンテナンス・スクリプトに直接入力するようにしてください。
-
データのクリア
-
ロード
-
集計
-
分析
-
OLAP DML
-
PL/SQL
これらは、「カスタム・キューブ・スクリプトの作成および実行」で説明した手順と同じです。
メンテナンス・スクリプトの作成
メンテナンス・スクリプトの作成手順:
-
ナビゲーション・ツリーで、メンテナンス・スクリプトを右クリックしてメンテナンス・スクリプトの作成を選択し、メンテナンス・スクリプトの作成ダイアログ・ボックスを表示します。
-
「一般」タブで、名前、ラベルおよび説明を入力します。
-
新しい手順を作成するために、「追加」をクリックして、リストから手順のタイプを選択します。
-
必要に応じて手順をさらに作成します。この手順の編集、削除または順序変更はいつでも実行できます。
-
「作成」をクリックします。新しいメンテナンス・スクリプトが「メンテナンス・スクリプト」フォルダ内のオブジェクトとして表示されます。
図3-22は、「メンテナンス・スクリプトの作成」ダイアログ・ボックスの「一般」タブです。
キューブへのマテリアライズド・ビュー機能の追加
Oracle OLAPキューブは、マテリアライズド・ビュー機能を利用できるように拡張できます。キューブはOracle Databaseマテリアライズド・ビュー・サブシステムを介して段階的にリフレッシュでき、ソース表に対する問合せの透過的リライトの対象として使用できます。このように拡張されたキューブを、キューブ・マテリアライズド・ビューと呼びます。
キューブ・マテリアライズド・ビューに関連付けられたOLAPディメンションも、マテリアライズド・ビュー機能を使用して定義されます。
キューブ・マテリアライズド・ビューとして設定するキューブは、次の条件を満たしている必要があります。
-
キューブのすべてのディメンションに、少なくとも1つのレベルと、1つのレベルベース階層が存在する。不規則階層およびスキップレベル階層はサポートされない。ディメンションがマップされている必要がある。
-
キューブのすべてのディメンションで同じ集計演算子(
SUM
、MIN
、MAX
のいずれか)を使用している。 -
ディメンションとメジャーがそれぞれ1つ以上存在する。
-
定義とマップが完全に行われている。たとえば、キューブに5つのメジャーがある場合、その5つすべてがソース表にマップされている。
-
キューブのデータ型が
NUMBER
、VARCHAR2
、NVARCHAR2
またはDATE
であること。 -
ソースのディテール表で、ディメンションおよびRELY制約がサポートされている。これらが定義されていない場合は、キューブのプロパティ・シートの「マテリアライズド・ビュー」タブにあるリレーショナル・スキーマ・アドバイザを使用して、ディテール表に対してこれらを定義するスクリプトを生成します。
-
圧縮されている。
-
計算済メジャーは使用できるが、キューブ・スクリプト内のより高度な分析機能は使用できない。
関連項目:
マテリアライズド・ビュー機能を追加する手順:
-
ナビゲーション・ツリーでキューブを選択します。
そのキューブのプロパティ・シートが表示されます。
-
「マテリアライズド・ビュー」タブを選択します。
-
チェックリストを確認し、エラーになったテストがあった場合はその原因を修正します。
キューブ全体が有効な状態にならないと、キューブ・マテリアライズド・ビューを定義できません。
-
自動リフレッシュする場合は、このページの上半分の項目について設定を行います。クエリー・リライトを行う場合は、このページ内のすべての項目について設定を行ってください。
このページの各項目に関する詳細を確認する場合は、「ヘルプ」をクリックしてください。
-
「適用」をクリックします。
アナリティック・ワークスペースと同じスキーマにキューブ・マテリアライズド・ビューが表示されます。キューブおよびキューブの各ディメンションのマテリアライズド・ビューが作成されます。従来のマテリアライズド・ビューとは異なり、キューブ・マテリアライズド・ビューはデータの格納にリレーショナル表を使用しません。データはその背後にあるキューブに格納されます。キューブ・マテリアライズド・ビューは、CB$
接頭辞によって識別されます。
新しいマテリアライズド・ビューの最初の状態は無効であるため、リフレッシュを実行するまでクエリー・リライトは利用できません。キューブの「マテリアライズド・ビュー」タブで最初のリフレッシュ時刻を指定するか、メンテナンス・ウィザードでリフレッシュを実行できます。
図3-23は、Unitsキューブの「マテリアライズド・ビュー」タブを示しています。
複数言語のサポート
1つのアナリティック・ワークスペースで複数の言語をサポートできます。このサポートにより、OLAPのアプリケーションやツールのユーザーは自国語でメタデータを表示することが可能になります。たとえば、メジャー、キューブ、ディメンションの表示名に翻訳された名前を使用できます。また、各言語に対応する複数の列に属性をマップすることも可能です。
データベース・キャラクタ・セットでサポートされていて、訳語を指定できる限り、使用できる言語の数と種類に制限はありません。言語の追加や削除はいつでも行うことができます。
複数の言語をサポートするには、次の手順を実行します。
-
ナビゲーション・ツリーでアナリティック・ワークスペースのフォルダを開きます。
-
「言語」を選択して言語のプロパティ・ページを表示します。
-
「一般」タブで、「言語の変更」をクリックします。
-
「言語の変更」ダイアログ・ボックスで、アナリティック・ワークスペースでサポートする必要のある言語を選択します。矢印のボタンを使用して「選択された言語」ボックスに移動します。
-
「OK」をクリックして「言語」プロパティ・ページに戻ります。
-
各種ラベルや説明の翻訳を入力します。それぞれの言語に、この情報を入力できる列があります。
-
それぞれのディメンションで、マッピング・ウィンドウを開きます。属性を各言語のソース列にマップします。
図3-24では、アナリティック・ワークスペースにフランス語を追加しています。
メジャー・フォルダの定義
メジャー・フォルダは、メジャーをグループに分類して名前を付けたものです。ユーザーは、SalesやCostsといった名前のメジャーを含む複数のアナリティック・ワークスペースやリレーショナル・スキーマにアクセスすることがあります。アプリケーションではメジャー・フォルダを利用してこれらのメジャーを区別します。
メジャー・フォルダを作成するには、次の手順を実行します。
-
目的のアナリティック・ワークスペースのフォルダを開きます。
-
「メジャー・フォルダ」を右クリックし、ショートカット・メニューから「メジャー・フォルダの作成」を選択します。
-
「メジャー・フォルダの作成」ダイアログ・ボックスの「一般」タブで必要な情報を入力します。
「ヘルプ」をクリックすると、各項目の詳細を参照できます。
メジャー・フォルダが、ナビゲーション・ツリーの「メジャー・フォルダ」の下に表示されます。サブフォルダも作成できます。
図3-25は、メジャー・フォルダの作成画面です。
オブジェクト定義を使用した次元オブジェクトの保存および再作成
Analytic Workspace Managerでは、データ・モデルのすべてまたは一部をテンプレートとして保存できます。テンプレートはファイルまたは表に保存できます。テンプレートには次元オブジェクト(ディメンション、レベル、階層、属性、メジャーなど)のXML定義が含まれます。保存されるのはメタデータのみです。データは保存されません。
テンプレート・ファイルはサイズが小さいため、OracleのWebサイトで配布されているGlobalやSales Historyのテンプレートのように、電子メールやWebサイト上で簡単に配布できます。表に保存されたテンプレートは、そのテンプレートの表示権限を持つデータベース・ユーザーであれば誰でも使用できます。Oracle OLAPでは、CUBE_TEMPLATES表にテンプレートが保存されます。
次元オブジェクトを再作成する場合は、Analytic Workspace Managerでテンプレートを指定します。
また、EIFファイルにアナリティック・ワークスペースを保存したり、EIFファイルからアナリティック・ワークスペースを作成したりすることもできます。EIFファイルは、アナリティック・ワークスペースをコピーするためにフォーマットされたファイルです。これらには、OLAP DMLオブジェクト定義のみでなく、データ(オプション)も保存されます。
この項の内容は次のとおりです。
関連項目:
-
マッピング用のSQL文の保存の詳細は、「キューブのマッピング」を参照してください。
XMLテンプレートへのオブジェクト定義の保存
アナリティック・ワークスペースのすべてのオブジェクトまたは選択したオブジェクトのみのXML定義を保存し、後でそれらのオブジェクトを同一データベースまたは他のコンピュータやプラットフォームのデータベースで再作成できます。
オブジェクト定義をXMLテンプレートに保存する手順:
- ナビゲーション・ツリーでアナリティック・ワークスペース、ディメンション、キューブまたはメジャー・フォルダを右クリックします。
- Objectをテンプレートに保存を選択し、Objectをテンプレートに保存ダイアログ・ボックスを表示します。
- 「ファイルに保存」または「表に保存」を選択します。
- 「オブジェクトの選択」タブで選択したオブジェクトを確認します。
- テンプレートのスキーマ名の使用を変更するには、「オプション」タブを使用します。
- 保存するテンプレートの名前と場所を指定する残りのフィールドを入力します。既存のテンプレートは上書きできません。
関連項目:
次元オブジェクトのコピーおよび貼付け
次元オブジェクトをコピーして適切な場所に貼り付けることができます。コピー可能なアナリティック・ワークスペース・オブジェクトは次のとおりです。
-
アナリティック・ワークスペース
-
ディメンション
-
キューブ
-
メジャー
-
計算済メジャー
次元オブジェクトのコピー手順:
-
ナビゲーション・ツリーでアナリティック・ワークスペース、ディメンション、キューブ、メジャーまたは計算済メジャーを右クリックします。
-
「コピー」を選択します。
次元オブジェクトの貼付け手順:
-
ナビゲーション・ツリーで「アナリティック・ワークスペース」、「ディメンション」、「キューブ」、「メジャー」または「計算済メジャー」を右クリックします。
-
「貼付け」を選択します。