0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<(args.length-2); i+=3) if ((obj=findObj(args[i]))!=null) { v=args[i+2]; if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; } obj.visibility=v; } } //Define function to show one layer and hide others: function show(whichLayer) { if(layerDisp) { showHide(layerDisp,'','hide'); } showHide(whichLayer,'','show'); layerDisp = whichLayer; } //Define function to keep score and display feedback: function Engine(question, answer, layerSuffix) { if (answer != ans[question]) { show('incorrect'+layerSuffix); } else { if (!done[question]) { score++; } show('correct'+layerSuffix); } done[question] = -1; } //Define function to verify answer for checkbox: function checkAnswer(question, whichform, whichbox) { var checkTotal = 0; with (whichform) { for (i = 0; i < whichbox.length; i++) { if (whichbox[i].checked == true) { checkTotal = checkTotal + eval(whichbox[i].value); } } } Engine(question,checkTotal,question*10); } //Define function to show correct answer for checkbox: function showAnswer(question, whichform, whichbox) { var residue = ans[question]; var currAnswer = 1; if(layerDisp) { showHide(layerDisp,'','hide'); } with (whichform) { for (i = 0; i < whichbox.length; i++) { if ((residue>0) && (residue%(currAnswer*2)==currAnswer)){ whichbox[i].checked = true; residue-=currAnswer; } else { whichbox[i].checked = false; } currAnswer*=2; } } } //Define function to init a form function clearForm(form) { //Set all checkboxes and radio buttons on form to unchecked: for (xx=0; xx < form.elements.length; xx++) { if (form.elements[xx].type == 'checkbox' | form.elements[xx].type == 'radio') { form.elements[xx].checked = false; } } } //Define function to init all forms on reload: function InitForm() { clearForm(document.form1) clearForm(document.form2) clearForm(document.form3) } // End --> function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i
リレーショナル・ターゲット・ウェアハウスの設計
目的
Oracle Warehouse Builderのリレーショナル・ターゲット・ウェアハウスの設計によって、データ・ウェアハウスに機能を提供するリレーショナル・スキーマ(第3正規形スキーマやディメンション・スキーマ)がモデル化されます。 また、高性能の分析を実行する多次元システムも設計できます。
このレッスンでは、1つのキューブと2つのディメンションで構成される小規模なデータ・ウェアハウスをモデル化します。 ターゲット・ウェアハウスのデータソースは、フラット・ファイルです。
所要時間:
約60分
注:
このチュートリアルとセットアップ・スクリプトは、Oracle Warehouse Builder 11g
Release 1だけに対応しています。
このOracle By Exampleチュートリアルの前のバージョンは、Oracle Warehouse Builder 10g
Release 1および2に対応しています。
トピック
このチュートリアルでは、以下のトピックについて説明します。
スクリーンショットの表示
このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロード、表示されます。 (警告: すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)
注: 各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にある各アイコンの上にカーソルを置いてください。
概要
Oracle Warehouse Builderは、高度なリレーショナル・モデリングとディメンション・モデリング機能を提供します。 表、ビュー、マテリアライズド・ビュー、順序、外部表などのリレーショナル・オブジェクトやディメンション、キューブなどのディメンション・ターゲット・オブジェクトの定義を作成できます。
Oracle Warehouse Builderでは、物理的な
実装からディメンションの
設計が区別されます。 簡単なクリック操作で、ディメンション・オブジェクトに対してリレーショナル実装または多次元実装のいずれかを選択できます。 したがって、リレーショナル・ターゲット・ウェアハウスまたはOLAPに実装される多次元ウェアハウスとして同じディメンション・オブジェクト設計を実装できます。
このレッスンでは、リレーショナル・ターゲット・ウェアハウスとして実装されるディメンション・モデルを設計します。 リレーショナル・モデリングの場合、Oracle Warehouse Builderでは、
スター・スキーマおよびスノーフレーク・スキーマ
の設計と実装をサポートします。
また、2つのディメンションへの外部キー参照がある単一のキューブで構成される簡単なスター・スキーマをモデル化します。
トピック・リストに戻る
前提条件
このチュートリアルを始める前に次のことを確認してください。
トピック・リストに戻る
ターゲット・ウェアハウス・モジュールの定義
ターゲット・ウェアハウスのモデルを設計するには、ターゲット・モジュールの定義から開始します。 ターゲット・モジュールには、設計するターゲット・オブジェクトのメタデータ定義が含まれます。 各ターゲット・モジュールをターゲット・ユーザー・スキーマにマップする必要があります。
このため、Oracle Warehouse Builderターゲット・モジュールを作成する前に、配置するターゲット・オブジェクトを物理的に格納するターゲット・スキーマを作成する必要があります。 次に、適切な場所を割り当てて、ターゲット・モジュールがこのターゲット・スキーマを参照していることを確認します。
ターゲット・ウェアハウス・モジュールを設定するには、以下の手順を実行します。
ターゲット・ユーザーおよびターゲット・ロケーションの作成
ワークスペース所有者としてOracle Warehouse Builder Design Centerにログインすると、Oracle Warehouse Builderは、コンソールの右下隅にGlobal Explorerを表示します。 このGlobal Explorerパネルの実装要件に従って、メタデータのセキュリティ戦略を定義できます。
以下の手順を実行して、ターゲット・ユーザーおよびターゲット・ロケーションを作成します。
注:リポジトリ・アシスタントを使用してターゲット・ユーザーを作成することもできます。
| 1.
|
Global Explorerパネルで、「
Security」ノードを開きます。 「
Users」ノードを右クリックして、「
New」を選択します。
注:新しいユーザーを作成する前に、変更を保存するか元に戻す必要があります。 以前の変更を保存するには、Designメニューから「
Save All」を選択するか、ツールバーの
をクリックします。
| | 2.
|
Create Userダイアログで、使用できるデータベース・ユーザーのリストから選択するか新しいユーザーを作成できます。
「
Create DB User」をクリックして、データベースの新しいターゲット・ユーザーを作成します。
| | 3.
|
新しいターゲット・ユーザーを作成するには、DBA権限が必要です。 Create Database Userダイアログ・ボックスで、ユーザー名に
system、
パスワードにシステム・アカウント・パスワードを入力します。
新しいデータベース・ユーザーのユーザー名とパスワードに
EXPENSE_WH、
EXPENSE_WHと入力します。 表領域プロパティのデフォルト値を受け入れます。 「
OK」をクリックします。
Create Userダイアログに戻ります。 EXPENSE_WHがSelected Usersリストに追加されていることを確認します。 「
OK」をクリックします。
| | 4.
|
進捗ウィンドウが閉じた後、Usersノードを確認します。 既存のターゲット・ユーザーのリストに追加されたEXPENSE_WHユーザーを確認します。
| | 5.
|
EXPENSE_WHユーザーのターゲット・ロケーションを作成します。
注:ロケーションは、オブジェクトを配置するデータベース・スキーマまたはターゲット・ツールに関する情報を定義します。 ロケーションは、Oracle Database、SAP、フラット・ファイルなどのモジュール・タイプに固有です。
「
Locations」→「
Databases」を開きます。 「
Oracle」を右クリックして、「
New」を選択します。
| | 6.
|
Create Oracle Database Locationウィンドウで、次の情報を指定します。
| NameフィールドのORACLE_LOCATION1を
EXPENSE_WH_LOCATIONに変更します。
|
| User Name:
EXPENSE_WH
|
| Password:
EXPENSE_WH
|
| Host:
localhostまたはマシン名
|
| Port:
1521
|
| Service Name:
orcl
|
| Schema:
EXPENSE_WH
|
| Version:
10.2または
11.1(使用しているデータベース・バージョンに準拠)
|
「
Test Connection」をクリックします。 成功メッセージが表示されます。
| | 7.
|
「
OK」をクリックします。 「
Locations」→「
Database」→「
Oracle」ノードを開きます。 既存のロケーションのリストに追加されたEXPENSE_WH_LOCATIONを確認します。
|
ターゲット・ウェアハウス・オブジェクトを物理的に格納する新しいターゲット・スキーマのEXPENSE_WHが作成されました。 また、新しいターゲット・スキーマのターゲット・ロケーションであるEXPENSE_WH_LOCATIONも作成されました。
トピックに戻る
ターゲット・モジュールの作成
新しいターゲット・スキーマを示すモジュールを作成します。
| 1.
|
OWB_DEMOプロジェクトで「
Databases」ノードを開き、「
Oracle」ノードを右クリックして、「
New」を選択します。
Create Moduleウィザードが起動します。 Welcomeページで「
Next」をクリックします。
| | 2.
|
Name and Descriptionページで、モジュール名として
EXPENSE_WHを入力します。 モジュール・ステータスの
Developmentを受け入れて、モジュール・タイプとして
Warehouse Targetが選択されていることを確認します。 「
Next」をクリックします。
| | 3.
|
Connection Informationページで、モジュールの場所としてLocationドロップダウン・リストから「
EXPENSE_WH_LOCATION」を選択します。 関連するすべての接続の詳細が指定されていることを確認します。 これによって、Oracle Warehouse Builderは作成したユーザーから直接ロケーション情報を取得します。 「
Next」をクリックします。
注:Locationドロップダウン・リストからEXPENSE_WH_LOCATIONを選択する前は、デフォルトでEXPENSE_WH_LOCATION1が選択されています。 これは、モジュールを作成するたびに、Oracle Warehouse Builderが、モジュール名の接尾辞として_LOCATION<番号>を追加したロケーションを自動的に割り当てるからです。
EXPENSE_WHターゲット・ユーザーを作成した際に作成されたEXPENSE_WH_LOCATIONを選択します。
Summaryページで詳細を確認して、「
Finish」をクリックします。
| | 4.
|
EXPENSE_WHターゲット・モジュールがOWB_DEMOプロジェクトのOracleノードの下に追加されていることを確認します。 「
EXPENSE_WH」を開いて、内容を確認します。
|
トピックに戻る
現時点で、空のターゲット・スキーマのEXPENSE_WHにマップされている空のターゲット・モジュールのEXPENSE_WHが作成されています。 次に、このターゲット・モジュールのターゲット・オブジェクトを設計します。
トピック・リストに戻る
外部表の作成
前のレッスンで、2つのフラット・ファイルをインポートしてサンプリングしたフラット・ファイル・モジュールを作成しました。 フラット・ファイルからリレーショナル・ターゲットまたはディメンション・ターゲットにデータを移動して変換するには、
フラット・ファイル演算子
(英語)または
外部表を使用できます。 外部表によって、リレーショナル表形式でファイル・ソースのデータを表すことができます。
外部表を使用すると、Oracleデータベースのフラット・ファイルを直接問い合わせることができます。また、フラット・ファイルの問合せ、結合、変換、および制限も実行できます。
外部表を使用して非リレーショナル・ソースのソース・データにアクセスすると、次のような多くの利点があります。
|
SQLサポートおよび異種結合:外部表を使用すると、フラット・ファイルに含まれるデータの問合せおよび変換を直接実行できます。SQLコードは、Oracle Warehouse Builderによって生成されます。 また、フラット・ファイルとリレーショナル表の異種結合が可能になります。
| |
パラレルSELECT文の有効化:表を使用したファイルへのパラレル・アクセスを実行できます。 たとえば、SELECT文をパラレル実行できるので、パフォーマンスが最適化されます。
| |
フラット・ファイルのステージング表の排除:フラット・ファイル演算子を使用する場合、Oracle Warehouse BuilderがSQL*Loaderコードを生成し、データをロードするリレーショナル・ステージング表が必要になります。 外部表によってステージング表が不要になるので、フラット・ファイル・データをロードする処理時間が短縮され、必要なストレージ領域も縮小します。
|
Oracle Warehouse Builderで、フラット・ファイル構造に外部表を定義し、データベースに外部表を配置して、マッピングに外部表を使用できます。
以前にサンプリングした2つのフラット・ファイルを示す2つの外部表を作成します。
| 1.
|
Project Explorerパネルで、「
OWB_DEMO」プロジェクトを開きます。 「
Databases」→「
Oracle」→「
EXPENSE_WH」を開きます。 「
External Tables」を右クリックして、「
New」を選択します。
Create Module Tableウィザードが起動します。 Welcomeページで「
Next」をクリックします。 ウィザードで外部表の作成を実行します。
| | 2.
|
Name and Descriptionページで、外部表の名前として
EXPENSE_CATEGORIESを入力します。 「
Next」をクリックします。
| | 3.
|
File Selectionページで「
EXPENSE_CATEGORIES_CSV」を選択して、「
Next」をクリックします。 前のレッスンでサンプリングしたこのファイルには、外部表のメタデータが含まれます。
| | 4.
|
Locationsページで、外部表で使用するデフォルトの場所を選択します。 ドロップダウン・ボックスから「
SOURCE_LOCATION」を選択します。 「
Next」をクリックします。
Summaryページで詳細を確認して、「
Finish」をクリックします。 ウィザードが外部表を作成します。 Project Explorerで、External Tablesノードに追加された
EXPENSE_CATEGORIESを確認します。
同じ手順を繰り返して、export_csvファイル用の外部表を作成します。
| | 5.
|
「
External Tables」を右クリックして、「
New」を選択します。 「
Next」をクリックして、Create External TableウィザードのWelcomeページをスキップします。 Name and Descriptionページで、外部表の名前として
EXPENSE_DATAを入力します。 「
Next」をクリックします。
| | 6.
|
File Selectionページで「
EXPORT_CSV」を選択して、「
Next」をクリックします。
| | 7.
|
Locationsページで、前の外部表と同じデフォルトの場所を選択します。 ドロップダウン・ボックスから「
SOURCE_LOCATION」を選択します。 「
Next」をクリックします。 Summaryページで詳細を確認して、「
Finish」をクリックします。 ウィザードが外部表を作成します。
2つの外部表がターゲット・モジュールに追加されていることを確認します。
| | 8.
|
2つの外部表の物理ファイル・システムの詳細を構成する必要があります。 「
EXPENSE_CATEGORIES」を右クリックして、「
Configure」を選択します。
Configuration Propertiesダイアログ・ボックスで「
Data Files」を右クリックして、「
Create」を選択します。 デフォルト名のNEW_DATAFILE_1を受け入れます。
| | 9.
|
Configuration Propertiesダイアログ・ボックスの右側にあるData File Locationプロパティの「
SOURCE_LOCATION」を選択します。 Data File Nameプロパティに
expense_categories.csvと入力します。 「
OK」をクリックします。
| | 10.
|
同じ手順を繰り返して、
EXPENSE_DATA外部表を構成します。 スクリーンショットに示されているような構成になります。
「
OK」をクリックします。
|
サンプリングした2つのフラット・ファイルを示す2つの外部表の作成が完了しました。
トピック・リストに戻る
ディメンションの設計
ディメンションは、スター・スキーマの主要なデータ編成単位です。 一般的に使用されるディメンションの例は、Customer、ProductおよびTimeです。
ディメンションは、一連のレベルと、これらのレベルに定義されている一連の階層で構成されます。 一般的に、ユーザーは既知のディメンション階層をドリルダウンしてデータを分析します。 使用するデータの選択に関する賢明な決定を問合せオプティマイザが行うため、問合せパフォーマンスが向上します。
ディメンションを作成するには、以下を定義する必要があります。
この項では、以下の手順を実行します。
データ・オブジェクト・エディタでの事前定義のPRODUCTSディメンションの確認
このトピックでは、ディメンションの基本的な例を説明します。 ディメンションを作成する前に、既存のディメンションを確認して、ディメンションの基本設計を理解します。
事前定義のPRODUCTSディメンションについて、属性、レベル、および階層を確認します。
| 1.
|
Project Explorerパネルで、「
OWB_DEMO」→「
Databases」→「
Oracle」を開きます。 「
SALES_WH」→「
Dimensions」を開きます。 「
PRODUCTS」を右クリックして、「
Open Editor」を選択します。
注:PRODUCTSをダブルクリックしてもかまいません。
データ・オブジェクト・エディタが起動します。
データ・オブジェクト・エディタは、さまざまなデータベース・オブジェクトまたはディメンション・オブジェクトを簡単に設計、作成、および管理できる単一のインタフェースです。 データ・オブジェクト・エディタは、ダイアグラムおよびプロパティ・シートを使用してさまざまなウェアハウス・スキーマ設計を構築または変更できる中心機能です。 インタフェースは次のようになります。
多くのパネルを確認できますが、ディメンションの詳細を理解するためにDimension Detailsパネルを中心に取り上げます。
| | 2.
|
ディメンションの属性を表示するには、Dimension Detailsパネルの「
Attributes」タブをクリックします。
データのロード時にディメンション・キーを移入するためにディメンションにPROD_DIM_SEQ順序が割り当てられていることを確認します。
また、
ID属性のいずれかに
Surrogate識別子、
SOURCE_ID属性に
Business識別子が割り当てられていることを確認します。
注:ディメンションの主キーであるディメンション・キー列は、各レベルのサロゲート識別子を実装します。 順序を使用すると、ディメンション・キーに一意な値を移入できます。
サロゲート識別子は、ディメンションのすべてのレベルで各レベルのレコードを一意に識別し、ディメンション・キー・フィールドで指定された順序でロードされます。
ビジネス識別子は、データソースの自然キーから常に派生する属性です。
また、値ベースの階層を使用する場合に親識別子を使用できます。
Descriptor列で
Long descriptionおよび
Short descriptionとマークされているディメンション属性を使用すると、ビジネス・インテリジェンス・ツールのディメンション・メンバーを表示できます。
Name列をクリックして、2つのDATE属性(
VALID_FROM_DATEおよび
VALID_TO_DATE)をスクリーンショットに示されている詳細とともに追加します。
| | 3.
|
ディメンション・レベルとレベル属性を表示するには、Dimension Detailsパネルの「
Levels」タブをクリックします。 4つのレベルが存在し、各レベルに適用可能な一連の属性が表示されていることを確認します。たとえば、PRODUCTレベルは、レベル属性としてすべてのディメンション属性を実装します(ただし、前の手順で追加した2つの日付属性を除きます)。
PRODUCTレベルの適用可能な属性として2つの日付属性を設定するには、スクリーンショットに示されているように
VALID_FROM_DATEおよび
VALID_TO_DATE属性の
Applicableチェック・ボックスを選択します。
注:レベルにすべてのディメンション属性を実装する必要はありません。 レベルにディメンション属性を実装すると、レベルでこの情報を格納できます。
リレーショナル実装のレベル属性は、表の列になります。 レベル属性をディメンション属性と同じ名前にする必要はありませんが、Oracle Warehouse Builderはパネルに示すようにデフォルトで同じ名前にします。
レベルを定義する場合、レベルを入力する順序を心配する必要はありません。 レベルは階層にまとめられるだけです。
| | 4.
|
ディメンションの階層を表示するには、Dimension Detailsパネルの「
Hierarchies」タブをクリックします。 特定の順序(パネル・リストでトップダウン)で配置されたレベルとともにPROD_STD階層のみが表示されていることを確認します。
Defaultチェック・ボックスによって、ユーザーの問合せ時に表示する階層を選択できます。 このため、最も一般的に使用される階層を選択することが重要です。
| | 5.
|
ディメンションを定義する場合、緩やかに変化するディメンション戦略も指定できます。
緩やかに変化するディメンションは、ディメンション値の変更履歴を保存する方法を決定します。 スクリーンショットに示されているように、3つの戦略から選択できます。
「
SCD」タブをクリックして、PRODUCTSディメンションの緩やかに変化するディメンション戦略を表示します。
注:SCDのタイプ2と3は、Oracle Warehouse Builder 11g
のEnterprise ETLオプションとともに使用できます。 コアETL機能を使用する場合、SCDのタイプ1(
Do not keep historyオプション)のみ使用できます。 コアETL機能パッケージを使用していてこの手順を実行できない場合でも、このレッスンの残りの手順と次のレッスンに進むことができます。 確認するだけのこの手順は、後の手順に影響を与えません。
すべての変更履歴を保存する場合、タイプ2の実装を使用します。 「
Type2: Store the complete change history」を選択します。 Settingsボタンが使用できることを確認します。 「
Settings」をクリックします。
Type 2 slowly changing dimensionダイアログ・ボックスのRecord Historyドロップダウン・リストで、次の属性を指定する必要があります。
| Trigger History:属性のデータ要素の変更によって新しいバージョンのレコードを作成する必要がある場合、属性にこのオプションを選択します。
|
|
Effective Date:レコードが有効になる日付/時間の値を格納する単一の属性にこのオプションを設定します。
|
|
Expiration Date:レコードが無効になる日付/時間の値を格納する単一の属性にこのオプションを設定します。
|
たとえば、製品のLIST_PRICE、NAME、およびPACK SIZEが変更されるたびに変更履歴を記録するには、スクリーンショットに示されているようにそれらに
Trigger History属性を設定します。 また、VALID_FROM_DATEに
Effective Date、
VALID_TO_DATEに
Expiration Date属性が設定されています。
Type 2 slowly changing policyダイアログ・ボックスの「
Close」をクリックします。
| | 6.
|
Oracle Warehouse Builderを使用してディメンション・オブジェクトを設計し、リレーショナル形式または多次元形式でデータベースにそれらのオブジェクトを配置します。
Storageタブ・ページで、設計されたディメンションをタイプに基づいてリレーショナル形式または多次元形式で実装するかどうかを決定します。Oracle Warehouse Builderは、適切なストレージ・タイプ・コードを生成します。
「
Storage」タブをクリックして、PRODUCTSディメンションに選択した実装を表示します。 リレーショナル実装の場合、Star、Snowflake、Manualのいずれかを選択できます。
データ・オブジェクト・エディタは、ディメンションのデータを表示してドリルダウンできるデータ・ビューアも提供します。
Diagramメニューから「
Close Window」を選択して、データ・オブジェクト・エディタを終了します。
|
次の手順では、Expensesシナリオに関連する2つの簡単なディメンションを作成します。 データ・オブジェクト・エディタでディメンションを作成できますが、このレッスンではウィザードを使用してディメンションを作成します。 一連のデフォルト値が提供され、一連のわかりやすい手順でディメンションを作成できます。
トピックに戻る
TIME Dimensionウィザードを使用したREL_TIMEディメンションの作成
時間ディメンションは、問合せ(たとえば、昨年と今年の四半期の経費を比較する場合)など、時系列を表すためにデータ・ウェアハウスで広く使用されています。
また、時間ディメンションは、一連のレベルと、これらのレベルに定義されている一連の階層で構成されます。 Oracle Warehouse Builderを使用して、会計時間ディメンションおよびカレンダ時間ディメンションを作成できます。
Oracle Warehouse Builderは、時間ディメンションの作成だけでなく移入も実行できます。 ウィザードを使用して時間ディメンションを作成すると、Oracle Warehouse Builderは自動的にマッピングを作成して、時間ディメンションを移入します。
また、時間ディメンションにロードされたデータは、時間ディメンションの属性に関してOLAP標準に準拠します。
Time Dimensionウィザードを使用して、REL_TIMEディメンションを作成する手順を実行します。
| 1.
|
以前に
SALES_WHモジュールを確認しました。 今回は「
EXPENSE_WH」を開き、「
Dimensions」を右クリックして、「
New」→「
Using Time Wizard」を選択します。
Create Time Dimensionウィザードが起動します。 Welcomeページで「
Next」をクリックします。
| | 2.
|
Name and Descriptionページで、ディメンション名として
REL_TIMEを入力します。 「
Next」をクリックします。
| | 3.
|
Storageページで「
ROLAP: Relational storage」を選択して、ディメンションのリレーショナル実装を指定します。 「
Next」をクリックします。
| | 4.
|
Data Generationページで、ウェアハウスに必要な時間データの範囲を指定します。 この情報が使用され、時間ディメンションを移入するマッピングが生成されます。 このマッピングで、入力する日付がパラメータとして追加されます。このため、後の段階で日付を使用してこのマッピングを再実行できます。
Start Yearに
2003、Number of Yearsに
3と入力します。 スクリーンショットに示されているように
Calendarが選択されていることを確認します。
注:階層は、時間ディメンションの隣接するレベルの階層関係を定義します。 時間ディメンションには、1つ以上の階層を使用できます。 階層は、会計階層またはカレンダ階層のいずれかにする必要があります。
時間ディメンションに会計データが含まれる場合、会計年の開始となる月日と会計週の開始日
を指定する必要があります。 また、月と四半期の境界規則(445または544に設定可能)も指定する必要があります。
「
Next」をクリックします。
| | 5.
|
Levelsページで「
Normal Hierarchy」を選択し、すべてのレベル(
Calendar Year、
Calendar Quarter、
Calendar Month、および
Day)を選択します。 「
Next」をクリックします。
| | 6.
|
Pre Create settingsページで詳細を確認して、「
Next」をクリックします。
ウィザードが必要なオブジェクトを作成する際に進捗状況がプログレス・バーに表示されます。
正常に完了した後、「
Next」をクリックします。 Summaryページで詳細を再度確認して、「
Finish」をクリックします。
ウィザードによって完全なTIMEディメンションに必要な4つのオブジェクト(REL_TIMEディメンション・オブジェクト、時間ディメンション・レベルのサロゲートIDを移入するREL_TIME_SEQ順序、時間データを物理的に格納する時間ディメンションのリレーショナル実装をサポートするREL_TIME表、時間ディメンションを移入する最も重要なREL_TIME_MAPマッピング)が生成されたことを確認します。
REL_TIME_MAPの表示を確認する場合、Mappingsノードの下の「
REL_TIME_MAP」をダブルクリックして、マッピング・エディタを起動します。
Viewメニューから「
Auto Layout」を選択します。 拡大したマッピングを確認できます。 Viewメニューからズーム・オプションをスクロールまたは選択して、正しくマッピングを表示できます。 Oracle Warehouse Builderは、この複雑なマッピングを自動的に作成します。これによって、生産性が向上して時間が節約されます。
Mappingメニューから「
Close」を選択して、マッピング・エディタを終了します。
|
REL_TIMEディメンションの作成が完了しました。 次に、ウィザードを使用してREL_CATEGORYディメンションを作成します。
トピックに戻る
ウィザードを使用したREL_CATEGORYディメンションの作成
| 1.
|
EXPENSE_WHモジュールで「
Dimensions」を右クリックして、「
New」→「
Using Wizard」を選択します。
Create Dimensionウィザードが起動します。
Welcomeページで「
Next」をクリックします。
| | 2.
|
Name and Descriptionページで、ディメンション名として
REL_CATEGORYを入力します。 「
Next」をクリックします。
| | 3.
|
Storage Typeページで「
ROLAP: Relational Storage」を選択して、ディメンションのリレーショナル実装を指定します。 「
Next」をクリックします。
| | 4.
|
Dimension Attributesページで3つの事前に定義された列(
ID、
NAME、
DESCRIPTION)を確認します。 ID属性の識別子が
Surrogate、Name属性の識別子が
Businessに設定されていることを確認します。
これらの属性を任意の値に変更できますが、リストにはサロゲート識別子とビジネス識別子が必要です。 サロゲート識別子には、NUMBERデータ型を指定する必要があります。
NAME属性のLengthを
30に変更します。 「
Next」をクリックします。
| | 5.
|
Levelsページで、ディメンションのデフォルト階層に次のレベルを指定します。
| CATEGORY(DescriptionはAccounting Category)
|
|
TYPE(DescriptionはAs entered on Expense Report)
|
「
Next」をクリックします。
| | 6.
|
Level Attributesページで、定義した各レベルに対して適用するディメンション属性を選択します。 デフォルト値を受け入れて、「
Next」をクリックします。
| | 7.
|
Slowly Changing Dimensionページで、デフォルトのタイプ1(Do not keep historyオプション)を選択したままにします。 「
Next」をクリックします。
注:SCDのタイプ2と3は、Oracle Warehouse Builder 11g
のEnterprise ETLオプションとともに使用できます。 コアETL機能を使用する場合、SCDのタイプ1(
Do not keep historyオプション)のみ使用できます。
他のポリシーを選択すると、Oracle Warehouse Builderは階層の最下位レベルの実装をデフォルトにして、日付属性を作成します。
Pre Create settingsページで「
Next」をクリックします。 Dimension Creation Progressページが表示されます。 正常に完了した後、「
Next」をクリックします。 Summaryページの「
Finish」をクリックします。
REL_CATEGORYディメンションがEXPENSE_WHターゲット・モジュールに追加されていることを確認します。 ディメンションを使用する場合、Oracle Warehouse Builderは、スター・スキーマでディメンションを実装する表とディメンションのID列をロードする順序も作成します。
|
トピックに戻る
トピック・リストに戻る
キューブの設計
キューブには、メジャーおよび1つ以上のディメンションへのリンクが含まれます。 キューブの軸には、ディメンション値が含まれます。キューブの本体には、メジャー値が含まれます。 ほとんどのメジャーは加法的な数値です。 たとえば、エッジにTime、Product、およびCustomerディメンションの値、本体に販売額とドル売上高メジャーの値を含むキューブに売上データを編成できます。
リレーショナル実装の場合、キューブは、外部キーの制約によってディメンション表にリンクされ、一連のメジャーで構成されます。 キューブを作成するには、以下を定義する必要があります。
| キューブのメジャー |
| キューブのディメンション |
以下の手順を実行します。
事前に定義されたSALESキューブのメジャーおよびディメンションを確認します。
データ・オブジェクト・エディタでの事前定義のSALESキューブの確認
このトピックでは、キューブの例を説明します。 事前に定義された既存のキューブを確認して、キューブの基本設計を理解します。 トピックの後半で、ウィザードを使用してExpensesシナリオに準拠した簡単なキューブを作成します。
| 1.
|
Project Explorerパネルで、「
OWB_DEMO」→「
Databases」→「
Oracle」を開きます。 「
SALES_WH」→「
Cubes」を開きます。 「
SALES」を右クリックして、「
Open Editor」を選択します。
注:SALESをダブルクリックしてもかまいません。
データ・オブジェクト・エディタが起動します。
| | 2.
|
中央のディメンション・パネルで、上下にスクロールして設計ダイアグラムを理解します。 SALESキューブが5つのディメンション(PRODUCTS、CHANNELS、CUSTOMERS、PROMOTIONS、TIMES)にリンクされていることを確認します。
| | 3.
|
SALESキューブのディメンションを確認するには、データ・オブジェクト・エディタのCube Detailsパネルで「
Dimensions」タブをクリックします。 SALESキューブが5つのディメンション内のレベルにリンクされていることを確認します。
たとえば、SALESキューブは、PRODUCTSディメンションのPRODUCTレベルを参照します。 Role列のドロップダウン・リストには、選択したディメンションに含まれるディメンションのロール(以前に定義した場合)が表示されます。
| | 4.
|
SALESキューブのメジャーを確認するには、Cube Detailsパネルの「
Measures」タブをクリックします。 すべて数値の3つのメジャーが表示されていることを確認します。 これらのメジャーを集計して、総売上原価、総売上、または特定の顧客(または製品)の一定期間の販売数量を決定できます。
| | 5.
|
「
Aggregation」タブをクリックして、キューブが参照する各ディメンションに実行される集計を定義します。
データの集計に使用される集計関数を選択します。 また、キューブが参照する各ディメンションのメジャーを事前に計算することもできます。 デフォルトの集計関数はSUMです。
以下を指定します。
| Cube Aggregation Method:キューブ・データを集計するために使用される集計関数を選択します。 デフォルト値はSUMです。
|
|
Summary Refresh Method:データのリフレッシュ方法を選択します。 選択可能なオプションは、On DemandとOn Commitです。
|
|
Summary Strategy for Cube:各ディメンションのデータを事前に計算するレベルを定義します。
|
| | 6.
|
リレーショナル形式または多次元形式のキューブをデータベースに実装できます。 リレーショナル実装の場合、リレーショナル表にキューブ・データが格納されます。 キューブが多次元環境に実装される場合、キューブ・データがアナリティック・ワークスペースに格納されます。
キューブの物理的な実装を変更するには、Cube Detailsパネルの「
Storage」タブをクリックします。 リレーショナル実装または多次元実装のいずれかを選択できます。
キューブのリレーショナル実装では、ビットマップ索引を作成できます。 キューブにこのような索引を使用すると、問合せ時のパフォーマンスが向上します。
ディメンションについては、データ・ビューアでキューブ・データを表示できます。 Diagramメニューから「
Close Window」を選択して、データ・オブジェクト・エディタを終了します。
|
トピックに戻る
ウィザードを使用したREL_EXPENSEキューブの作成
簡単なリレーショナル・キューブであるREL_EXPENSEを設計します。 このキューブは、以前の手順で作成したREL_TIMEとREL_CATEGORYの2つのディメンションを参照します。 ウィザードを使用すると、簡単ないくつかの手順でキューブを作成できます。
| 1.
|
以前に
SALES_WHモジュールを確認しました。 今回は「
EXPENSE_WH」に切り替え、「
Cubes」を右クリックして、「
New」→「
Using Wizard」を選択します。
Create Cubeウィザードが
起動します。 Welcomeページで「
Next」をクリックします。
| | 2.
|
Name and Descriptionページで、キューブ名として
REL_EXPENSEを入力します。 「
Next」をクリックします。
| | 3.
|
Storage Typeページで「
ROLAP: Relational Storage」を選択して、キューブのリレーショナル実装を指定します。 「
Next」をクリックします。
| | 4.
|
Dimensionsページで、キューブが参照するディメンションを選択します。 Available Dimensionsリストで、「
Dimensions」→「
EXPENSE_WH」を開きます。 「
EXPENSE_WH」を選択します。次に、「
>」をクリックして、REL_CATEGORYとREL_EXPENSEの2つのディメンションをSelected Dimensionsリストへ移動します。 「
Next」をクリックします。
| | 5.
|
MeasuresページのNameフィールドに
EXPENSEと入力します。 デフォルトのデータ型を受け入れます。 「
Next」をクリックします。
Summaryページでキューブの詳細を確認して、「
Finish」をクリックします。
EXPENSE_WHモジュールのCubesノードの下にREL_EXPENSEキューブが追加されていることを確認します。 データ・オブジェクト・エディタでキューブを表示するには、「
REL_EXPENSE」を右クリックして「
Open Editor」を選択するか、「
REL_EXPENSE」をダブルクリックします。 キューブを確認して、データ・オブジェクト・エディタを閉じます。
Designメニューから「
Save All」を選択して、作業をコミットします。
このレッスンでは、以前にサンプリングした2つのソース・フラット・ファイルにマップされた2つの外部表、REL_TIMEとREL_CATEGORYの2つのディメンション、およびこれら2つのディメンションにリンクしたREL_EXPENSEキューブを作成しました。
|
トピックに戻る
トピック・リストに戻る
まとめ
このレッスンでは、2つのディメンションにリンクしたキューブを構成する小規模なリレーショナル・スター・スキーマを設計しました。
このレッスンで学習した内容は、以下のとおりです。
|
ターゲット・ユーザー・スキーマとモジュールの作成
| |
サンプリングしたフラット・ファイルを示す外部表の作成
| |
ウィザードを使用したTIMEディメンションを含むディメンションの作成
| | ウィザードを使用したキューブの作成 |
ディメンション・オブジェクト、その実装オブジェクト、関連する順序、およびデータ・ロード・プログラム(マッピング)を設計しましたが、これらはまだデータベースに物理的に存在しないので注意してください。 論理モデルまたは設計モデルを実際の物理的な実装と区別することは、Oracle Warehouse Builderが提供する大きな利点です。
ターゲット・ウェアハウスを実際に作成または構築するには、先に進んでディメンションとキューブを配置する必要があります。 また、リレーショナル/フラット・ファイル・ソースからデータを抽出し、任意の方法でデータを変換して、ディメンションおよびキューブ表のデータをロードするETLマッピングを設計、配置、および実行する必要があります。 これらのすべてを次のレッスンで実行します。
トピック・リストに戻る
このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。
|