この章では、Analytic Workspace Managerを使用したデータ・モデルの設計方法およびディメンションとキューブの作成方法について説明します。この章では、次の項目について説明します。
第1章では、各種次元オブジェクト(キューブ、メジャー、ディメンション、レベル、階層、属性)の概要を説明しました。この章では、これらをOracle Databaseで定義する方法について説明しますが、その前に、作成する次元モデルについて決定する必要があります。使用するメジャーやディメンションを決めたり、データのディメンションと属性をどのように区別するかを決めます。次元モデルの設計は、紙と鉛筆を使用する、データベース設計ソフトウェア・パッケージを利用するなど、各自に合った方法で行うことができます。
ソース・データがスター・スキーマまたはスノーフレーク・スキーマに格納済である場合、次元モデルの要素は次のように決まります。
ファクト表は、キューブに対応する。
ファクト表のデータ列は、メジャーに対応する。
ファクト表の外部キー制約は、ディメンション表に対応する。
ディメンション表は、ディメンションに対応する。
ディメンション表の主キーは、ベース・レベルのディメンション・メンバーに対応する。
ディメンション表の親列は、上位レベルのディメンション・メンバーに対応する。
ディメンション・メンバーの説明や特性が格納されているディメンション表の列は、属性に対応する。
ソース・データを基にして現在生成されているレポートを検討することにより、次元モデルの構成を把握することもできます。これらのレポートから、レポート利用者にとって必要な集計レベルや、データを絞り込む際に使用する属性を特定できます。
ソース・データを調査するときに、作成しようとしている次元モデルとの一致度がより高いリレーショナル・ビューを作成することもできます。
参照: 次元オブジェクトの概要については、「次元データ・モデルの概要」を参照してください。 Globalアナリティック・ワークスペースの次元モデルの作成事例については、付録A「次元モデルの設計」を参照してください。 |
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は、ユーザーがアナリティック・ワークスペースに対して加えた変更を自動的に保存します。ユーザーが明示的に変更内容を保存する必要はありません。
次のような操作を行ったときに、保存が実行されます。
ダイアログ・ボックス内の「OK」またはこれと同等のボタンをクリックする。
たとえば、「ディメンションの作成」ダイアログ・ボックス内の「作成」をクリックすると、新しいディメンションがデータベースにコミットされます。
プロパティ・シートで「適用」をクリックする。
たとえば、オブジェクトの「一般」プロパティ・ページでラベルを変更した場合、「適用」をクリックしたときに変更が有効になります。
ディメンションは、データを識別および分類する一意の値のリストです。ディメンションはキューブのエッジを形成します。したがって、キューブ内のメジャーのエッジがディメンションによって形成されます。レポートでは、ディメンション値(またはその説明的な属性)が行や列のラベルになります。
次の一般形式のディメンションを定義できます。
親子関係を使用してメンバーをレベルにグループ化するレベルベース・ディメンション。ほとんどのディメンションはレベルベースです。
メンバー間に親子関係が存在するが、それが意味のあるレベルを形成しない値ベース・ディメンション。
レベルまたは階層を持たないリスト・ディメンションまたはフラット・ディメンション。
ディメンション・メンバーが一意である必要性
各ディメンション・メンバーは、一意の値でなければなりません。データの内容によっては、リレーショナル・ソースの自然キーまたはサロゲート・キーをメンバーに使用するディメンションを作成できます。すべてのレベルにおいて値が一意であるかどうか確信できない場合は、デフォルトで選択されるサロゲート・キーを使用してください。
ソース・キーは、リレーショナル・ソースから変更されることなくそのまま読み込まれます。ソース・データとまったく同じキーを使用するには、その値がすべてのレベルを通じて一意でなければなりません。各レベルは、異なるリレーショナル列にマップされる場合もあるため、ソース・データではこの一意性が保証されない場合もあります。たとえば、あるディメンション表のDay列に1
から366
の値があり、Week列に1
から52
の値があるとします。この場合、一意性を保証する手段を講じないと、Dayの52までの値はWeek列の値によって上書きされます。
サロゲート・キーでは、アナリティック・ワークスペースにメンバーをロードする際、レベル名を接頭辞としてメンバー名に追加することによって、一意性を保証します。前述の例で言うと、サロゲート・キーは、1
という単一のディメンション・メンバーを作成するのではなく、DAY_1
とWEEK_1
という2つのディメンション・メンバーを作成します。サロゲート・キーを持つディメンションは、少なくとも1つのレベルベース階層を使用して定義する必要があります。
Analytic Workspace Managerでは、ユーザーが特に指定しないかぎりはサロゲート・キーが作成されます。
Timeディメンションの特別な要件
ディメンションは、ユーザー・ディメンションまたはTimeディメンションとして定義できます。ビジネス分析は履歴データ上で実行されるため、完全に定義された期間が必須です。時間ディメンション表には期間の最終日および期間の列が必要です。これら必須の属性によって、前の期間または後の期間との比較がサポートされます。これらの情報がない場合でも、Timeをユーザー・ディメンションとして定義できますが、時間ベースの分析はサポートされません。
前の期間との差を計算するカスタム・メジャーなど、時間ベースの分析が行えるようにするには、少なくとも1つのレベルを持つTimeディメンションを定義する必要があります。
目的のアナリティック・ワークスペースのフォルダを開きます。
「ディメンション」を右クリックし、「ディメンションの作成」を選択します。
「ディメンションの作成」ダイアログ・ボックスが表示されます。
「一般」タブに必要な情報を入力します。
ソース表のキーがすべてのレベルにおいて一意である場合は、「実装の詳細」タブでデフォルトの設定を変更できます。
「作成」をクリックします。
新しいディメンションが「ディメンション」のサブフォルダとして表示されます。
図3-2は、Productディメンションの作成画面です。
通常、ビジネス分析では、データはレベル単位で集計されます。たとえば、トランザクション・データベースの日次スナップショットがデータベースに格納されているとします。ベース・レベルは日です。このデータは、週、四半期および年レベルで集計できます。
レベルは、親子関係または1対多関係を持ち、これらがレベルベース階層を形成します。たとえば、各週は7日間を集計したもの、各四半期は13週間を集計したもの、各年は4四半期を集計したものです。このような階層構造により、分析者は、高いレベルでなんらかの傾向を発見したら、より低いレベルへとドリルダウンして、その傾向を形成している要因を確認できます。
定義するレベルごとに、そのレベルのディメンション・メンバーのデータソースを指定する必要があります。すべてのレベルのメンバーが、同じディメンションに格納されます。前述の例で言うと、Timeディメンションには、週、四半期および年のメンバーが格納されます。
レベルの作成手順
目的のディメンションのフォルダを開きます。
「レベル」を右クリックし、「レベルの作成」を選択します。
「レベルの作成」ダイアログ・ボックスが表示されます。
「レベルの作成」ダイアログ・ボックスの「一般」タブに必要な情報を入力します。
「作成」をクリックします。
新しいレベルが「レベル」フォルダ内の項目として表示されます。
ヒント: 「ディメンションの作成」ダイアログ・ボックスの「レベル」タブでレベルを作成することもできます。 |
図3-3は、ProductディメンションのClassレベルの作成画面です。
ディメンションは、1つ以上の階層を持つことができます。レベルベース階層または値ベース階層を使用できます。
レベルベース階層
ほとんどの階層はレベルベースです。Analytic Workspace Managerでは、次の一般的なタイプのレベルベース階層がサポートされています。
通常階層は、1つ以上の集計レベルで構成されます。メンバーは、多対1の関係における次に高いレベルにロールアップされ、これらのメンバーがその次に高いレベルにロールアップされ、最終的にトップ・レベルまでロールアップされます。
不規則階層には、異なるベースを持ち、階層の「不規則な」ベース・レベルを形成するメンバーが1つ以上含まれます。不規則階層はキューブ・マテリアライズド・ビューではサポートされません。
スキップレベル階層には、2つ以上高いレベルに親を持ち、階層に欠落部分を作成するメンバーが1つ以上含まれます。スキップレベル階層の例としては、少なくとも1つの都市がその親として国を持つ(アメリカ合衆国におけるワシントン市など)都市-州-国という階層があげられます。
リレーショナル・ソース表では、スキップレベル階層はレベル列にNULLを含む場合があります。スキップレベル階層はキューブ・マテリアライズド・ビューではサポートされません。
ディメンションに複数の階層がある場合、通常はベース・レベルのディメンション・メンバーが共有され、それぞれの階層に分岐します。これらが同一のベース・メンバーおよび集計演算子を使用する場合は、最上位レベルを共有できます。ベース・メンバーと集計演算子が異なるときは、それぞれの集計値を格納するための個別の最上位レベルが必要となります。たとえば、Customerディメンションには、すべてのベース・レベルの顧客を格納し、共通の最上位レベルに集計される、複数の階層を作成できます。一方、Calendar階層とFiscal階層を持つTimeディメンションの場合は、Calendar Year(暦年)レベル(1月から12月まで)とFiscal Year(会計年度)レベル(7月から6月まで)に分けて集計する必要があります。これらの階層では使用されるベース・レベル・メンバーが異なるためです。
値ベース階層
親子関係を含むが、レベルをサポートしないディメンションも存在します。たとえば、従業員ディメンションが、各従業員の上司を識別する親子関係を含む場合があります。しかし、第1レベルの上司、第2レベルの上司、第3レベルの上司……などをグループ化するレベルは、分析の役に立つとはかぎりません。同様に、明細項目ディメンションが、意味のあるレベルにグループ化できないメンバーを含む場合もあります。このような場合は、指定されたレベルを持たない、親子関係で定義された値ベース階層を作成できます。値ベース階層は、ソース・キーを使用するディメンションに対してのみ作成できます。サロゲート・キーはレベルの名前を使用して形成されるため、値ベース階層では使用できません。
目的のディメンションのフォルダを開きます。
「階層」を右クリックし、「階層の作成」を選択します。
「階層の作成」ダイアログ・ボックスが表示されます。
「階層の作成」ダイアログ・ボックスの「一般」タブに必要な情報を入力します。
「ヘルプ」をクリックすると、各項目の詳細を参照できます。
「作成」をクリックします。
新しい階層が「階層」フォルダ内の項目として表示されます。
図3-4は、ProductディメンションのPrimary階層の作成画面です。
属性は、ディメンションの個々のメンバーに関する情報を提供します。属性は、クロス集計表示およびグラフィカルなデータ表示のラベル付け、データの選択、ディメンション・メンバーの編成などの目的に使用します。
Analytic Workspace Managerでは、ディメンションの作成時に一部の属性が自動的に作成されます。これらの属性は一意の型(「詳細な説明」など)を持ちます。
すべてのディメンションは、詳細な説明および簡単な説明付きで作成されます。ソース表に詳細な説明および簡単な説明が含まれている場合は、属性を対応する列にマップできます。ただし、ソース表に含まれている説明が1セットのみである場合は、詳細な説明属性の方をマップします。簡単な説明属性を同じ列にマップすると、データは2回ロードされます。
Timeディメンションは、期間属性および終了日属性付きで作成されます。この情報は、Timeディメンションのすべてのメンバーに対して指定する必要があります。
ディメンション・メンバーに関する補足的な情報(顧客の住所や電話番号、製品の色やサイズなど)を示す、ユーザー定義の属性を追加することもできます。
目的のディメンションのフォルダを開きます。
「属性」を右クリックし、「属性の作成」を選択します。
「属性の作成」ダイアログ・ボックスが表示されます。
「属性の作成」ダイアログ・ボックスの「一般」タブに必要な情報を入力します。
すべてのディメンション・メンバーに適用される属性と、1つのレベルにしか適用されない属性があります。「属性を適用」ボックスで選択する項目に応じて、属性を1つの列にマッピングするか、複数の列にマッピングするかを制御できます。
「ヘルプ」をクリックすると、各項目の詳細を参照できます。
デフォルトのデータ型はVARCHAR2
ですが、別のデータ型に変更する場合は「実装の詳細」タブで設定します。
「作成」をクリックします。
新しい属性が「属性」フォルダ内の項目として表示されます。
図3-5は、ProductディメンションのMarketing Manager属性の作成画面です。ここでは、この属性はItemレベルにのみ適用されます。
マッピングによって、各次元オブジェクトのリレーショナル・データソースを特定します。ディメンションをリレーショナル表またはビューの列にマッピングした後で、データをロードできます。各ディメンションに対して作成、マッピング、ロードの手順を個別に実行するか、またはすべてのディメンションに対して1つの手順を実行してから次の手順を実行します。
マッピング・ウィンドウには、表形式ビューとグラフィカル・ビューがあります。この2つのビューは、キャンバスの上部にあるアイコンを使用して切り替えることができます。
表形式ビュー: スキーマ・ナビゲーション・ツリーから、個々の列名を次元オブジェクトの行にドラッグ・アンド・ドロップします。
グラフィカル・ビュー: スキーマ・ナビゲーション・ツリーから、表およびビューを表すアイコンをマッピング・キャンバスにドラッグ・アンド・ドロップします。その後、列から次元オブジェクトに線を引きます。
表形式ビューでディメンションをマッピングするときは式を使用できます。この機能があるため、ディメンション表にソース列がなくてもディメンションの最上位レベルを作成することが可能です。
マッピング・ウィンドウの「ヘルプ」をクリックすると、詳細を確認できます。
ディメンションのマッピング手順
ナビゲーション・ツリーでディメンションのフォルダを開き、「マッピング」をクリックします。
マッピング・ウィンドウには、左側にスキーマ・ナビゲーション・ツリーがある他、選択したディメンションのマッピング表(行はレベルとその属性)が表示されます。これが表形式ビューです。
マッピング・ウィンドウを大きくするために、ペインの境界線を左側にドラッグします。
スキーマ・ツリーで、ディメンションのメンバーおよび属性が格納されている表、ビューまたはシノニムを開きます。
ソース列を、ディメンションのマッピング表の適切なセルにドラッグ・アンド・ドロップします。
すべてのレベルと属性をマップしたら、「適用」をクリックします。
境界線を右側にドラッグして、ナビゲーション・ツリーが表示されるようにします。
図3-6は、表形式ビューでマップしたProductディメンションを示したものです。矢印は、PRODUCT_DIM.ITEM_BUYER
列がPRODUCT.ITEM.BUYER
属性にマッピングされていることを表しています。
マッピング・ウィンドウから直接、特定のソース列の内容を表示できます。この情報はすぐに確認できるので、名前から内容を判断できないときに推測で作業を進める必要がなくなります。
特定のソース表またはビューの値の表示手順
スキーマ・ツリーまたはマッピング・キャンバスのグラフィカル・ビューでソース・オブジェクトを右クリックします。
ポップアップ・メニューから「データを表示」を選択します。
図3-7は、PRODUCT_DIM
表に格納されているデータを示しています。
Analytic Workspace Managerでは、複数の方法で次元オブジェクトにデータをロードできます。データ・モデルを最も早く作成できるのは、メンテナンス・ウィザードのデフォルト設定を使用する方法です。本番環境では、ここで紹介する方法よりも適切な方法がある場合もあります。これらについては、「データのメンテナンス方法の選択」を参照してください。
ナビゲーション・ツリーで、「ディメンション」フォルダまたは特定のディメンションのフォルダを右クリックします。
「ディメンションのメンテナンス」を選択します。
メンテナンス・ウィザードが起動し、「オブジェクトを選択」ページが表示されます。
「使用可能なターゲット・オブジェクト」から1つ以上のディメンションを選択し、矢印のボタンを使用して「選択済ターゲット・オブジェクト」に移動します。
ディメンション値をすぐにロードする場合は、「終了」をクリックします。
ウィザードの他のページでは、SQLスクリプトを作成したり、ロード処理をOracleジョブ・キューに送ることができます。これらのオプションを使用する場合は、「次へ」をクリックします。
作成ログを確認します(このログは作成が完了したときに表示されます)。ログにエラーの発生が記録されている場合は、そのエラーを修正してから再度メンテナンス・ウィザードを実行します。
一般に、エラーの原因は不適切なマッピングです。不完全なマッピングやソース・オブジェクトに対する変更がないかどうかを確認してください。
図3-8は、メンテナンス・ウィザードの最初のページです。Productディメンションのみがメンテナンスの対象として選択されています。Productディメンションのすべてのメンバーおよび属性が、マップされたリレーショナル・ソースからフェッチされます。
メンテナンス・ウィザードは、ディメンションおよび階層のリレーショナル・ビューを自動的に生成します。これらのビューおよびビューに対する問合せ方法については、第4章を参照してください。
図3-9は、Product Primary階層のリレーショナル・ビューの説明画面です。データについては「データ」タブで確認できます。
ディメンションにデータをロードしたら、デフォルトの階層を表示できます。
デフォルト階層の表示手順
ナビゲーション・ツリーで、ディメンションの名前を右クリックします。
「データを表示」を選択します。
図3-10は、ProductディメンションのPrimary階層です。
キューブは、まったく同じディメンションを持つメジャーを識別する情報オブジェクトです。したがって、データのロード、集計、格納および問合せというすべての段階において、同時に処理される対象となります。
キューブは、ビジネス・メジャーの形状を定義します。キューブは、順序付けされた一連のディメンションによって定義されます。ディメンションはキューブのエッジを形成し、メジャーはキューブ本体のセルになります。
キューブの作成手順
目的のアナリティック・ワークスペースのフォルダを開きます。
「キューブ」を右クリックし、「キューブの作成」を選択します。
「キューブの作成」ダイアログ・ボックスが表示されます。
「一般」タブで、キューブの名前を入力し、ディメンションを選択します。
「集計」タブで「ルール」サブタブをクリックし、各ディメンションの集計方法を選択します。キューブで複数の方法を使用する場合は、必要な結果を取得するためのディメンションの集計順序を指定する必要があります。
集計から除外する階層を指定する必要がなければ、タブの一番下のオプションは無視してかまいません。
キューブのマッピング後にアドバイザを実行すると、最適なパーティションと記憶域がOracle OLAPによって決定されます。ただし、これらのオプションをユーザー自身で定義する場合は、キューブを作成する前に「パーティショニング」タブと「記憶域」タブで設定を行います。
「作成」をクリックします。新しいキューブが「キューブ」以下にサブフォルダとして表示されます。
図3-11は、Unitsキューブの「ルール」サブタブに演算子のリストが表示されている画面です。
メジャーは、ビジネスに関して収集されたファクトを格納します。各メジャーは特定のキューブに属しているため、キューブ内の他のメジャーと特定の特性を共有しています(ディメンションが同じであるなど)。メジャーのデフォルトの特性はキューブから継承されます。
メジャーの作成手順
新しいメジャーのディメンションを持つキューブのフォルダを開きます。
「メジャー」を右クリックし、「メジャーの作成」を選択します。
「メジャーの作成」ダイアログ・ボックスが表示されます。
「一般」タブで、メジャーの名前を入力します。
「作成」をクリックします。
新しいメジャーが「メジャー」フォルダ内の項目としてナビゲーション・ツリーに表示されます。
図3-12は、「メジャーの作成」ダイアログ・ボックスの「一般」タブです。
キューブのマッピングでは、ディメンションをマッピングしたときと同じインタフェースを使用します(「ディメンションのマッピング」を参照)。
表形式ビューでキューブをマッピングするときは式を使用できます。この機能により、データ・メンテナンスの一部として次のタスクを実行できるため、中間的なデータ・ステージングが不要になります。
OLAP式の構文で使用できる関数や演算子を組み合せて、リレーショナル・データに対する計算を実行する。
基になるリレーショナル・ソースよりも集計度が高いメジャーを作成する。たとえば、TimeディメンションにDay、Month、QuarterおよびYearという列があり、Salesのファクト表がDay外部キー列によってTimeに関連付けられているとします。基本的なマッピングの場合、Dayレベルでキューブにデータを格納します。しかし、データ・リフレッシュ時にMonthレベルで集計することが可能です。ワンアップ・マッピングと呼ばれる方法を使用して、キューブをTimeのMonth列にマップして、Day列でディメンション表とファクト表との結合を指定します。
マッピング・ウィンドウの「ヘルプ」をクリックすると、これらの方法の詳細を確認できます。
ナビゲーション・ツリーでキューブのフォルダを開き、「マッピング」をクリックします。
マッピング・ウィンドウには、左側にスキーマ・ナビゲーション・ツリーがある他、選択したキューブとそのディメンションのマッピング表が表示されます。これが表形式ビューです。
マッピング・ウィンドウを大きくするために、ペインの境界線を左側にドラッグします。
スキーマ・ツリーで、メジャーのデータが格納されている表、ビューまたはシノニムを開きます。
ソース列を、キューブのマッピング表の適切なセルにドラッグ・アンド・ドロップします。
すべてのディメンションとメジャーをマップしたら、「適用」をクリックします。
境界線を右側にドラッグして、マッピング・ウィンドウのサイズを小さくします。
図3-13では、マッピング・キャンバスで、UnitsキューブがUNITS_FACT
表の列にマップされています。マッピングを保存すると、この図のようなベース・レベルのマッピングの結合状態が表示されます。
パーティション化は、キューブ内のメジャーを物理的に格納する手法の1つです。これにより、大きなメジャーのパフォーマンスが次のように向上します。
データ構造をコンパクトに保つことで、スケーラビリティが向上します。各パーティションは、小さなメジャーのように機能します。
関連するデータはまとめて格納されるため、問合せまたはメンテナンスの際に対象となるデータセットが小さくて済みます。
データ・メンテナンス時のパラレル集計が可能になります。各パーティションを別々のプロセスで集計できます。
記憶域上の古いデータの削除が容易になります。古いパーティションを削除し、新しいパーティションを追加できます。
パーティションの数は、キューブへのデータのロードやデータの集計に割当て可能なデータベース・リソースに影響します。十分なリソースが割り当てられていれば、複数のパーティションを同時に集計できます。
ソース表の分析とパーティション化方法の決定は、キューブ・パーティショニング・アドバイザによって行われます。キューブ・パーティショニング・アドバイザの推奨する方法を採用できますが、ユーザー独自のパーティション化方法を決めることもできます。
注意: キューブ・パーティショニング・アドバイザは、データソースにキューブをマッピングした後、データをロードする前に実行してください。パーティション化方法は、キューブ・パーティショニング・アドバイザを使用していつでも変更できますが、変更後はデータを再ロードする必要があります。独自のパーティション化方法を指定できるのは、キューブの作成時のみです。 |
ライフサイクル管理を中心に考慮してパーティション化方法を決める場合は、Timeディメンションに基づいてキューブをパーティション化する必要があります。こうすれば、古い期間をまとめて削除し、新しい期間を新しいパーティションに追加できます。図3-15では、TimeディメンションのQuarterレベルがパーティション化キーとして使用されています。キューブ・パーティショニング・アドバイザの時間オプションを選択すると、Timeディメンションの階層とレベルをパーティション化に使用するよう推奨されます。
ライフサイクル管理が主要な考慮事項でない場合は、キューブ・パーティショニング・アドバイザを実行して統計オプションを選択します。キューブ・パーティショニング・アドバイザによって、作成と問合せのパフォーマンスを最適化するための方法が決定されます。
キューブ・パーティショニング・アドバイザの実行手順
キューブをデータソースにマップします(マップが完了していない場合)。
ナビゲーション・ツリーで、プロパティ・ページを表示するキューブを選択します。
「パーティショニング」タブで、「キューブ・パーティショニング・アドバイザ」をクリックします。
「時間ディメンションを使用するパーティション」または「統計を使用するパーティション」を選択します。
キューブ・パーティショニング・アドバイザがキューブを分析する間、しばらく待機します。分析が完了すると、キューブ・パーティショニング・アドバイザによる推奨設定が表示されます。
キューブ・パーティショニング・アドバイザの推奨内容を評価します。
推奨設定を使用する場合は、「パーティション・アドバイスの受入れ」を選択します。新しいパーティションが適用されたキューブが再作成されます。
推奨設定を使用しない場合は、「パーティション・アドバイスの受入れ」ボックスの選択を解除します。
「OK」をクリックします。
図3-14は「キューブ・パーティショニング・アドバイザ」ダイアログ・ボックスを示しています。
キューブ・パーティショニング・アドバイザにより、TimeディメンションのCalendar階層のQuarterレベルでのパーティション化を推奨されたとします。この場合、各Quarterおよびその子孫が別個のパーティションに格納されます。アナリティック・ワークスペースに3年分のデータがある場合には、Quarterでパーティション化すると、デフォルトの上位パーティションの他に、12の下位パーティションが作成されます。上位パーティションには、残りのすべてのレベル、つまりQuarterより上のレベル(Yearなど)と、その他の階層のレベル(Fiscal YearやYear-to-Dateなど)が格納されます。
図3-15に、Quarterでパーティション化したTimeディメンションを示します。
キューブにデータをロードする方法は、ディメンションにデータをロードする方法と同じです。ただし、一般にビジネス・メジャーのデータをロード、集計する時間が長くなります。少数のデータ・サンプルを使用して次元モデルを作成する場合を除き、1つ以上のバックグラウンド・プロセスで作成を実行した方がよい場合もあります。
ナビゲーション・ツリーで、「キューブ」フォルダまたは特定のキューブの名前を右クリックします。
「キューブのメンテナンス」を選択します。
メンテナンス・ウィザードが起動し、「オブジェクトを選択」ページが表示されます。
「使用可能なターゲット・オブジェクト」から1つ以上のキューブを選択し、矢印のボタンを使用して「選択済ターゲット・オブジェクト」に移動します。ディメンションがすでにロードされている場合は、「選択済ターゲット・オブジェクト」からそのディメンションを削除できます。
「ディメンション・データ処理オプション」ページでは、デフォルト値を変更する必要はありません。
「アナリティック・ワークスペースのタスク処理オプション」ページでは、作成処理をOracleジョブ・キューに発行したり、Analytic Workspace Managerの外部で実行可能なSQLスクリプトを作成することもできます。
また、この作成処理に使用されるプロセス数を指定することもできます。パラレル処理の数は、キューブのパーティションの数、作成専用のプロセスの数、JOB_QUEUE_PROCESSES
初期化パラメータの設定のうち、最も小さい数が上限になります。
「ヘルプ」をクリックすると、各項目の詳細を参照できます。
「終了」をクリックします。
図3-16は、作成処理をすぐにOracleジョブ・キューに発行する場合の例です。
キューブにデータをロードしたら、Analytic Workspace Managerでビジネス・メジャーのデータを表示できます。
キューブ内のデータの表示手順
ナビゲーション・ツリーでキューブを右クリックします。
ポップアップ・メニューから「データを表示」を選択します。
メジャー・データ・ビューアが開き、選択したメジャーがページ上部のクロス集計とページ下部のグラフに表示されます。クロス集計では、行と列の見出しになっているディメンション階層を開いたり閉じたりできます。また、ディメンションをピボットしたりスワップすることによって、ディメンションの位置を変更することもできます。必要に応じて、あるディメンションを別のディメンションの入れ子にして、複数のディメンションを行や列の見出しにできます。
ピボット操作を行うには、ディメンションをある位置から別の位置に(通常は他のディメンションの上または下に)ドラッグ・アンド・ドロップします。
ディメンションをスワップする場合は、ディメンションを別のディメンションの上に直接ドラッグ・アンド・ドロップすれば、2つのディメンションの位置が入れ替わります。
選択データを大幅に変更する場合は、「ファイル」メニューから「クエリー・ビルダー」を選択します。
図3-17は、メジャー・データ・ビューアに表示されたUnitsキューブです。
データの次元モデルを作成するときは、各オブジェクトを作成した後すぐにそれをマップおよびロードすることをお薦めします。オブジェクト定義やマッピングで間違いがあった場合、すぐに見つけて修正できるためです。
ただし、本番環境では、できるだけ簡単で時間もかからない定期的なメンテナンスが必要です。このような場合は、データのメンテナンス方法を選択できます。
キューブはメンテナンス・ウィザードを使用してリフレッシュできます。このウィザードでは、キューブを即時にリフレッシュするか、リフレッシュ処理をジョブとしてOracleジョブ・キューに送るか、またはPL/SQLスクリプトを生成します。スクリプトは手動で実行する以外にも、Oracle Enterprise Managerのスケジューラや、PL/SQLパッケージのDBMS_SCHEDULER
などのスケジューリング・ユーティリティを使用することもできます。
生成したスクリプトによって、PL/SQLパッケージのDBMS_CUBE
のBUILD
プロシージャがコールされます。このスクリプトを編集したり、このパッケージを使用してスクリプトを一から作成したりできます。
複数のプロセスが作成処理に割り当てられている場合、パーティション化されたキューブのデータはパラレルにロードおよび集計されます。この結果は作成ログで確認できます。
さらに、それぞれのキューブに対して次のデータ・メンテナンス方法を使用できます。
カスタム・キューブ・スクリプト
キューブ・マテリアライズド・ビュー
既存のマテリアライズド・ビューをキューブに置き換えるように定義した場合は、必ずマテリアライズド・ビューを使用してデータ・メンテナンスを行います。マテリアライズド・ビュー機能を有効にすると、カスタム・キューブ・スクリプトで実行できる分析の種類が制限されます。
キューブ・スクリプトは、問合せ用のキューブを準備する手順を順番に記述したものです。手順はそれぞれ、特定のデータ変換を表しています。これらの手順が実行される順序を指定することによって、相互依存性を許容できます。
各キューブには、データをロードしたりキューブに対して定義された規則に従ってデータを集計したりする、Load_and_Aggregateというデフォルトのキューブ・スクリプトが自動的に割り当てられます。スクリプトはいくつでも追加定義でき、そのうちの1つをデフォルトのキューブ・スクリプトとして指定できます。キューブをリフレッシュする方法はすべて、デフォルトのキューブ・スクリプトを実行します。他のキューブ・スクリプトは、メンテナンス・ウィザードを使用して手動で実行できます。
データの消去: キューブ全体、選択したメジャー、またはキューブの選択した部分からデータを消去します。高速リフレッシュ用にディテール・データ(リーフ)のみを消去するか、集計データのみを消去するか、または完全リフレッシュ用に両方を消去することもできます。通常、古いデータ値の消去は新しい値をロードする前に実行されます。
ロード: ソース表のデータをキューブにロードします。キューブにはすべてのメジャーをロードすることも、選択したメジャーのみをロードすることもできます。
集計: キューブに対して定義された規則に従って集計値を生成します。キューブ全体、選択したメジャーまたはキューブの選択した部分を集計できます。
分析: オプティマイザ統計を生成します。これにより、一部の問合せのパフォーマンスを向上させることができます。詳細は、「キューブおよびディメンションの分析」を参照してください。通常、統計の生成はデータ・メンテナンスの最後に実行されます。
PL/SQL: PL/SQLコマンドまたはスクリプトを実行します。たとえば、データ・メンテナンスの開始時にリレーショナル・ソース表のリフレッシュを始めるPL/SQLスクリプトを実行できます。
キューブは、キューブ・スクリプトの高度な分析をサポートするために使用する場合、キューブ・マテリアライズド・ビューとして拡張できません(「キューブへのマテリアライズド・ビュー機能の追加」を参照)。この場合、キューブ内のデータが失効していないかどうかや、リフレッシュする必要があるかどうかについて、ユーザー自身で判断する必要があります。
キューブ・スクリプトの作成手順
キューブのフォルダを開きます。
「キューブ・スクリプト」を右クリックし、「キューブ・スクリプトを作成」を選択します。
「キューブ・スクリプトを作成」ダイアログ・ボックスが表示されます。
「一般」タブで、キューブ・スクリプトの名前を入力します。
新しい手順を作成するには、「新規手順」をクリックします。
手順のタイプを選択します。
選択した手順のタイプに関する「新規手順」ダイアログ・ボックスが表示されます。
それぞれのタブに必要な情報を入力し、「OK」をクリックします。
新しい手順がキューブ・スクリプトの「一般」タブに表示されます。
「作成」をクリックします。
新しいキューブ・スクリプトが「キューブ・スクリプト」フォルダ内の項目として表示されます。
キューブ・スクリプトを実行します。
ナビゲーション・ツリーでキューブ・スクリプトを右クリックし、「キューブ・スクリプトの実行」を選択します。
メンテナンス・ウィザードが起動します。
ウィザードの各手順を実行します。
結果を表示するには、キューブを右クリックして「データを表示」を選択します。
図3-19に「キューブ・スクリプトを作成」ダイアログ・ボックスを示します。この図では、いくつかの手順がすでに定義されています。
Oracle OLAPキューブは、マテリアライズド・ビュー機能を利用できるように拡張できます。キューブはOracle Databaseマテリアライズド・ビュー・サブシステムを介して段階的にリフレッシュでき、ソース表に対する問合せの透過的リライトの対象として使用できます。このように拡張されたキューブを、キューブ・マテリアライズド・ビューと呼びます。
キューブ・マテリアライズド・ビューに関連付けられたOLAPディメンションも、マテリアライズド・ビュー機能を使用して定義されます。
キューブ・マテリアライズド・ビューとして設定するキューブは、次の条件を満たしている必要があります。
キューブのすべてのディメンションに、レベルと階層が少なくとも1つずつ存在する。不規則階層およびスキップレベル階層はサポートされない。
キューブのすべてのディメンションで同じ集計演算子(SUM
、MIN
、MAX
のいずれか)を使用している。
定義とマップが完全に行われている。たとえば、キューブに5つのメジャーがある場合、その5つすべてがソース表にマップされている。
ディテール表で、ディメンションおよびRELY制約がサポートされている。これらが定義されていない場合は、リレーショナル・スキーマ・アドバイザを使用して、ディテール表に対してこれらを定義するスクリプトを生成できる。
圧縮されている。
計算済メジャーは使用できるが、キューブ・スクリプト内のより高度な分析機能は使用できない。
マテリアライズド・ビュー機能を追加する手順
ナビゲーション・ツリーでキューブを選択します。
そのキューブのプロパティ・シートが表示されます。
「マテリアライズド・ビュー」タブを選択します。
チェック・リストを確認し、エラーになったテストがあった場合はその原因を修正します。
キューブ全体が有効な状態にならないと、キューブ・マテリアライズド・ビューを定義できません。
自動リフレッシュする場合は、このページの上半分の項目について設定を行います。クエリー・リライトを行う場合は、このページ内のすべての項目について設定を行ってください。
このページの各項目に関する詳細を確認する場合は、「ヘルプ」をクリックしてください。
「適用」をクリックします。
アナリティック・ワークスペースと同じスキーマにキューブ・マテリアライズド・ビューが表示されます。キューブおよびキューブの各ディメンションのマテリアライズド・ビューが作成されます。キューブ・マテリアライズド・ビューにはデータは格納されません。データはキューブに格納されます。CB$
という接頭辞が付いた表が、キューブ・マテリアライズド・ビューです。
新しいマテリアライズド・ビューの最初の状態は失効状態であるため、リフレッシュを実行するまでクエリー・リライトは利用できません。キューブの「マテリアライズド・ビュー」タブで最初のリフレッシュ時刻を指定するか、メンテナンス・ウィザードでリフレッシュを実行できます。
図3-20は、Unitsキューブの「マテリアライズド・ビュー」タブを示しています。ここでは、毎週木曜日の午後10時にデータを自動リフレッシュするように設定されています。
1つのアナリティック・ワークスペースで複数の言語をサポートできます。このサポートにより、OLAPのアプリケーションやツールのユーザーは自国語でメタデータを表示することが可能になります。たとえば、メジャー、キューブ、ディメンションの表示名に翻訳された名前を使用できます。また、各言語に対応する複数の列に属性をマップすることも可能です。
データベース・キャラクタ・セットでサポートされていて、訳語を指定できる限り、使用できる言語の数と種類に制限はありません。言語の追加や削除はいつでも行うことができます。
複数言語のサポートの追加手順
ナビゲーション・ツリーでアナリティック・ワークスペースのフォルダを開きます。
「言語」を選択して言語のプロパティ・ページを表示します。
「一般」タブで、「言語の変更」をクリックします。
「言語の変更」ダイアログ・ボックスで、アナリティック・ワークスペースでサポートされる言語を選択します。矢印のボタンを使用して「選択された言語」ボックスに移動します。
「OK」をクリックして「言語」プロパティ・ページに戻ります。
各種ラベルや説明の翻訳を入力します。それぞれの言語に、この情報を入力できる列があります。
それぞれのディメンションで、マッピング・ウィンドウを開きます。属性を各言語のソース列にマップします。
メジャー・フォルダは、メジャーをグループに分類して名前を付けたものです。ユーザーは、SalesやCostsといった名前のメジャーを含む複数のアナリティック・ワークスペースやリレーショナル・スキーマにアクセスすることがあります。アプリケーションではメジャー・フォルダを利用してこれらのメジャーを区別します。
目的のアナリティック・ワークスペースのフォルダを開きます。
「メジャー・フォルダ」を右クリックし、ポップアップ・メニューから「メジャー・フォルダの作成」を選択します。
「メジャー・フォルダの作成」ダイアログ・ボックスの「一般」タブで必要な情報を入力します。
「ヘルプ」をクリックすると、各項目の詳細を参照できます。
新しいメジャー・フォルダが、ナビゲーション・ツリーの「メジャー・フォルダ」の下に表示されます。サブフォルダも作成できます。
図3-21は、メジャー・フォルダの作成画面です。
Analytic Workspace Managerでは、データ・モデルのすべてまたは一部をテキスト・ファイルとして保存できます。このテキスト・ファイルには、ディメンション、レベル、階層、属性、メジャーなどの次元オブジェクトのXML定義が含まれます。保存されるのはメタデータのみであり、データは保存されません。テンプレートは小さなファイルです。したがって、GlobalおよびSales HistoryのテンプレートがOracle Webサイトで配布されているように、電子メールやWebサイト上で簡単に配布できます。次元オブジェクトを再作成するには、Analytic Workspace Managerでテンプレートを指定するだけです。
次の種類のオブジェクトをXMLテンプレートとして保存できます。
アナリティック・ワークスペース: すべての次元オブジェクトが保存されます。アナリティック・ワークスペース全体を保存すれば、自動的にメジャー・フォルダも保存されます。
ディメンション: ディメンションとそのレベル、階層、属性およびマッピングが保存されます。
キューブ: キューブとそのメジャー、計算済メジャー、キューブ・スクリプトおよびマッピングが保存されます。
テンプレートは、ローカル・システム上の任意の場所に保存できます。
テンプレートの作成手順
ナビゲーション・ツリーでアナリティック・ワークスペース、ディメンションまたはキューブを右クリックし、「テンプレートにアナリティック・ワークスペースを保存」(または「テンプレートにディメンションを保存」、「テンプレートにキューブを保存」)を選択します。
テンプレートからアナリティック・ワークスペースを再作成する手順
ナビゲーション・ツリーで「アナリティック・ワークスペース」を右クリックし、「テンプレートからアナリティック・ワークスペースを作成」を選択します。
テンプレートからディメンションまたはキューブを再作成する手順
アナリティック・ワークスペースを開くか、または作成します。
ナビゲーション・ツリーで「ディメンション」または「キューブ」を右クリックし、「テンプレートからディメンションを作成」(または「テンプレートからキューブを作成」)を選択します。