OLAP ユーザーズ・ガイド

11g リリース2（11.2）

B61345-01(原本部品番号:E17123-03)

目次

タイトルおよび著作権の情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

Oracle OLAPに関する最新情報

- Oracle Database 11g リリース2（11.2.0.2）のOracle OLAP

- Oracle Database 11g リリース2（11.2）のOracle OLAP

- Oracle Database 11g リリース1（11.1）のOracle OLAP

1 概要

- Oracle Database内のOLAPテクノロジ

- 多次元テクノロジの完全統合

- アプリケーション開発の容易性

- 管理の容易性

- セキュリティ

- 優れたパフォーマンスとスケーラビリティ

- コストの削減

- SQLツールとアプリケーション・ビルダーを使用したレポートとダッシュボードの開発

- 次元データ・モデルの概要

- キューブ

- メジャー

- ディメンション

- 階層およびレベル

- レベルベース階層

- 値ベース階層

- 属性

2 Oracle OLAPのインストールと起動

- サンプル・スキーマのインストール

- データベース管理タスク

- DBAおよびアプリケーション開発者への権限の付与

- Analytic Workspace Managerのインストールと起動

- Analytic Workspace Managerのインストール

- Analytic Workspace Managerの起動

- データベース接続の定義

- データベース接続を開く

- プラグインのインストール

- Oracle OLAP 10gからのメタデータのアップグレード

3 ディメンションとキューブの作成

- データの次元モデルの設計

- Analytic Workspace Managerの概要

- Analytic Workspace Managerを使用した次元データ・ストアの作成

- 次元オブジェクトへの機能の追加

- Analytic Workspace Managerで変更内容が保存されるタイミング

- ディメンションの作成

- レベルの作成

- 階層の作成

- 属性の作成

- 自動的に定義される属性

- ユーザー定義の属性

- 一意キー属性

- ディメンションのマッピング

- ディメンションのマッピング・ウィンドウ

- ソース・データの問合せ

- ディメンションへのデータのロード

- ディメンション・ビューの表示

- デフォルト階層の表示

- キューブの作成

- メジャーの作成

- キューブのマッピング

- パーティション化方法の選択

- パーティション化のディメンションの選択

- パーティション化したディメンションの例

- キューブへのデータのロード

- キューブ内のデータの表示

- キューブ・ビューの説明の表示

- データのメンテナンス方法の選択

- カスタム・キューブ・スクリプトの作成および実行

- キューブ・スクリプトの作成

- キューブ・スクリプトの実行

- メンテナンス・スクリプトの作成および実行

- メンテナンス・スクリプトの作成

- メンテナンス・スクリプトの実行

- キューブへのマテリアライズド・ビュー機能の追加

- 複数言語のサポート

- メジャー・フォルダの定義

- テンプレートを使用した次元モデルの再作成

4 次元オブジェクトの問合せ

- OLAPの各ビューについて

- キューブ・ビュー

- キューブ・ビューの名前の確認

- キューブ・ビューの列の確認

- キューブ・ビューの内容の表示

- ディメンション・ビューと階層ビュー

- ディメンション・ビューおよび階層ビューの名前の確認

- ディメンション・ビューの列の確認

- ディメンション・ビューの内容の表示

- 階層ビューの列の確認

- 階層ビューの内容の表示

- 基本的な問合せの作成

- すべてのディメンションへのフィルタの適用

- キューブによるデータの集計

- 問合せ処理

- 階層問合せの作成

- 子へのドリルダウン

- 親へのドリルアップ

- 子孫へのドリルダウン

- 祖先へのドリルアップ

- 問合せでの計算の使用

- 集計での属性の使用

- 属性によるメジャーの集計

- 属性による計算済メジャーの集計

- 実行計画の表示

- 実行計画の生成

- 実行計画の種類

- データ・ディクショナリの問合せ

5 分析コンテンツによるデータベースの拡張

- 計算済メジャーとは

- 計算を定義するための関数

- 算術演算子

- 分析関数

- 単一行関数

- 計算済メジャーの作成

- テンプレートの変更

- 期間の範囲の選択

- 計算テンプレートの使用

- 算術計算

- 指数

- 前期間と将来期間

- 現在までの期間

- シェア

- ランク

- 平行期間

- 移動計算

- 累積計算

- ネストした計算

- ユーザー定義の式の作成

- OLAP式の構文の使用

- 算術演算子を使用した式の構文例

- 分析関数を使用した非定型の式の例

- 式の構文の分析関数

- OLAP DMLを使用した計算済メジャーの作成

- OLAP DMLの計算タイプの選択

- OLAP DML式の例

- OLAP DMLファンクションの例

6 レポートとダッシュボードの開発

- OLAPアプリケーションの開発

- BI Publisherを使用したレポートの開発

- BI PublisherでのOLAPレポートの作成

- Microsoft Wordでのテンプレートの作成

- 書式設定されたレポートの生成

- ディメンション選択リストの追加

- 値リストの作成

- メニューの作成

- 問合せの編集

- Application Expressを使用したダッシュボードの開発

- Application ExpressでのOLAPアプリケーションの作成

- ディメンション選択リストの追加

- リージョンの作成

- 値リストの作成

- 選択リストの作成

- 問合せの編集

- ディメンション列でのドリル操作

- 非表示アイテムの作成

- 問合せの編集

- ディメンション列へのリンクの追加

7 Oracle OLAPの管理

- データベース初期化パラメータの設定

- ストレージ管理

- UNDO表領域の作成

- OLAPで使用する永続表領域の作成

- OLAPで使用する一時表領域の作成

- ストレージ・リソース間のデータの分散

- ディクショナリ・ビューとシステム表

- 静的データ・ディクショナリ・ビュー

- システム表

- アナリティック・ワークスペース表

- メンテナンス・ログ

- パーティション化されたキューブとパラレル化

- キューブのパーティション化に関するメタデータの問合せ

- パーティションの作成と削除

- パラレル化

- キューブおよびディメンションの分析

- アナリティック・ワークスペースの監視

- 動的パフォーマンス・ビュー

- OLAPオプションを監視するための基本的な問合せ

- OLAPオプションがデータベースにインストールされているかを確認するには

- データベースに存在するアナリティック・ワークスペースを確認するには

- アナリティック・ワークスペースのサイズを確認するには

- アナリティック・ワークスペースの作成日時を確認するには

- OLAP DBAスクリプト

- パフォーマンス監視用スクリプト

- ディスク領域の監視

- バックアップとリカバリ

- エクスポートとインポート

- キューブ・マテリアライズド・ビュー

- データ・ディクショナリからの情報の取得

- キューブ・マテリアライズド・ビューの識別

- リフレッシュ・ログの識別

- データ・リフレッシュの開始

- DBMS_CUBEの使用

- DBMS_MVIEWの使用

- リフレッシュ・メソッド

- リフレッシュ・メソッドの説明

- FAST SOLVEリフレッシュ

- クエリー・リライトの使用

- キューブ・マテリアライズド・ビューに関する追加情報の取得

8 セキュリティ

- Oracle Databaseにおける多次元データのセキュリティ

- セキュリティ管理

- セキュリティのタイプ

- 権限について

- 階層化されたセキュリティ

- オブジェクト・セキュリティの設定

- SQLを使用したオブジェクト・セキュリティの設定

- アナリティック・ワークスペースに対するオブジェクト・セキュリティの設定

- ディメンションに対するオブジェクト・セキュリティの設定

- キューブに対するオブジェクト・セキュリティの設定

- Analytic Workspace Managerを使用したオブジェクト・セキュリティの設定

- アナリティック・ワークスペースに対するオブジェクト・セキュリティの設定

- ディメンションに対するオブジェクト・セキュリティの設定

- キューブに対するオブジェクト・セキュリティの設定

- ディメンションおよびキューブに対するデータ・セキュリティ・ポリシーの作成

9 高度な集計

- 集計とは

- 集計演算子

- 基本演算子

- 伸縮法および加重法の演算子

- 階層演算子

- 集計の順序によって結果が異なるケース

- キューブのすべてのディメンションに対する同一演算子の使用

- 順序によらず集計結果が一定のもの

- 順序によって集計結果が異なるもの

- 順序によって集計結果が異なる場合があるもの

- 例: 異なる集計演算子の併用

- 例: Unitsキューブの集計

- 集計演算子および階層の選択

- 事前計算値の割合の選択

A 次元モデルの設計

- 事例のシナリオ

- 要件のレポート

- ビジネスの目標

- 情報の要件

- ビジネス分析の問合せ

- 情報の要件のまとめ

- 必要とされるビジネス・ファクトの識別

- Global Computingのための次元モデルの設計

- ディメンションの識別

- レベルの識別

- 階層の識別

- ストアド・メジャーの識別

B キーボードのショートカット

- メニュー・バー

- ナビゲーション・ツリー

- プロパティ・シート

- 矢印のボタン

- マッピング・キャンバス

用語集

索引

Oracle® OLAP

ユーザーズ・ガイド

11g リリース2（11.2）

B61345-01(原本部品番号:E17123-03)

2010年8月

Oracle OLAPユーザーズ・ガイド, 11g リリース2（11.2）

B61345-01

Copyright © 2003, 2010, Oracle and/or its affiliates.All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントが、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供される場合は、次のNoticeが適用されます。

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

このソフトウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアは、危険が伴うアプリケーション（人的傷害を発生させる可能性があるアプリケーションを含む）への用途を目的として開発されていません。このソフトウェアを危険が伴うアプリケーションで使用する際、このソフトウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性（redundancy）、その他の対策を講じることは使用者の責任となります。このソフトウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

このソフトウェアおよびドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。オラクル社およびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

はじめに

『Oracle OLAPユーザーズ・ガイド』では、Oracle DatabaseのOLAPオプションを使用した、SQLアプリケーションでの分析処理機能の拡張とサマリー・データの管理を行う方法について説明します。また、OLAPのリソース管理に関する情報も記載してあります。

ここでは、次の項目について説明します。

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

対象読者

このマニュアルは、次の作業を行うデータベース管理者を対象としています。

- データ・ウェアハウスの開発および管理

- 次元データ・オブジェクトの作成とメンテナンス

- OLAPオプションが有効にされたOracle Databaseの管理

ドキュメントのアクセシビリティについて

オラクル社は、障害のあるお客様にもオラクル社の製品、サービスおよびサポート・ドキュメントを簡単にご利用いただけることを目標としています。オラクル社のドキュメントには、ユーザーが障害支援技術を使用して情報を利用できる機能が組み込まれています。HTML形式のドキュメントで用意されており、障害のあるお客様が簡単にアクセスできるようにマークアップされています。標準規格は改善されつつあります。オラクル社はドキュメントをすべてのお客様がご利用できるように、市場をリードする他の技術ベンダーと積極的に連携して技術的な問題に対応しています。オラクル社のアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/accessibility/を参照してください。

ドキュメント内のサンプル・コードのアクセシビリティについて

スクリーン・リーダーは、ドキュメント内のサンプル・コードを正確に読めない場合があります。コード表記規則では閉じ括弧だけを行に記述する必要があります。しかしJAWSは括弧だけの行を読まない場合があります。

外部Webサイトのドキュメントのアクセシビリティについて

このドキュメントにはオラクル社およびその関連会社が所有または管理しないWebサイトへのリンクが含まれている場合があります。オラクル社およびその関連会社は、それらのWebサイトのアクセシビリティに関しての評価や言及は行っておりません。

Oracleサポートへのアクセス

Oracleのお客様は、My Oracle Supportを通して電子サポートにアクセスできます。詳細は、http://www.oracle.com/support/contact.htmlを参照してください。聴覚障害のあるお客様は、http://www.oracle.com/accessibility/support.htmlを参照してください。

関連ドキュメント

OLAPオプションの詳細は、Oracle Database 11gの次のドキュメントを参照してください。

- 『Oracle OLAP Analytic Workspace Managerのカスタマイズ』
XMLドキュメントおよびJavaプラグインを使用してAnalytic Workspace Managerをカスタマイズする方法について説明します。

- 『Oracle OLAP DMLリファレンス』
アナリティック・ワークスペース・オブジェクトの定義および操作に使用するOLAPデータ操作言語（OLAP DML）の詳細を説明します。

- 『Oracle Databaseリファレンス』
キューブやキューブ・ディメンションなどの次元オブジェクトに使用するデータ・ディクショナリ・ビューの詳細を説明します。

- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』
キューブの管理に使用する一部のPL/SQLパッケージの詳細を説明します。

- 『Oracle OLAP Java API開発者ガイド』
データベース内の次元オブジェクトの定義、構築および問合せに使用する、Oracle OLAP用Javaアプリケーション・プログラミング・インタフェースである、Oracle OLAP APIについて説明します。

- 『Oracle OLAP Java API Reference』
データベース内の次元オブジェクトの定義、構築および問合せを行うための、Oracle OLAP Java APIのクラスおよびメソッドについて説明します。

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ドキュメントのタイトル、強調またはユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

Oracle OLAPに関する最新情報

Oracle DatabaseのOLAPオプションの主な拡張は次のとおりです。

Oracle Database 11g リリース2（11.2.0.2）のOracle OLAP

今回のリリースでの様々な改善により、Oracle OLAPの強力な分析機能へのアクセス性が向上しました。

OLAP DMLのサポート

Analytic Workspace Managerでは、OLAP DMLのサポートが拡張されたことで、予測、割当て、モデルといったOracle OLAPの強力な分析機能へのアクセスが容易になりました。OLAP DMLを使用して、それぞれの目的に合わせた計算済メジャーを定義できます。また、OLAP Worksheetのかわりに、Analytic Workspace Managerでプログラムを直接作成できるようになりました。作成したプログラムは、計算済メジャー、キューブ・スクリプトまたはメンテナンス・スクリプトから起動できます。OLAP DMLオブジェクトの定義とプログラムは、アナリティック・ワークスペースのテンプレートを作成する際にXML形式で保存されます。

いくつかの新しいOLAP DML文がディメンション対応に加わり、キューブやキューブ・ディメンションなど、データベースの次元オブジェクトをサポートするための物理オブジェクトすべてが生成されるようになりました。

Analytic Workspace Managerの機能

Analytic Workspace Managerでの様々な改善により、使いやすく向上したユーザー操作がサポートされています。

- 計算済メジャー・ジェネレータを使用して、事前定義済の標準的な計算済メジャーをキューブに素早く指定できます。「計算済メジャーの作成」を参照してください。

- データ型の自動検出によって、属性やメジャーを定義するプロセスが簡略化されるため、より正確に設定を行うことができます。

- 階層データの制約を目的の整合性レベルに設定できるようになりました。

- メンテナンス・スクリプトを使用して、アナリティック・ワークスペースのメンテナンス・プロセスをより細かく制御できます。「メンテナンス・スクリプトの作成および実行」を参照してください。

- 詳細なメンテナンス・レポートを使用して、メンテナンス・ジョブの進行状況を追跡し、問題を速やかに検出して修正できます。「ディメンションへのデータのロード」および「キューブへのデータのロード」を参照してください。

- スケジュールされているメンテナンス・ジョブの削除や、実行中のジョブの停止または削除が可能になりました。

- マッピングのサポートの拡張により、制約、式および集計データへのマッピングが可能になりました。

- キューブの集計に異なるベース・レベルを指定して、その上のレベルにデータをロードできるようになりました。

- オブジェクトのセキュリティ機能の向上により、オブジェクトの権限設定が、そのリレーショナル・ビューとアナリティック・ワークスペースにも自動的に適用されるようになりました。

- マテリアライズド・ビューには、アプリケーションでの必要に応じて、メジャー内の集計値に寄与している子のカウント数を含めることができるようになりました。

Oracle Database 11g リリース2（11.2）のOracle OLAP

リリース2では、Oracle Database 11gのOLAPオプションにより、操作性を向上する数多くの機能が提供されています。

アップグレードのサポート

Oracle OLAP 10gのCWMまたは標準形式の（AWXML）メタデータから、アナリティック・ワークスペースを簡単にアップグレードできます。アップグレード後には、このマニュアルで説明するようにOracle OLAP 11gのすべての機能を組み込むことができます。

参照:
「Oracle OLAP 10gからのメタデータのアップグレード」

Analytic Workspace Managerの管理機能の向上

Analytic Workspace Managerには、次元オブジェクトの作成と変更を簡略化するための様々な新機能が追加されています。このリリースでは、すべてのオブジェクトの名前変更や、マッピングの部分的な保存、ディメンション、レベル、階層および属性の削除または変更、マッピングでのWHERE条件の使用が可能になりました。既存のオブジェクトをXMLテンプレートの定義とマージして、その内容をプレビューし、重複する名前を修正したり、既存のオブジェクトを変更することができます。

SQL集計管理

SQL集計管理は、既存のリレーショナル・マテリアライズド・ビューからのキューブ・マテリアライズド・ビューの高速デプロイメントをサポートするDBMS_CUBEのPL/SQLサブプログラムのグループです。単一のキューブ・マテリアライズド・ビューは、ファクト表のサマリーを構成する多くのリレーショナル・マテリアライズド・ビューを置き換えることができます。これによって、クエリー・リライトを使用したすべてのサマリー・データの応答時間が均一化されます。

キューブ・マテリアライズド・ビューの作成プロセスでは、DBMS_CUBEによって、キューブおよびキューブ・ディメンションを含むすべての機能を備えたアナリティック・ワークスペースも作成されます。そのため、計算済メジャーの機能を拡張して、分析アプリケーションから直接問合せを行う多次元データ・ストアが必要な場合に、SQL集計管理は、その初期メタデータを作成する際にも使用されます。

参照:
『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』

作成ログ

OLAPでは、作成ログ、操作ログ、拒否レコード・ログおよびディメンション・コンパイル・ログといった複数のログが提供されるようになりました。これらのログは、Analytic Workspace Manager内で、またはPL/SQL DBMS_CUBE_LOGパッケージを使用して表示できます。

これらのログを使用すると、長時間実行されているプロセスの進行状況を追跡し、その結果を使用してパフォーマンスの特徴をプロファイルできます。これらのログから、リレーショナル・ソース表で不適切に構造化された階層、ロードに失敗するレコードまたは完了に時間がかかりすぎるデータ更新など、キューブの作成中やメンテナンス中に発生する可能性がある問題を診断して、問題の解決に役立つ情報が得られます。また、キューブに問い合せる際のパフォーマンスの問題の診断にも役立ちます。

参照:
『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』

Oracle Database 11g リリース1（11.1）のOracle OLAP

Oracle Database 11gのOLAPオプションについては、特にデータベースとの統合の深化、キューブ、セキュリティおよびメタデータへのSQLアクセスの強化において、Oracle9iとOracle Database 10gから引き続き開発が進められています。OLAPの機能は、SQLアプリケーションから簡単にアクセス可能です。また、Oracle Database 11gでは、リレーショナルOLAP（ROLAP）の実装のサマリー管理ソリューションとしてキューブを導入しています。

OLAPメタデータの統合

キューブおよびディメンションのメタデータはすべて、Oracleデータベースに格納され、データ・ディクショナリ・ビューで表示されるため、SQLでビジネス・モデル全体を問い合せることができます。データ・ディクショナリを使用してメタデータを格納すると、データベース内の次元モデルが正式に体系化され、メタデータの問合せが大幅に向上し、また、キューブやディメンションのSQLオブジェクト・セキュリティなど新しい機能がサポートされます。

参照:

- 第4章「次元オブジェクトの問合せ」

- 『Oracle Databaseリファレンス』

キューブ・ビューとディメンション・ビューの自動メンテナンス

Oracle Database 11gでは、データベース内のすべてのキューブ、ディメンションおよび階層について、リレーショナル・ビューの作成とメンテナンスが自動的に行われます。計算済メジャーをキューブに追加するなど、次元オブジェクトを変更した場合、ビューはただちに再作成され、その変更が反映されます。Oracle Databaseは、CUBE_TABLEファンクションを使用して、これらのビューを定義します。これにより、SQLオプティマイザの拡張が可能となります。

参照:

- 第4章「次元オブジェクトの問合せ」

- 『Oracle Database SQL言語リファレンス』

キューブ・スクリプト

キューブ・スクリプトは、データのクリア、データのロード、集計、PL/SQLの実行、OLAP DMLの実行など、問合せ用のキューブを準備するコマンドを順序付けしたリストです。多くのアプリケーションでは、キューブ・スクリプトにより、キューブを処理するための手続き型プログラムを使用する必要がなくなります。

参照:
第3章「ディメンションとキューブの作成」

コストベースの集計

迅速な更新と均一な問合せのパフォーマンスが、OLAPオプションの2つの特徴です。コストベースの集計により、詳細な事前集計方法を実行してスパースなデータセットを非常に効率よく格納し、双方のパフォーマンスが強化されます。

参照:
第3章「ディメンションとキューブの作成」

計算式の構文

OLAP計算式は、SQL分析関数の構文を拡張したものです。この構文は、SQL開発者やDBAによく知られているため、独自のOLAP言語やAPIよりも容易に導入できます。

この構文を使用して、動的に計算されるファクトやメジャーなど、キューブに埋め込まれる計算を定義します。

参照:
第5章「分析コンテンツによるデータベースの拡張」

キューブ・マテリアライズド・ビュー

キューブ・マテリアライズド・ビューは、Oracle Databaseの自動リフレッシュおよびクエリー・リライト機能を使用できるように拡張されたキューブです。

キューブ・マテリアライズド・ビューにより、詳細なリレーショナル表を問い合せるアプリケーションで、OLAPオプションの迅速な更新や問合せの機能を使用できます。サマリー・データが生成されてキューブに格納され、クエリー・リライトにより問合せが自動的にキューブ・マテリアライズド・ビューにリダイレクトされます。アプリケーションの問合せのパフォーマンスが向上します。

参照:

- 第3章「ディメンションとキューブの作成」

- 第7章「Oracle OLAPの管理」

オブジェクトおよびデータのセキュリティ

Oracle Database 11gでは、OLAPのキューブおよびディメンションに対してオブジェクト・セキュリティとデータ・セキュリティの両方を導入しています。両方のタイプのセキュリティがデータベースのユーザーとロールに付与されます。

オブジェクト・セキュリティは、標準SQLのGRANTおよびREVOKE構文を使用して、アナリティック・ワークスペース、キューブ、ディメンションへのアクセスを制御します。

データ・セキュリティは、キューブやディメンションのデータへのアクセスを制御します。ディメンション・メンバー（キー）に対し、グローバルに、または特定のキューブを選択して、SELECT、INSERT、UPDATEおよびDELETE権限を付与することにより、キューブ内のデータへのアクセスを制御します。

参照:
第8章「セキュリティ」

1 概要

この章では、OLAPオプションとともにインストールされているOracle Databaseで使用できる強力な分析リソースを紹介します。ここでは、次の項目について説明します。

- Oracle Database内のOLAPテクノロジ

- SQLツールとアプリケーション・ビルダーを使用したレポートとダッシュボードの開発

- 次元データ・モデルの概要

Oracle Database内のOLAPテクノロジ

Oracle Databaseは、業界初で唯一の埋込みOLAPサーバーを提供します。Oracle OLAPにより、複数のディメンションにまたがってデータを分析する際に、固有の多次元格納および高速な応答時間を実現できます。データベースでは、時系列計算、予測、加算および非加算の演算子や割当て演算子による高度な集計など、多様な形で分析を行うことができます。こうした機能により、Oracleデータベースは、ビジネス・インテリジェンスや高度な分析アプリケーション全般をサポートできる、完全な分析プラットフォームとなります。

多次元テクノロジの完全統合

Oracleでは、多次元オブジェクトおよび分析機能をデータベースに統合することにより、両者の利点を活かし、Oracleデータベースの信頼性、可用性、セキュリティ、スケーラビリティとともに多次元分析機能を実現しています。

Oracle OLAPはOracle Databaseに完全に統合されています。これは、技術レベルでは次のことを意味します。

- OLAPエンジンは、Oracle Databaseのカーネルで実行されます。

- 次元オブジェクトは、固有の多次元形式でOracle Databaseに格納されます。

- キューブなどの次元オブジェクトは、Oracleデータ・ディクショナリの主要なデータ・オブジェクトです。

- データ・セキュリティは、Oracle Databaseのユーザーとロールに対して権限の付与および取消しを行う、標準的な方法で管理されます。

- アプリケーションで、SQLを使用して次元オブジェクトを問い合せることができます。

これは組織にとって非常に有益です。Oracle OLAPでは、1つのデータベース、標準的な管理とセキュリティ、標準のインタフェースと開発ツールといった、簡略性による利点が得られます。

アプリケーション開発の容易性

Oracle OLAPでは、特徴的な分析コンテンツでデータベースやアプリケーションを簡単に強化できます。Oracleの多次元オブジェクトや計算に対する固有のSQLアクセスによって、ダッシュボード、レポート、ビジネス・インテリジェンス（BI）、あらゆるタイプの分析アプリケーションの開発作業が、独自のインタフェースを提供するシステムと比較して非常に容易になります。また、SQLアクセスは、従来の限られたOLAPアプリケーションのみではなく、どのようなデータベース・アプリケーションでも、Oracle OLAPの分析機能が使用できることを意味します。

管理の容易性

Oracle OLAPはOracleデータベースに完全に埋め込まれているため、通常スタンドアロンのOLAPサーバーに必須となる管理技術を習得する必要がありません。専門の管理スキルに投資することなく、既存のDBAスタッフを活用できます。

Oracleの埋込みOLAPテクノロジの主な管理上のメリットの1つは、キューブの自動的なメンテナンスです。スタンドアロンのOLAPサーバーでは、キューブのリフレッシュ作業の負担がすべて管理者にかかります。その結果、ジョブが複雑になり、エラーが発生しやすくなることがあります。管理者は、リレーショナル・ソースから変更済データを抽出し、そのデータをソース・システムからスタンドアロンOLAPサーバーを実行しているシステムに移動し、キューブのロードと再構築を行うプロシージャを作成する必要があります。また、このプロセスの間、DBAはデルタ（変更された値）のセキュリティについて責任を負わなければなりません。

その一方、Oracle OLAPでは、キューブのリフレッシュはすべてOracleデータベースで処理されます。データベースは、次元オブジェクトの失効を追跡し、ソース表のデルタを自動的に記録して、リフレッシュ・プロセス中に変更された値のみを自動的に適用します。DBAはリフレッシュのスケジュールを適切な間隔で設定するだけで、他のことについてはすべてOracle Databaseが対処します。

セキュリティ

Oracle OLAPでは、Oracle Databaseの標準のセキュリティ機能を使用して、多次元データを保護します。

これに対し、スタンドアロンのOLAPサーバーでは、管理者はリレーショナル・ソース・システムとOLAPサーバー・システムで、2回に渡ってセキュリティの管理を行う必要があります。また、リレーショナル・システムからスタンドアロンOLAPシステムにデータを移動する際のセキュリティを管理しなければなりません。

優れたパフォーマンスとスケーラビリティ

ビジネス・インテリジェンスおよび分析アプリケーションは主に、階層のドリルアップやドリルダウン、集計値の比較（前期比、親のシェア、将来の予測、多数の類似の計算など）といった操作に使用します。こうした操作は多くの場合、階層集計が可能な領域全体においてランダムに行われます。Oracle OLAPは、定義された多次元領域ですべての集計を事前計算するか、必要に応じて効率よく計算するため、典型的なビジネス・インテリジェンス・アプリケーションで優れたパフォーマンスを実現できます。

Oracle OLAPの問合せでは、Oracleの共有カーソルを利用することにより、メモリー要件を大幅に削減し、パフォーマンスを向上させます。

Oracle DatabaseとともにReal Application Clusters（Oracle RAC）オプションをインストールすると、OLAPアプリケーションにおいても、パフォーマンス、スケーラビリティ、フェイルオーバーおよびロード・バランシングについて、他のアプリケーションと同様の利点があります。

コストの削減

上述の機能はすべて、コストの削減につながります。既存のスタッフのスキルを利用できるため、管理費が減少します。また、Oracleデータベースでは、他のシステムにおいては管理者の負担となる複雑な作業である、次元オブジェクトのリフレッシュの管理が可能です。標準のセキュリティによっても、管理費が削減されます。SQLに精通した多数のアプリケーション開発者や豊富なSQLベースの開発ツールを活用できるため、アプリケーションの開発と配置を迅速に行うことができ、アプリケーション開発費が減少します。いずれのSQLベースの開発ツールでもOracle OLAPを利用できます。Oracle OLAPの効率的な集計の管理、共有カーソルの使用、低コストのコモディティ部品で拡張性の高いシステムを構築できるOracle RACによって、ハードウェア費が削減されます。

SQLツールとアプリケーション・ビルダーを使用したレポートとダッシュボードの開発

分析者は、SQL問合せと分析ツールを選択して、データの選択、表示および分析を行うことができます。好みのツールやアプリケーション、またはOracle Databaseのツールを使用できます。

図1-1に、Oracle Database付属のOracle Application Expressで作成されるダッシュボードの一部を示します。Application Expressは、SQL問合せの結果を表示するHTMLレポートを生成します。SQLのみ理解していれば、次元オブジェクトに関する特別な知識は必要ありません。

このダッシュボードでは、比率、シェア、前の期間および累計など、情報に富んだ計算結果を表示します。ダッシュボードのタブはそれぞれ、収益性分析、売上分析および製品分析を表します。各タブのデータは、ダイヤル、棒グラフ、水平棒グラフ、円グラフ、クロス集計レポートで表されます。左上にあるドロップダウン・リストから顧客を選択できます。

ダイヤルには、四半期ごとの利益幅が表示されます。右側にある棒グラフでは、現在の利益と前年の利益を比較します。

図1-1 Oracle Application Expressで作成されるダッシュボード

「図1-1 Oracle Application Expressで作成されるダッシュボード」の説明

図1-2の円グラフでは、前四半期の総利益に対して各製品ファミリの寄与した割合をパーセントで示しています。

図1-2 総利益に対する製品ファミリの貢献度

「図1-2 総利益に対する製品ファミリの貢献度」の説明

図1-3の水平棒グラフでは、前年からの収益性の増加率に基づいて各地域をランク付けした結果を示しています。意思決定の際、前四半期で各地域の利益がどのくらい増加したかが一目でわかります。

図1-3 前年からの累計利益増加率のランキング

「図1-3 前年からの累計利益増加率のランキング」の説明

図1-4では、現在の利益を、年度累計、前年の年度累計、前年比の増加額および増加率で比較しています。クロス集計レポートはインタラクティブなドリル操作を特徴としているため、意思決定の際には、特定の親値に寄与した詳細データを簡単に知ることができます。

図1-4 前年と比較した累計利益

「図1-4 前年と比較した累計利益」の説明

次元データ・モデルの概要

次元オブジェクトはOLAPに不可欠です。OLAPはオンラインであるため、素早く回答を提供する必要があります。分析者は、一晩中実行されるバッチ・ジョブの中ではなく、対話型セッションにおいて反復問合せを行うからです。また、OLAPは分析でもあるため、その問合せは複雑です。次元オブジェクトおよびOLAPエンジンは、複雑な問合せをリアルタイムに解決できるように設計されています。

次元オブジェクトは、キューブ、メジャー、ディメンション、属性、レベルおよび階層により構成されます。モデルに簡素性が備わっているのは、実在するビジネス・エンティティを表すオブジェクトを定義しているためです。分析者は、調査したいビジネス・メジャー、データに意味を与えているディメンションや属性、およびビジネスのディメンションがレベルや階層に編成されている方法がわかります。

図1-5に、次元オブジェクト間の一般的な関係を示します。

図1-5 OLAPの次元モデルの図

「図1-5 OLAPの次元モデルの図」の説明

次元データ・モデルは、高度に構造化されています。構造とは、データ間の関係を決定し、データの問合せ方法を制御する規則のことを意味します。キューブは次元モデルの物理的な実装なので、次元問合せにあわせて高度に最適化されています。OLAPエンジンは、元々備えているこのディメンション性を利用することにより、きわめて効率的にクロスキューブ結合（行間計算の場合）、外部結合（時系列分析の場合）および索引付けを実行します。ディメンションは、メジャーに事前結合されます。キューブの基盤となるこのテクノロジは、索引付けされた多次元配列モデルをベースにしており、この多次元配列モデルが直接的なセル・アクセスを可能にしています。

OLAPエンジンによる次元オブジェクトの処理は、SQLエンジンによるリレーショナル・オブジェクトの処理と同様に行われます。ただし、OLAPエンジンは分析関数の計算に関して、次元オブジェクトは分析に関してそれぞれ最適化されているため、OLAPでは、分析関数および行関数の計算を、SQLよりもはるかに高速に実行できます。

Oracle OLAPは次元モデルにより、OracleBI Discoverer Plus OLAP、OracleBI Spreadsheet Add-In、OracleBI Suite Enterprise Edition、BusinessObjects EnterpriseおよびCognos ReportNetなど、ビジネス・インテリジェンス用のハイエンドなツールやアプリケーションをサポートすることが可能になっています。

キューブ

キューブは、同じ形を持つ（つまり、まったく同じディメンションを持つ）メジャーを編成する方法を提供します。同じキューブ内のメジャーは、簡単に一緒に表示したり分析したりできます。

通常、1つのキューブは1つのファクト表またはビューに対応します。

メジャー

キューブのセルに格納された、事業活動に関連して収集されたファクトのことをメジャーと呼びます。メジャーはディメンションによって編成され、通常、これにはTimeディメンションが含まれます。

分析データベースには、トランザクション・データベース、レガシー・システム、シンジケート・ソースまたはその他のデータソース内のデータから取得された、履歴データのスナップショットが含まれます。通常、3年間分の履歴データが、分析アプリケーションにとって適切と考えられています。

分析者がメジャーを使用して決定を通知している間も、メジャーは静的で一貫性を保ちます。メジャーは、一定の間隔で（毎週、毎日、または一日を通して定期的に）バッチ・ウィンドウ内で更新されます。データを更新するには、メジャーの時間ディメンションにいくつかの期間を追加し、最も古い期間を同じ数だけ排除する方法があります。各更新によって、その期間における特定の事業活動の固定された履歴レコードが提供されます。あるいは、増分更新ではなく、データの完全な再構築を行う場合もあります。

メジャーの定義では、細目の最低レベルの決定が重要です。この詳細なデータはユーザーに表示されることはありませんが、これによって、実行可能な分析のタイプが決まります。たとえば、市場分析者は受注担当者とは違い、Michigan州Ann Arbor市在住のBeth Millerがサイズ10の青い水玉模様の洋服を2006年7月6日午後2時34分に注文した、といった情報を知る必要はありません。ここで市場分析者が知りたいのは、アメリカ中西部で2006年夏に最も人気のあった洋服の色、といった情報です。

この問合せに対する回答を分析者が取得できるかどうかは、このベース・レベルのデータによって決まります。前述の問合せに対しては、Timeは月に、Customerは地域に、Productは色の属性を持つ項目（洋服など）にロール・アップすることになります。ただし、この集計データのレベルでは「1日のうちで女性が最もよく注文するのは何時か」といった問合せに回答できません。データをデータ・ウェアハウスにロードする前にどの程度まで集計するかが重要な決定となります。

ディメンション

ディメンションには、データを識別および分類する一意の値のセットが含まれます。ディメンションはキューブのエッジを形成します。したがって、キューブ内のメジャーのエッジがディメンションによって形成されます。通常、メジャーは多次元であるため、メジャーの1つの値は、意味をなすように各ディメンションのメンバーによって修飾される必要があります。たとえば、Salesメジャーは、Time、Customer、ProductおよびChannelの4つのディメンションを持ちます。特定のSalesの値（43,613.50）は、特定の期間（Feb-06）、顧客（Warren Systems）、製品（Portable PC）およびチャネル（Catalog）によって修飾された場合にのみ意味を持ちます。

ベース・レベルのディメンションの値は、ファクト表の一意キーに対応します。

階層およびレベル

階層は、集計の様々なレベルでデータを構成するための方法です。データを表示する際、分析者はディメンション階層を使用して、あるレベルの傾向を認識し、この傾向の理由を特定する場合は下位レベルにドリルダウンし、この傾向がビジネスのより広い範囲に与える影響を確認する場合は上位レベルにロールアップします。

レベルベース階層

各レベルは階層内の位置を表現します。ベース・レベル（最も詳細）より上にある各レベルには、それより低いレベルの集計値が含まれます。レベルが異なるメンバーには、1対多の親子リレーションがあります。たとえば、Q1-05およびQ2-05は2005の子、つまり、2005はQ1-05およびQ2-05の親です。

1日に3回、つまり、8時間ごとに取得されるデータのスナップショットがデータ・ウェアハウスに格納されているとします。分析者が普段、日、週、四半期または年に集計されているデータを表示したい場合、Timeディメンションには少なくとも5つのレベルを持つ階層が必要となります。

同様に、来年に特定の目標を持つ販売部長が、自身の販売地域の販売担当者に目標額を割り当てたい場合、この割当てでは、個々の販売担当者が特定の地域の子値であるディメンション階層が必要となります。

階層およびレベルには多対多の関係があります。階層には通常いくつかのレベルが含まれ、1つのレベルを複数の階層に含めることができます。

各レベルは通常、ディメンション表またはビューの列に対応します。ベース・レベルは主キーです。

値ベース階層

通常、階層は指定したレベルで構成されますが、必ずしもそうである必要はありません。ディメンション・メンバー間の親子関係は、意味のあるレベルを定義するとはかぎりません。たとえば、従業員ディメンションにおいては、各マネージャは1つ以上のレポートを持ち、それによって親子関係が形成されます。これらの関係に基づいてレベル（個々の貢献者、第1マネージャ、第2マネージャ…など）を作成しても、分析の役に立つとはかぎりません。同様に、財務データの明細項目ディメンションはレベルを持ちません。このタイプの階層は、値ベース階層と呼ばれています。

属性

属性は、データに関する追加の情報を提供します。表示用に使用される属性もいくつかあります。たとえば、製品ディメンションで、ディメンション・メンバーに対して最小在庫管理単位（SKU）を使用する場合があります。SKUは数千の製品を一意に識別する優れた方法ですが、レポートやグラフ内でデータのラベル付けに使用される場合、ほとんどの人にとって意味がありません。こうした説明ラベルには属性を定義します。

属性として、色、味またはサイズなどを持つ場合もあります。このタイプの属性は、「2005年夏に婦人服で最も人気のあった色とは」や「この結果は昨夏と比較するとどうなるか」などの問合せに対する、データの選択および回答に使用できます。

Time属性は、各期間の最終日や日数の識別など、特定のタイプの分析に役に立つ可能性のあるTimeディメンションに関する情報を提供できます。

各属性は通常、ディメンション表またはビューの列に対応します。

2 Oracle OLAPのインストールと起動

この章では、Oracle OLAPを使用する上で必要な準備手順について説明します。ここでは、Oracle Database 11g Enterprise Editionをインストールしているものと仮定します。OLAPオプションは、Oracle Databaseの基本インストールの一部として自動的にインストールされます。

注意:
次元オブジェクトの問合せをすぐに開始するには、Globalアナリティック・ワークスペースをインストールします（「サンプル・スキーマのインストール」を参照）。次に、第4章の手順に従います。

この章では、次の項目について説明します。

- サンプル・スキーマのインストール

- データベース管理タスク

- DBAおよびアプリケーション開発者への権限の付与

- Analytic Workspace Managerのインストールと起動

- Oracle OLAP 10gからのメタデータのアップグレード

サンプル・スキーマのインストール

サンプルのGlobalスキーマは、次に示すOracleのWebサイトからダウンロードおよびインストールできます。このGlobalスキーマを使用して、このマニュアルで示されているサンプルを試すことができます。

http://www.oracle.com/technology/products/bi/olap/doc_sample_schemas/sampleschemasfordoc11g.html

スキーマのインストール方法については、READMEファイルを参照してください。

データベース管理タスク

次元オブジェクトでの使用に適したUNDO表領域、永続表領域および一時表領域を作成する必要があります。「ストレージ管理」の推奨事項に従ってください。

DBAおよびアプリケーション開発者への権限の付与

Oracle Databaseで次元オブジェクトの作成や管理を行う場合、必要な権限を持っていなければなりません。これらの権限は、次元オブジェクトに格納されたデータの問合せに必要な権限とは異なります。セキュリティ・システムについては、第8章で説明します。

DBAおよびアプリケーション開発者には、次のロールと権限が必要です。

ユーザー自身のスキーマでの次元オブジェクトの作成:

- OLAP_USERロール

- CREATE SESSION権限

異なるスキーマでの次元オブジェクトの作成:

- OLAP_DBAロール

- CREATE SESSION権限

データ・セキュリティの管理:

- OLAP_XS_ADMINロール

ユーザー自身のスキーマでのキューブ・マテリアライズド・ビューの作成:

- CREATE MATERIALIZED VIEW権限

- CREATE DIMENSION権限

- ADVISOR権限

異なるスキーマでのキューブ・マテリアライズド・ビューの作成:

- CREATE ANY MATERIALIZED VIEW権限

- CREATE ANY DIMENSION権限

- ADVISOR権限

また、次元オブジェクトが格納される表領域の割当て容量が無制限であることが必要です。表領域はOLAPでの使用のために特別に定義する必要があります（第7章を参照）。

ソース表が異なるスキーマにある場合、次元オブジェクトの所有者は、それらの表に対するSELECTオブジェクト権限が必要です。

例2-1に、GLOBALユーザーを作成するSQL文を示します。

例2-1 GLOBALユーザーを作成するSQL文

CREATE USER "GLOBAL" IDENTIFIED BY password
DEFAULT TABLESPACE glo
TEMPORARY TABLESPACE glotmp
QUOTA UNLIMITED ON glo
PASSWORD EXPIRE;

GRANT OLAP_USER TO GLOBAL;
GRANT CREATE SESSION TO GLOBAL;
GRANT OLAP_XS_ADMIN TO GLOBAL;

Analytic Workspace Managerのインストールと起動

この項では、Analytic Workspace Managerソフトウェアのインストール方法、およびOracle Databaseへの接続の作成方法について説明します。

Analytic Workspace Managerのインストール

Analytic Workspace Managerは、Oracle Database Clientのインストール・メディアから入手できます。

データベースと同じシステム上にインストールする場合は、カスタム・インストールを選択し、データベースと同じOracleホーム・ディレクトリにインストールします。コンポーネントのリストからOLAP Analytic Workspace Manager and Worksheetを選択します。

リモート・システム上にインストールする場合は、管理者インストールまたはカスタム・インストールを選択します。管理者インストールを選択すると、Analytic Workspace Managerが自動的にクライアントにインストールされます。

参照:
ご使用のクライアント・プラットフォームに対応するインストール・ガイド

Analytic Workspace Managerの起動

ご使用のプラットフォームに合わせた適切な手順に従います。

Windowsの場合は、次の方法でAnalytic Workspace Managerを起動します。

- 「スタート」メニューから、「Oracle - Oracle_home」→「Integrated Management Tools」→「OLAP Analytic Workspace Manager and Worksheet」の順に選択します。

Linuxの場合は、次の方法でAnalytic Workspace Managerを起動します。

- シェル・コマンドラインで次のコマンドを入力します。

$ORACLE_HOME/olap/awm/awm.sh

図2-1は初期画面です。

図2-1 Analytic Workspace Managerの起動

「図2-1 Analytic Workspace Managerの起動」の説明

Analytic Workspace Managerからインターネットにアクセスできない場合、操作に役立つサイトへのリンクがプロパティ・ビューアにいくつか表示されます。また、Analytic Workspace ManagerがOLAPのホーム・ページを表示できないため、例外も表示されます。インターネットに接続する場合、通常はプロキシ・サーバーを指定する必要があります。

プロキシ・サーバーを指定するには、次の手順を実行します。

1. 「ツール」メニューから「構成」を選択して「構成」ダイアログ・ボックスを表示します。

2. 「OLAPホームページの設定」で、プロキシ・サーバーのアドレスを入力します。

3. プロキシ・サーバーのポート番号を入力します（デフォルト・ポートの80でない場合）。

4. 「OK」をクリックし、設定を保存します。次回、Analytic Workspace Managerを起動すると、OLAPのホーム・ページが表示されます。

データベース接続の定義

OLAPで使用する各データベースへの接続を定義できます。接続を定義すると、そのデータベースのインスタンスがナビゲーション・ツリーにリスト表示され、いつでもアクセスできるようになります。

データベース接続を定義するには次の手順を実行します。

1. ナビゲーション・ツリーで最上位の「データベース」フォルダを右クリックし、ショートカット・メニューから「データベース接続の作成」を選択します。

2. 「データベース接続の作成」ダイアログ・ボックスに必要な情報を入力します。

図2-2は、「データベース接続の作成」ダイアログ・ボックスの「一般」タブに表示された接続情報です。

図2-2 データベース接続の定義

「図2-2 データベース接続の定義」の説明

データベース接続を開く

データベースに接続するには次の手順を実行します。

1. ナビゲーション・ツリーで、データベース接続の隣にあるプラス記号のアイコン（+）をクリックします。

2. 「データベースに接続」ダイアログ・ボックスで、データベース・ユーザー名とパスワードを入力します。

プラグインのインストール

プラグインによって、Analytic Workspace Managerの機能が拡張されます。プラグインは、JARファイルとして配布されます。Java開発者であれば、プラグインを作成できます。プラグインの開発者は、プラグインの機能と使用方法に関する情報を提供する必要があります。

1つ以上のプラグインが存在する場合、Analytic Workspace Managerに対してそれらの場所を指定する必要があります。

プラグインを使用するには、次の手順を実行します。

1. プラグインを格納するローカル・ディレクトリを作成します。

2. そのディレクトリにJARファイルをコピーします。

3. Analytic Workspace Managerを開きます。

4. 「ツール」メニューから「構成」を選択します。
「構成」ダイアログ・ボックスが開きます。

5. 「プラグインを有効化」を選択してプラグイン・ディレクトリを指定します。「OK」をクリックします。

6. Analytic Workspace Managerを閉じてから再度開きます。
プラグインによって提供される機能が、ナビゲータで利用できます。

現在インストールされているプラグインのリストを表示するには、次の手順を実行します。

- 「ヘルプ」メニューで、「バージョン情報」をクリックします。

参照:
Analytic Workspace Managerプラグインの開発に関する技術記事は、Oracle Technology Networkの次のURLからダウンロードできます。
http://www.oracle.com/technology/products/bi/olap

Oracle OLAP 10gからのメタデータのアップグレード

Oracle OLAP 10gアナリティック・ワークスペースをOLAP 11gにアップグレードするには、オブジェクトをXMLテンプレートとして保存し、そのXMLを別のスキーマにインストールします。このアップグレード・プロセスによって、元のアナリティック・ワークスペースは変更されないまま残り、アクセスも維持されます。

前提条件

- OLAP 10gアナリティック・ワークスペースでは、CWMメタデータまたはOLAP標準形式のメタデータを使用できます。

- 元のリレーショナル・ソース・データは、新しいアナリティック・ワークスペースへのロードに使用できる必要があります。データを異なるスキーマに格納している場合や表の名前が異なる場合は、アップグレードの後で次元オブジェクトを新しいリレーショナル・ソースにマップしなおす必要があります。

- OLAP 11gアナリティック・ワークスペースは、OLAP 10gアナリティック・ワークスペースと同じスキーマに作成できます。ただし、OLAP 11gアナリティック・ワークスペースを別のスキーマに作成する場合は、新規ユーザーに適切な権限を付与する必要があります（「DBAおよびアプリケーション開発者への権限の付与」を参照）。

OLAP 10gアナリティック・ワークスペースをアップグレードするには、次の手順を実行します。

1. Oracle Database 11gリリース2のAnalytic Workspace Managerを起動します。

2. 必要に応じて、アナリティック・ワークスペースを含むデータベース・インスタンスへの新しいデータベース接続を作成します。「データベース接続の定義」を参照してください。

3. データベース接続を開きます。「データベースに接続」ダイアログ・ボックスで、「キューブ・タイプ」に「OLAP 10g」を選択します。「データベース接続を開く」を参照してください。

4. アナリティック・ワークスペースの名前が表示されるまでナビゲーション・ツリーを開きます。

5. アナリティック・ワークスペースを右クリックして「10gアナリティック・ワークスペースに対する11gアップグレード・テンプレートの作成」を選択します。XMLテンプレートをファイルに保存します。
同じ名前のサブオブジェクト（レベルや階層など）がある場合は、「10gアナリティック・ワークスペースに対する11gアップグレード・テンプレートの作成」ダイアログ・ボックスが表示されます。OLAP 10gでは同じ名前のサブオブジェクトは許可されていましたが、OLAP 11gの名前空間要件では無効になりました。

重複したオブジェクト名は、アップグレード時に自動的に変更されます。この時点では名前を編集することはできませんが、後で変更することができます。

6. 「閉じる」をクリックしてダイアログ・ボックスを閉じます。

7. ナビゲーション・ツリーで接続を右クリックし、「データベースの切断」を選択します。

8. 接続を再度右クリックし、「データベースに接続」を選択します。

9. 「データベースに接続」ダイアログ・ボックスで、新しいユーザー名でログインし、「キューブ・タイプ」に「OLAP 11g」を選択します。

10. ナビゲーション・ツリーを開き、新しいスキーマの下にある「アナリティック・ワークスペース」を右クリックし、「テンプレートからアナリティック・ワークスペースを作成」を選択します。

11. 前に作成したアップグレード・テンプレートを開きます。
キューブ、ディメンション、アナリティック・ワークスペースなどのオブジェクトがスキーマにすでに存在するオブジェクトの名前と重複している場合は、「アナリティック・ワークスペースのテンプレート・インポートでの重複名を修正します」ダイアログ・ボックスが表示されます。

12. 新しい名前を入力して名前の競合をなくし、「OK」をクリックします。

13. データをロードする前に、次元オブジェクトを参照して、オブジェクト名、キューブのパーティション、集計方法に変更を加えることができます。Oracle OLAP 11gの新機能の概要は、「Oracle OLAPに関する最新情報」を参照してください。

14. データを新しいアナリティック・ワークスペースにロードします（「キューブへのデータのロード」を参照）。すべてのオブジェクトをメンテナンス対象に選択します。

参照:
PL/SQLでのアップグレード方法については、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_CUBEに関する項目を参照してください。

3 ディメンションとキューブの作成

この章では、Analytic Workspace Managerを使用したデータ・モデルの設計方法およびディメンションとキューブの作成方法を説明します。この章では、次の項目について説明します。

- データの次元モデルの設計

- Analytic Workspace Managerの概要

- Analytic Workspace Managerを使用した次元データ・ストアの作成

- ディメンションの作成

- キューブの作成

- データのメンテナンス方法の選択

- 複数言語のサポート

- メジャー・フォルダの定義

- テンプレートを使用した次元モデルの再作成

データの次元モデルの設計

第1章では、各種次元オブジェクト（キューブ、メジャー、ディメンション、レベル、階層、属性）の概要を説明しました。この章では、これらをOracle Databaseで定義する方法について説明しますが、その前に、作成する次元モデルについて決定する必要があります。使用するメジャーやディメンションを決めたり、データのディメンションと属性をどのように区別するかを決めます。次元モデルの設計は、紙と鉛筆を使用する、データベース設計ソフトウェア・パッケージを利用するなど、各自に合った方法で行うことができます。

ソース・データがスター・スキーマまたはスノーフレーク・スキーマに格納されている場合、次元モデルの要素は次のように決まります。

- ファクト表は、キューブに対応する。

- ファクト表のデータ列は、メジャーに対応する。

- ファクト表の外部キー制約は、ディメンション表に対応する。

- ディメンション表は、ディメンションに対応する。

- ディメンション表の主キーは、ベース・レベルのディメンション・メンバーに対応する。

- ディメンション表の親列は、上位レベルのディメンション・メンバーに対応する。

- ディメンション・メンバーの説明や特性が格納されているディメンション表の列は、属性に対応する。

ソース・データを基にして現在生成されているレポートを検討することにより、次元モデルの構成を把握することもできます。これらのレポートから、レポート利用者にとって必要な集計レベルや、データを絞り込む際に使用する属性を特定できます。

ソース・データを調査するときに、作成しようとしている次元モデルとの一致度がより高いリレーショナル・ビューを作成することもできます。

参照:

次元オブジェクトの概要については、「次元データ・モデルの概要」を参照してください。

Globalアナリティック・ワークスペースの次元モデルの作成事例については、付録A「次元モデルの設計」を参照してください。

Analytic Workspace Managerの概要

Analytic Workspace Managerは、Oracle Database内の次元オブジェクトを作成、構築および管理するためのメイン・ツールです。Analytic Workspace Managerを使用する目的は、ビジネス分析をサポートする次元データ・ストアを構築することです。このデータ・ストアは単独で利用できますが、リレーショナル・データ・ウェアハウスの一部としてサマリー・データを格納することもできます。

次元オブジェクトの作成には、データの物理的な変換が伴います。この変換の最初のステップでは、キューブ、メジャー、ディメンション、レベル、階層および属性を定義します。その後で、次元オブジェクトをリレーショナル・データソースにマップします。データは、データ・ロード・プロセスによってリレーショナル形式から次元形式に変換されます。

Analytic Workspace Managerでは、次の作業を行うことができます。

- データの次元モデルの構築

- 次元オブジェクトとしてのモデルのインスタンス化

- リレーショナル表から次元オブジェクトへのデータのロード

- 情報量の多い計算の定義

- データベース・リフレッシュ・システムで使用できるマテリアライズド・ビューの作成

- 次元オブジェクトのリレーショナル・ビューの自動生成

データをロードできるデータベースのソースは次のとおりです。

- 表

- ビュー

- シノニム

データをディメンションやキューブにロードするためには、リレーショナル・データソースに対するSELECT権限が必要です。この章では、スター・スキーマやスノーフレーク・スキーマなど、次元オブジェクトをサポートしているリレーショナル・スキーマをすでに所有しているものと仮定します。

図3-1は、Analytic Workspace Managerのメイン・ウィンドウです。このウィンドウには、メニュー、ツールバー、ナビゲーション・ツリーおよびプロパティ・シートがあります。ナビゲーション・ツリーでオブジェクトを選択すると、右側のプロパティ・シートにそのオブジェクトの詳細情報が表示されます。オブジェクトを右クリックすると、そのオブジェクトに対する適切なアクションを選択できるメニュー項目が表示されます。

Analytic Workspace Managerには、状況依存ヘルプを含む完全なオンライン・ヘルプ・システムがあります。

図3-1 Analytic Workspace Managerのメイン・ウィンドウ

「図3-1 Analytic Workspace Managerのメイン・ウィンドウ」の説明

Analytic Workspace Managerを使用した次元データ・ストアの作成

アナリティック・ワークスペースとは、関連するキューブを格納するためのコンテナです。ディメンションやキューブなどの次元オブジェクトは、アナリティック・ワークスペース内で作成します。

アナリティック・ワークスペースの作成手順:

1. Analytic Workspace Managerを開き、この目的で定義されているユーザーとしてデータベース・インスタンスに接続します。

2. 次の手順で、データベースにアナリティック・ワークスペースを作成します。

1. ナビゲーション・ツリーでフォルダを開き、アナリティック・ワークスペースの作成先となるスキーマを見つけます。

2. 「アナリティック・ワークスペース」を右クリックして「アナリティック・ワークスペースの作成」を選択します。

3. アナリティック・ワークスペースの作成ダイアログ・ボックスに必要な情報を入力し、「作成」をクリックします。
アナリティック・ワークスペースがそのスキーマの「アナリティック・ワークスペース」フォルダ内に表示されます。

3. データのディメンションを定義します。
「ディメンションの作成」を参照してください。

4. データのキューブを定義します。
「キューブの作成」を参照してください。

5. キューブとディメンションにデータをロードします。
「キューブへのデータのロード」を参照してください。

これらの手順を完了すると、リレーショナル表またはビューからフェッチされたディテール・データが移入されたアナリティック・ワークスペースが作成されます。また、サマリー・データおよび計算済メジャーも作成されます（該当する手順を実行した場合）。

次元オブジェクトへの機能の追加

基本手順に付け加える形で、キューブに次の機能を追加できます。

- 作成処理をカスタマイズするためのカスタム・キューブ・スクリプトを作成する。
「カスタム・キューブ・スクリプトの作成および実行」を参照してください。

- 自動リフレッシュやクエリー・リライトを実行できるマテリアライズド・ビューを生成する。
「キューブへのマテリアライズド・ビュー機能の追加」を参照してください。

- メタデータおよび属性値の翻訳を追加することで、複数の言語をサポートする。
「複数言語のサポート」を参照してください。

- エンド・ユーザーが簡単にアクセスできるように、メジャー・フォルダを定義する。
「メジャー・フォルダの定義」を参照してください。

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ディメンションを定義する必要があります。

ディメンションの作成手順:

1. 目的のアナリティック・ワークスペースのフォルダを開きます。

2. 「ディメンション」を右クリックし、「ディメンションの作成」を選択します。
「ディメンションの作成」ダイアログ・ボックスが表示されます。

3. 「一般」タブに必要な情報を入力します。

4. ソース表のキーがすべてのレベルにおいて一意である場合は、「実装の詳細」タブでデフォルトの設定を変更できます。

5. 「作成」をクリックします。
ディメンションが「ディメンション」のサブフォルダとして表示されます。

図3-2は、Productディメンションの作成画面です。

図3-2 Productディメンションの作成

「図3-2 Productディメンションの作成」の説明

レベルの作成

通常、ビジネス分析では、データはレベル単位で集計されます。たとえば、トランザクション・データベースの日次スナップショットがデータベースに格納されているとします。ベース・レベルは日です。このデータは、週、四半期および年レベルで集計できます。

レベルは、親子関係または1対多関係を持ち、これらがレベルベース階層を形成します。たとえば、各週は7日間を集計したもの、各四半期は13週間を集計したもの、各年は4四半期を集計したものです。このような階層構造により、分析者は、高いレベルでなんらかの傾向を発見したら、より低いレベルへとドリルダウンして、その傾向を形成している要因を確認できます。

定義するレベルごとに、そのレベルのディメンション・メンバーのデータソースを指定する必要があります。すべてのレベルのメンバーが、同じディメンションに格納されます。前述の例で言うと、Timeディメンションには、週、四半期および年のメンバーが格納されます。

レベルの作成手順:

1. 目的のディメンションのフォルダを開きます。

2. 「レベル」を右クリックし、「レベルの作成」を選択します。
「レベルの作成」ダイアログ・ボックスが表示されます。

3. 「レベルの作成」ダイアログ・ボックスの「一般」タブに必要な情報を入力します。

4. 「作成」をクリックします。
レベルが「レベル」フォルダ内の項目として表示されます。

ヒント:
「ディメンションの作成」ダイアログ・ボックスの「レベル」タブでレベルを作成することもできます。

図3-3は、ProductディメンションのClassレベルの作成画面です。

図3-3 Classレベルの作成

「図3-3 Classレベルの作成」の説明

階層の作成

ディメンションは、1つ以上の階層を持つことができます。レベルベース階層または値ベース階層を使用できます。

レベルベース階層

ほとんどの階層はレベルベースです。Analytic Workspace Managerでは、次の一般的なタイプのレベルベース階層がサポートされています。

- 通常階層は、1つ以上の集計レベルで構成されます。メンバーは、多対1の関係における次に高いレベルにロールアップされ、これらのメンバーがその次に高いレベルにロールアップされ、最終的にトップ・レベルまでロールアップされます。

- 不規則階層には、異なるベースを持ち、階層の「不規則な」ベース・レベルを形成するメンバーが1つ以上含まれます。不規則階層はキューブ・マテリアライズド・ビューではサポートされません。

- スキップレベル階層には、複数の高いレベルに親を持ち、階層に欠落部分を作成するメンバーが1つ以上含まれます。スキップレベル階層の例としては、少なくとも1つの都市がその親として国を持つ（アメリカ合衆国におけるワシントン市など）都市-州-国という階層があげられます。
リレーショナル・ソース表では、スキップレベル階層はレベル列にNULLを含む場合があります。スキップレベル階層はキューブ・マテリアライズド・ビューではサポートされません。

ディメンションに複数の階層がある場合、通常はベース・レベルのディメンション・メンバーが共有され、それぞれの階層に分岐します。これらが同一のベース・メンバーおよび集計演算子を使用する場合は、最上位レベルを共有できます。ベース・メンバーと集計演算子が異なるときは、それぞれの集計値を格納するための個別の最上位レベルが必要となります。たとえば、Customerディメンションには、すべてのベース・レベルの顧客を格納し、共通の最上位レベルに集計される、複数の階層を作成できます。一方、Calendar階層とFiscal階層を持つTimeディメンションの場合は、Calendar Year（暦年）レベル（1月から12月まで）とFiscal Year（会計年度）レベル（7月から6月まで）に分けて集計する必要があります。これらの階層では使用されるベース・レベル・メンバーが異なるためです。

値ベース階層

親子関係を含むが、レベルをサポートしないディメンションも存在します。たとえば、従業員ディメンションが、各従業員の上司を識別する親子関係を含む場合があります。第1レベルの上司、第2レベルの上司、第3レベルの上司などをグループ化するレベルは、分析の役に立つとはかぎりません。同様に、明細項目ディメンションが、意味のあるレベルにグループ化できないメンバーを含む場合もあります。このような場合は、指定されたレベルを持たない、親子関係で定義された値ベース階層を作成できます。値ベース階層は、ソース・キーを使用するディメンションに対してのみ作成できます。サロゲート・キーはレベルの名前を使用して形成されるため、値ベース階層では使用できません。

階層の作成手順:

1. 目的のディメンションのフォルダを開きます。

2. 「階層」を右クリックし、「階層の作成」を選択します。
「階層の作成」ダイアログ・ボックスが表示されます。

3. 「階層の作成」ダイアログ・ボックスの「一般」タブに必要な情報を入力します。
「ヘルプ」をクリックすると、各項目の詳細を参照できます。

4. 「作成」をクリックします。
階層が「階層」フォルダ内の項目として表示されます。

図3-4は、ProductディメンションのPrimary階層の作成画面です。

図3-4 Product Primary階層の作成

「図3-4 Product Primary階層の作成」の説明

属性の作成

属性は、ディメンションの個々のメンバーに関する情報を提供します。属性は、クロス集計表示およびグラフィカルなデータ表示のラベル付け、データの選択、ディメンション・メンバーの編成などの目的に使用します。

自動的に定義される属性

Analytic Workspace Managerでは、ディメンションの作成時に一部の属性が自動的に作成されます。これらの属性は一意の型（「詳細な説明」など）を持ちます。

すべてのディメンションは、詳細な説明および簡単な説明付きで作成されます。ソース表に詳細な説明および簡単な説明が含まれている場合は、属性を対応する列にマップできます。ただし、ソース表に含まれている説明が1セットのみである場合は、説明属性を1つのみ作成してマップします。詳細な説明属性と簡単な説明属性の両方を同じ列にマップすると、データは2回ロードされます。

Timeディメンションは、期間属性および終了日属性付きで作成されます。この情報は、Timeディメンションのすべてのメンバーに対して指定する必要があります。

ユーザー定義の属性

ディメンション・メンバーに関する補足的な情報（顧客の住所や電話番号、製品の色やサイズなど）を示す、ユーザー定義の属性を追加することもできます。

属性の作成手順:

1. 目的のディメンションのフォルダを開きます。

2. 「属性」を右クリックし、「属性の作成」を選択します。
「属性の作成」ダイアログ・ボックスが表示されます。

3. 「属性の作成」ダイアログ・ボックスの「一般」タブに必要な情報を入力します。
すべてのディメンション・メンバーに適用される属性と、1つのレベルにしか適用されない属性があります。「属性を適用」ボックスで選択する項目に応じて、属性を1つの列にマッピングするか、複数の列にマッピングするかを制御できます。

「ヘルプ」をクリックすると、各項目の詳細を参照できます。

4. デフォルトのデータ型はVARCHAR2ですが、別のデータ型に変更する場合は「実装の詳細」タブで設定します。

5. 「作成」をクリックします。
属性が「属性」フォルダ内の項目として表示されます。

図3-5は、ProductディメンションのMarketing Manager属性の作成画面です。ここでは、この属性はItemレベルにのみ適用されます。

図3-5 Product Marketing Manager属性の作成

「図3-5 Product Marketing Manager属性の作成」の説明

一意キー属性

マテリアライズド・ビューでは、キューブの各ディメンションに一意キー属性が必要です。これらの属性にはソース・ディメンションの元のキー値が格納されます。この値は、キューブの埋込み合計ディメンションを作成したときに変更されている可能性があります。

キューブ・マテリアライズド・ビューのディメンションの一意キー属性はAnalytic Workspace Managerによって自動的に作成されます。ユーザーが手動で作成や管理を行う必要はありません。

ディメンションのマッピング

マッピングによって、各次元オブジェクトのリレーショナル・データソースを特定します。ディメンションをリレーショナル表またはビューの列にマッピングした後で、データをロードできます。各ディメンションに対して作成、マッピング、ロードの手順を個別に実行するか、またはすべてのディメンションに対して1つの手順を実行してから次の手順を実行します。

ディメンション用のSQLデータ型

ディメンションおよびレベルは、次のSQLデータ型を持つ列にマップできます。これらのデータ型はデータのロード中にテキストに変換されます。

- VARCHAR2

- NVARCHAR2

- NUMBER

- INTEGER

- DECIMAL

- CHAR

- NCHAR

- DATE

- TIMESTAMP

- TIMESTAMP WITH TIMEZONE

- TIMESTAMP WITH LOCAL TIMEZONE

同じデータ型のキューブやメジャーには属性をマップできます（「データ型」を参照）。

ディメンションのマッピング・ウィンドウ

マッピング・ウィンドウには、表形式ビューとグラフィカル・ビューがあります。この2つのビューは、キャンバスの上部にあるアイコンを使用して切り替えることができます。

- 表形式ビュー: スキーマ・ナビゲーション・ツリーから、個々の列名を次元オブジェクトの行にドラッグ・アンド・ドロップします。

- グラフィカル・ビュー: スキーマ・ナビゲーション・ツリーから、表およびビューを表すアイコンをマッピング・キャンバスにドラッグ・アンド・ドロップします。その後、列から次元オブジェクトに線を引きます。

表形式ビューでディメンションをマップするときはOLAP式の構文を使用できます。この機能があるため、ディメンション表にソース列がなくてもディメンションの最上位レベルを作成することが可能です。

また、異なる表から属性をマップすることも可能です。OLAPは、同じ名前の列で自動的に表を結合します。

マッピング・ウィンドウの「ヘルプ」をクリックすると、詳細を確認できます。

ディメンションのマッピング手順:

1. ナビゲーション・ツリーでディメンションのフォルダを開き、「マッピング」をクリックします。
マッピング・ウィンドウには、左側にスキーマ・ナビゲーション・ツリーがある他、選択したディメンションのマッピング表（行はレベルとその属性）が表示されます。これが表形式ビューです。

2. 正規化されたディメンション表の場合は、「ディメンション表のタイプ」に「スノーフレーク・スキーマ」を選択します。

3. マッピング・ウィンドウを大きくするために、ペインの境界線を左側にドラッグします。

4. スキーマ・ツリーで、ディメンションのメンバーおよび属性が格納されている表、ビューまたはシノニムを開きます。

5. ソース列を、ディメンションのマッピング表の適切なセルにドラッグ・アンド・ドロップします。

6. すべてのレベルと属性をマップしたら、「適用」をクリックします。

7. 境界線を右側にドラッグして、ナビゲーション・ツリーが表示されるようにします。

図3-6は、表形式ビューでマップしたProductディメンションを示したものです。矢印は、PRODUCT_DIM.ITEM_BUYER列がPRODUCT.ITEM.BUYER属性にマッピングされていることを表しています。

図3-6 表形式ビューでマップしたProductディメンション

「図3-6 表形式ビューでマップしたProductディメンション」の説明

リレーショナル・ソースなしで最上位レベルをマップする手順:

1. ディメンションとそのレベル（最上位レベルを含む）、階層および属性を作成します。

2. 前述のディメンションを最上位レベル以外のすべてにマップします。

3. 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は数値に設定されます。

ソース・データの問合せ

マッピング・ウィンドウから直接、特定のソース列の内容を表示できます。この情報はすぐに確認できるので、名前から内容を判断できないときに推測で作業を進める必要がなくなります。

特定のソース表またはビューの値の表示手順:

1. スキーマ・ツリーまたはマッピング・キャンバスのグラフィカル・ビューでソース・オブジェクトを右クリックします。

2. ショートカット・メニューから「データを表示」を選択します。

図3-7は、PRODUCT_DIM表に格納されているデータを示しています。

図3-7 PRODUCT_DIM表のデータ

「図3-7 PRODUCT_DIM表のデータ」の説明

ディメンションへのデータのロード

Analytic Workspace Managerでは、複数の方法で次元オブジェクトにデータをロードできます。データ・モデルを最も早く作成できるのは、メンテナンス・ウィザードのデフォルト設定を使用する方法です。本番環境では、ここで紹介する方法よりも適切な方法がある場合もあります。これらについては、「データのメンテナンス方法の選択」を参照してください。

ディメンションにデータをロードする手順:

1. ナビゲーション・ツリーで、「ディメンション」フォルダまたは特定のディメンションのフォルダを右クリックします。

2. 「ディメンションのメンテナンス」を選択します。
メンテナンス・ウィザードが起動し、「オブジェクトを選択」ページが表示されます。

3. 「使用可能なターゲット・オブジェクト」から1つ以上のディメンションを選択し、矢印のボタンを使用して「選択済ターゲット・オブジェクト」に移動します。

4. ディメンション値をすぐにロードする場合は、「終了」をクリックします。
ウィザードの他のページでは、SQLスクリプトを作成したり、ロード処理をOracleジョブ・キューに送ることができます。これらのオプションを使用する場合は、「次へ」をクリックします。

5. 作成ログを確認します（このログは作成が完了したときに表示されます）。ログにエラーの発生が記録されている場合は、そのエラーを修正してから再度メンテナンス・ウィザードを実行します。
一般に、エラーの原因は不適切なマッピングです。不完全なマッピングやソース・オブジェクトに対する変更がないかどうかを確認してください。

図3-8は、メンテナンス・ウィザードの最初のページです。Productディメンションのみがメンテナンスの対象として選択されています。Productディメンションのすべてのメンバーおよび属性が、マップされたリレーショナル・ソースからフェッチされます。

図3-8 Productディメンションへのディメンション値のロード

「図3-8 Productディメンションへのディメンション値のロード」の説明

図3-9は、Analytic Workspace Managerで表示されるメンテナンス・ログです。このメンテナンス・ログは、すべての作成処理をリフレッシュして最新情報を表示します。

図3-9 Productディメンションのメンテナンス・ログ

「図3-9 Productディメンションのメンテナンス・ログ」の説明

ディメンション・ビューの表示

メンテナンス・ウィザードは、ディメンションおよび階層のリレーショナル・ビューを自動的に生成します。これらのビューおよびビューに対する問合せ方法については、第4章を参照してください。

図3-10は、Product Primary階層のリレーショナル・ビューの説明画面です。データについては「データ」タブで確認できます。

図3-10 Product Primary階層ビュー

「図3-10 Product Primary階層ビュー」の説明

デフォルト階層の表示

ディメンションにデータをロードしたら、デフォルトの階層を表示できます。

デフォルト階層の表示手順:

1. ナビゲーション・ツリーで、ディメンションの名前を右クリックします。

2. 「データを表示」を選択します。

図3-11は、ProductディメンションのPrimary階層です。

図3-11 Product Primary階層の表示

「図3-11 Product Primary階層の表示」の説明

キューブの作成

キューブは、まったく同じディメンションを持つメジャーを識別する情報オブジェクトです。したがって、データのロード、集計、格納および問合せというすべての段階において、同時に処理される対象となります。

キューブは、ビジネス・メジャーの形状を定義します。キューブは、順序付けされた一連のディメンションによって定義されます。ディメンションはキューブのエッジを形成し、メジャーはキューブ本体のセルになります。

キューブの作成手順:

1. 目的のアナリティック・ワークスペースのフォルダを開きます。

2. 「キューブ」を右クリックし、「キューブの作成」を選択します。
「キューブの作成」ダイアログ・ボックスが表示されます。

3. 「一般」タブで、キューブの名前を入力し、ディメンションを選択します。

4. 「集計」タブで「ルール」サブタブをクリックし、各ディメンションの集計方法を選択します。キューブで複数の方法を使用する場合は、必要な結果を取得するためのディメンションの集計順序を指定する必要があります。
集計から除外する階層を指定する必要がなければ、タブの一番下のオプションは無視してかまいません。

5. キューブのマッピング後にアドバイザを実行すると、最適なパーティションと記憶域がOracle OLAPによって決定されます。かわりに、これらのオプションをユーザー自身で定義する場合は、キューブを作成する前に「パーティショニング」タブと「記憶域」タブで設定を行います。

6. 「作成」をクリックします。キューブが「キューブ」以下にサブフォルダとして表示されます。

図3-12は、Unitsキューブの「ルール」サブタブに演算子のリストが表示されている画面です。

参照:
集計演算子については、「集計演算子」を参照してください。

図3-12 集計演算子の選択

「図3-12 集計演算子の選択」の説明

メジャーの作成

メジャーは、ビジネスに関して収集されたファクトを格納します。各メジャーは特定のキューブに属しているため、キューブ内の他のメジャーと特定の特性を共有しています（ディメンションが同じであるなど）。メジャーのデフォルトの特性はキューブから継承されます。

メジャーの作成手順:

1. メジャーのディメンションを持つキューブのフォルダを開きます。

2. 「メジャー」を右クリックし、「メジャーの作成」を選択します。
「メジャーの作成」ダイアログ・ボックスが表示されます。

3. 「一般」タブで、メジャーの名前を入力します。

4. 「作成」をクリックします。
メジャーが「メジャー」フォルダ内の項目としてナビゲーション・ツリーに表示されます。

図3-13は、「メジャーの作成」ダイアログ・ボックスの「一般」タブです。

図3-13 Salesメジャーの作成

「図3-13 Salesメジャーの作成」の説明

キューブのマッピング

キューブのマッピングでは、ディメンションをマッピングしたときと同じインタフェースを使用します（「ディメンションのマッピング」を参照）。キューブを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

- INTERVAL YEAR TO MONTH

- INTERVAL DAY TO SECOND

式

表形式ビューでキューブをマップするときは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

キューブのマッピング手順:

1. ナビゲーション・ツリーでキューブのフォルダを開き、「マッピング」をクリックします。
マッピング・ウィンドウには、左側にスキーマ・ナビゲーション・ツリーがある他、選択したキューブとそのディメンションのマッピング表が表示されます。これが表形式ビューです。

2. マッピング・ウィンドウを大きくするために、ペインの境界線を左側にドラッグします。

3. スキーマ・ツリーで、メジャーのデータが格納されている表、ビューまたはシノニムを開きます。

4. ソース列を、キューブのマッピング表の適切なセルにドラッグ・アンド・ドロップします。

5. すべてのディメンションとメジャーをマップしたら、「適用」をクリックします。

6. 境界線を右側にドラッグして、マッピング・ウィンドウのサイズを小さくします。

図3-14では、マッピング・キャンバスで、UnitsキューブがUNITS_FACT表の列にマップされています。マッピングを保存すると、この図のようなベース・レベルのマッピングの結合状態が表示されます。

図3-14 表形式ビューでマップしたUnitsキューブ

「図3-14 表形式ビューでマップしたUnitsキューブ」の説明

ファクトがキューブにロードされたときにメジャーのファクトを計算する手順:

1. キューブを作成します。

2. すべてのディメンションとメジャーをソース表にマップします。

3. OLAP式の構文の計算を含むようにメジャーのマッピングを編集します。
たとえば、UNITS_FACT.SALESをUNITS_FACT.SALES*1.06に変更します。

行の式、列の式、条件は使用できますが、ネストしたSQL問合せは使用できません。

ディテール・レベルより上のキューブのマッピング手順:

1. 目的のレベルでキューブのディメンションを作成し、それらをソースのディメンション表にマップします。

2. キューブとそのメジャーを作成します。

3. 各メジャーをファクト表のソース列にマップします。

4. 集約されないディメンションの場合は、ディテール・レベルをファクト表のソース列にマップします（キューブの基本的なマッピング方法と同じ）。

5. 集約されるディメンションの場合は、次のようにします。

1. ディメンションを、ファクト表ではなくディメンション表の対応する列にマップします。前述のシナリオでは、TimeディメンションのMonthレベルをTimeディメンション表のMonth列にマップします。たとえば、Monthをtime_dim.month_columnにマップします。

2. ファクト表とディメンション表間のディテール・レベルでの結合条件を入力します。たとえば、time_dim.day_key = fact_tbl.day_foreign_keyのように入力します。

異なる表へのメジャーのマッピング手順:

1. 目的のレベルでキューブのディメンションを作成し、それらをソースのディメンション表にマップします。

2. キューブとそのメジャーを作成します。

3. 各メジャーを対応する表のソース列にマップします。

4. ディメンションのディテール・レベルをそれぞれの表のソース列にマップします。追加するソース列名をドロップすると、既存のマッピングに追加するか、または既存のマッピングと置き換えるかを尋ねるメッセージが表示されます。「追加」を選択します。

例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

パーティション化方法の選択

パーティション化は、キューブ内のメジャーを物理的に格納する手法の1つです。これにより、大きなメジャーのパフォーマンスが次のように向上します。

- データ構造をコンパクトに保つことで、スケーラビリティが向上します。各パーティションは、小さなメジャーのように機能します。

- 関連するデータはまとめて格納されるため、問合せまたはメンテナンスの際に対象となるデータセットが小さくて済みます。

- データ・メンテナンス時のパラレル集計が可能になります。各パーティションを別々のプロセスで集計できます。

- 記憶域上の古いデータの削除が容易になります。古いパーティションを削除し、新しいパーティションを追加できます。

パーティションの数は、キューブへのデータのロードやデータの集計に割当て可能なデータベース・リソースに影響します。十分なリソースが割り当てられていれば、複数のパーティションを同時に集計できます。

ソース表の分析とパーティション化方法の決定は、キューブ・パーティショニング・アドバイザによって行われます。キューブ・パーティショニング・アドバイザの推奨する方法を採用できますが、ユーザー独自のパーティション化方法を決めることもできます。

注意:
キューブ・パーティショニング・アドバイザは、データソースにキューブをマッピングした後、データをロードする前に実行してください。パーティション化方法は、いつでも変更できますが、変更後にはデータを再ロードする必要があります。

パーティション化のディメンションの選択

ライフサイクル管理を中心に考慮してパーティション化方法を決める場合は、Timeディメンションに基づいてキューブをパーティション化する必要があります。こうすれば、古い期間をまとめて削除し、新しい期間を新しいパーティションに追加できます。図3-16では、TimeディメンションのQuarterレベルがパーティション化キーとして使用されています。キューブ・パーティショニング・アドバイザの時間オプションを選択すると、Timeディメンションの階層とレベルをパーティション化に使用するよう推奨されます。

ライフサイクル管理が主要な考慮事項でない場合は、キューブ・パーティショニング・アドバイザを実行して統計オプションを選択します。キューブ・パーティショニング・アドバイザによって、作成と問合せのパフォーマンスを最適化するための方法が決定されます。

キューブ・パーティショニング・アドバイザの実行手順:

1. キューブをデータソースにマップします（マップが完了していない場合）。

2. ナビゲーション・ツリーで、プロパティ・ページを表示するキューブを選択します。

3. 「パーティショニング」タブで、「キューブ・パーティショニング・アドバイザ」をクリックします。

4. 「時間ディメンションを使用するパーティション」または「統計を使用するパーティション」を選択します。
キューブ・パーティショニング・アドバイザがキューブを分析する間、しばらく待機します。分析が完了すると、キューブ・パーティショニング・アドバイザによる推奨設定が表示されます。

5. キューブ・パーティショニング・アドバイザの推奨内容を評価します。

- 推奨設定を使用する場合は、「パーティション・アドバイスの受入れ」を選択します。パーティションが適用されたキューブが再作成されます。

- 推奨設定を使用しない場合は、「パーティション・アドバイスの受入れ」ボックスの選択を解除します。

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

図3-15は「キューブ・パーティショニング・アドバイザ」ダイアログ・ボックスを示しています。

図3-15 キューブのパーティション化

「図3-15 キューブのパーティション化」の説明

パーティション化したディメンションの例

キューブ・パーティショニング・アドバイザにより、TimeディメンションのCalendar階層のQuarterレベルでのパーティション化を推奨されたとします。この場合、各Quarterおよびその子孫が別個のパーティションに格納されます。アナリティック・ワークスペースに3年分のデータがある場合には、Quarterでパーティション化すると、デフォルトの上位パーティションの他に、12の下位パーティションが作成されます。上位パーティションには、残りのすべてのレベル、つまりQuarterより上のレベル（Yearなど）と、その他の階層のレベル（Fiscal YearやYear-to-Dateなど）が格納されます。

図3-16に、Quarterでパーティション化したTimeディメンションを示します。

図3-16 Quarterでパーティション化したTimeディメンション

「図3-16 Quarterでパーティション化したTimeディメンション」の説明

キューブへのデータのロード

キューブにデータをロードする方法は、ディメンションにデータをロードする方法と同じです。ただし、一般にビジネス・メジャーのデータをロード、集計する時間が長くなります。少数のデータ・サンプルを使用して次元モデルを作成する場合を除き、1つ以上のバックグラウンド・プロセスで作成を実行した方がよい場合もあります。

キューブにデータをロードする手順:

1. ナビゲーション・ツリーで、「キューブ」フォルダまたは特定のキューブの名前を右クリックします。

2. 「キューブのメンテナンス」を選択します。
メンテナンス・ウィザードが起動し、「オブジェクトを選択」ページが表示されます。

3. 「使用可能なターゲット・オブジェクト」から1つ以上のキューブを選択し、矢印のボタンを使用して「選択済ターゲット・オブジェクト」に移動します。ディメンションがロードされている場合は、「選択済ターゲット・オブジェクト」からそのディメンションを削除できます。

4. 「ディメンション・データ処理オプション」ページでは、デフォルト値を変更する必要はありません。

5. 「タスク処理オプション」ページでは、作成処理をOracleジョブ・キューに発行したり、Analytic Workspace Managerの外部で実行可能なSQLスクリプトを作成することもできます。
また、この作成処理に使用されるプロセス数を指定することもできます。パラレル処理の数は、キューブのパーティションの数、作成専用のプロセスの数、JOB_QUEUE_PROCESSES初期化パラメータの設定のうち、最も小さい数が上限になります。

「ヘルプ」をクリックすると、各項目の詳細を参照できます。

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

図3-17は、作成処理をすぐにOracleジョブ・キューに発行する場合の例です。

図3-17 スケジューリング・オプションの選択

「図3-17 スケジューリング・オプションの選択」の説明

例3-2 Unitsキューブのメンテナンス・ログは、Analytic Workspace Managerで表示される、キューブのメンテナンス・ログです。このメンテナンス・ログは、すべての作成処理をリフレッシュして最新情報を提供します。セッションですぐに実行されるメンテナンス・タスク用に、メンテナンス・ログは自動的に表示されます。ジョブをOracleジョブ・キューに送ると、「メンテナンス・レポート」フォルダ内の様々なレポート（「スケジュールされているジョブ」、「実行中のジョブ」および「ジョブの履歴」）を通して、その進行状況を追跡できます。「実行中のジョブ」と「ジョブの履歴」の各レポートは、例3-2に示したものと同じです。

図3-18 Unitsキューブのメンテナンス・ログ

「図3-18 Unitsキューブのメンテナンス・ログ」の説明

キューブ内のデータの表示

キューブにデータをロードしたら、Analytic Workspace Managerでビジネス・メジャーのデータを表示できます。

キューブ内のデータの表示手順:

1. ナビゲーション・ツリーでキューブを右クリックします。

2. ショートカット・メニューから「データを表示」を選択します。

メジャー・データ・ビューアが開き、選択したメジャーがページ上部のクロス集計とページ下部のグラフに表示されます。クロス集計では、行と列の見出しになっているディメンション階層を開いたり閉じたりできます。また、ディメンションをピボットしたりスワップすることによって、ディメンションの位置を変更することもできます。必要に応じて、あるディメンションを別のディメンションの入れ子にして、複数のディメンションを行や列の見出しにできます。

デフォルト表示の変更手順:

- ピボット操作を行うには、ディメンションをある位置から別の位置に（通常は他のディメンションの上または下に）ドラッグ・アンド・ドロップします。

- ディメンションをスワップする場合は、ディメンションを別のディメンションの上に直接ドラッグ・アンド・ドロップすれば、2つのディメンションの位置が入れ替わります。

選択データを大幅に変更する場合は、「ファイル」メニューから「クエリー・ビルダー」を選択します。

図3-19は、メジャー・データ・ビューアに表示されたUnitsキューブです。

図3-19 Unitsキューブの表示

「図3-19 Unitsキューブの表示」の説明

キューブ・ビューの説明の表示

メンテナンス・ウィザードは、キューブのリレーショナル・ビューを自動的に生成します。これらのビューおよびビューに対する問合せ方法については、第4章を参照してください。

図3-20は、Unitsキューブのリレーショナル・ビューの説明画面です。

図3-20 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スクリプトを実行できます。

キューブは、キューブ・スクリプトの高度な分析をサポートするために使用する場合、キューブ・マテリアライズド・ビューとして拡張できません（「キューブへのマテリアライズド・ビュー機能の追加」を参照）。この場合、キューブ内のデータが失効していないかどうかや、リフレッシュする必要があるかどうかについて、ユーザー自身で判断する必要があります。

キューブ・スクリプトの作成

キューブ・スクリプトの作成手順

1. キューブ・マテリアライズド・ビューとして定義されていないキューブのフォルダを開きます。

2. 「キューブ・スクリプト」を右クリックし、「キューブ・スクリプトを作成」を選択します。
「キューブ・スクリプトを作成」ダイアログ・ボックスが表示されます。

3. 「一般」タブで、キューブ・スクリプトの名前を入力します。

4. 手順を作成するには、「新規手順」をクリックします。

5. 手順のタイプを選択します。
選択した手順のタイプに関する「新規手順」ダイアログ・ボックスが表示されます。

6. それぞれのタブに必要な情報を入力し、「OK」をクリックします。
手順がキューブ・スクリプトの「一般」タブに表示されます。

7. 「作成」をクリックします。
キューブ・スクリプトが「キューブ・スクリプト」フォルダ内の項目として表示されます。

8. キューブ・スクリプトを実行します。

1. ナビゲーション・ツリーでキューブ・スクリプトを右クリックし、「キューブ・スクリプトの実行」を選択します。
メンテナンス・ウィザードが起動します。

2. ウィザードの各手順を実行します。

3. 結果を表示するには、キューブを右クリックして「データを表示」を選択します。

図3-21に「キューブ・スクリプトの作成」ダイアログ・ボックスを示します。この図では、いくつかの手順がすでに定義されています。

図3-21 キューブ・スクリプトの作成

「図3-21 キューブ・スクリプトの作成」の説明

キューブ・スクリプトの実行

各キューブには、データをロードしたりキューブに対して定義された規則に従ってデータを集計したりする、LOAD_AND_AGGREGATEというデフォルトのキューブ・スクリプトが自動的に割り当てられます。スクリプトはいくつでも追加定義でき、そのうちの1つをデフォルトのキューブ・スクリプトとして指定できます。キューブをリフレッシュする方法はすべて、デフォルトのキューブ・スクリプトを実行します。他のキューブ・スクリプトは、メンテナンス・ウィザードを使用して手動で実行できます。

カスタム・キューブ・スクリプトを手動で実行する手順:

1. 目的のキューブの「キューブ・スクリプト」フォルダを開きます。

2. キューブ・スクリプトを右クリックし、「キューブ・スクリプトの実行」を選択してメンテナンス・ウィザードを起動します。

3. メンテナンス・ウィザードの各手順を実行します。

デフォルト・スクリプトとしてカスタム・キューブ・スクリプトを実行する手順:

1. 目的のキューブの「キューブ・スクリプト」フォルダを開きます。

2. キューブ・スクリプトを選択します。「一般」タブが表示されます。

3. 「このキューブのデフォルト・スクリプト」を選択して「適用」をクリックします。

4. ナビゲーション・ツリーの任意の場所でメンテナンス・ウィザードを起動して、キューブを選択します。

5. メンテナンス・ウィザードの各手順を実行します。

メンテナンス・スクリプトの手順としてキューブ・スクリプトを実行する手順:

1. メンテナンス・スクリプトを作成します。

2. 作成したキューブ・スクリプトを手順として追加します。

3. メンテナンス・スクリプトを実行します。

メンテナンス・スクリプトの作成および実行

メンテナンス・スクリプトは、スキーマ内の複数のキューブをメンテナンスする手順を順番に記述したものです。メンテナンス・スクリプトを使用すると、キューブ間の相互依存性を管理できます。

キューブまたはディメンションをロードして集計するには、それを手順として追加します。特定のキューブやディメンションのメンテナンスをさらに細かく制御する場合は、キューブ・スクリプトを作成するか、次に示す個々の手順をメンテナンス・スクリプトに直接入力するようにしてください。

- データのクリア

- ロード

- 集計

- 分析

- OLAP DML

- PL/SQL

これらは、「カスタム・キューブ・スクリプトの作成および実行」で説明した手順と同じです。

メンテナンス・スクリプトの作成

メンテナンス・スクリプトの作成手順:

1. ナビゲーション・ツリーで、メンテナンス・スクリプトを右クリックし、「メンテナンス・スクリプトの作成」を選択して「メンテナンス・スクリプトの作成」ダイアログ・ボックスを表示します。

2. 「一般」タブで、名前、ラベルおよび説明を入力します。

3. 新しい手順を作成するために、「追加」をクリックして、リストから手順のタイプを選択します。

4. 必要に応じて手順をさらに作成します。この手順の編集、削除または順序変更はいつでも実行できます。

5. 「作成」をクリックします。新しいメンテナンス・スクリプトが「メンテナンス・スクリプト」フォルダ内のオブジェクトとして表示されます。

図3-22は、「メンテナンス・スクリプトの作成」ダイアログ・ボックスの「一般」タブです。

図3-22 メンテナンス・スクリプトの作成

「図3-22 メンテナンス・スクリプトの作成」の説明

メンテナンス・スクリプトの実行

メンテナンス・スクリプトの実行手順:

1. 「メンテナンス・スクリプト」フォルダを開きます。

2. スクリプトを右クリックし、「メンテナンス・スクリプトの実行」を選択します。

3. メンテナンス・ウィザードが起動します。

4. メンテナンス・ウィザードの各手順を実行します。

キューブへのマテリアライズド・ビュー機能の追加

Oracle OLAPキューブは、マテリアライズド・ビュー機能を利用できるように拡張できます。キューブはOracle Databaseマテリアライズド・ビュー・サブシステムを介して段階的にリフレッシュでき、ソース表に対する問合せの透過的リライトの対象として使用できます。このように拡張されたキューブを、キューブ・マテリアライズド・ビューと呼びます。

キューブ・マテリアライズド・ビューに関連付けられたOLAPディメンションも、マテリアライズド・ビュー機能を使用して定義されます。

キューブ・マテリアライズド・ビューとして設定するキューブは、次の条件を満たしている必要があります。

- キューブのすべてのディメンションに、少なくとも1つのレベルと、1つのレベルベース階層が存在する。不規則階層およびスキップレベル階層はサポートされない。ディメンションがマップされている必要がある。

- キューブのすべてのディメンションで同じ集計演算子（SUM、MIN、MAXのいずれか）を使用している。

- ディメンションとメジャーがそれぞれ1つ以上存在する。

- 定義とマップが完全に行われている。たとえば、キューブに5つのメジャーがある場合、その5つすべてがソース表にマップされている。

- キューブのデータ型が、NUMBER、VARCHAR2、NVARCHAR2またはDATEである。

- ソースのディテール表で、ディメンションおよびRELY制約がサポートされている。これらが定義されていない場合は、リレーショナル・スキーマ・アドバイザを使用して、ディテール表に対してこれらを定義するスクリプトを生成できる。

- 圧縮されている。

- 計算済メジャーは使用できるが、キューブ・スクリプト内のより高度な分析機能は使用できない。

参照:
「キューブ・マテリアライズド・ビュー」

マテリアライズド・ビュー機能を追加する手順:

1. ナビゲーション・ツリーでキューブを選択します。
そのキューブのプロパティ・シートが表示されます。

2. 「マテリアライズド・ビュー」タブを選択します。

3. チェックリストを確認し、エラーになったテストがあった場合はその原因を修正します。
キューブ全体が有効な状態にならないと、キューブ・マテリアライズド・ビューを定義できません。

4. 自動リフレッシュする場合は、このページの上半分の項目について設定を行います。クエリー・リライトを行う場合は、このページ内のすべての項目について設定を行ってください。
このページの各項目に関する詳細を確認する場合は、「ヘルプ」をクリックしてください。

5. 「適用」をクリックします。

アナリティック・ワークスペースと同じスキーマにキューブ・マテリアライズド・ビューが表示されます。キューブおよびキューブの各ディメンションのマテリアライズド・ビューが作成されます。従来のマテリアライズド・ビューとは異なり、キューブ・マテリアライズド・ビューはデータの格納にリレーショナル表を使用しません。データはその背後にあるキューブに格納されます。CB$という接頭辞が付いた表が、キューブ・マテリアライズド・ビューです。

新しいマテリアライズド・ビューの最初の状態は無効であるため、リフレッシュを実行するまでクエリー・リライトは利用できません。キューブの「マテリアライズド・ビュー」タブで最初のリフレッシュ時刻を指定するか、メンテナンス・ウィザードでリフレッシュを実行できます。

図3-23は、Unitsキューブの「マテリアライズド・ビュー」タブを示しています。

図3-23 マテリアライズド・ビューの定義

「図3-23 マテリアライズド・ビューの定義」の説明

複数言語のサポート

1つのアナリティック・ワークスペースで複数の言語をサポートできます。このサポートにより、OLAPのアプリケーションやツールのユーザーは自国語でメタデータを表示することが可能になります。たとえば、メジャー、キューブ、ディメンションの表示名に翻訳された名前を使用できます。また、各言語に対応する複数の列に属性をマップすることも可能です。

データベース・キャラクタ・セットでサポートされていて、訳語を指定できる限り、使用できる言語の数と種類に制限はありません。言語の追加や削除はいつでも行うことができます。

複数言語のサポートの追加手順:

1. ナビゲーション・ツリーでアナリティック・ワークスペースのフォルダを開きます。

2. 「言語」を選択して言語のプロパティ・ページを表示します。

3. 「一般」タブで、「言語の変更」をクリックします。

4. 「言語の変更」ダイアログ・ボックスで、アナリティック・ワークスペースでサポートする必要のある言語を選択します。矢印のボタンを使用して「選択された言語」ボックスに移動します。

5. 「OK」をクリックして「言語」プロパティ・ページに戻ります。

6. 各種ラベルや説明の翻訳を入力します。それぞれの言語に、この情報を入力できる列があります。

7. それぞれのディメンションで、マッピング・ウィンドウを開きます。属性を各言語のソース列にマップします。

図3-24では、アナリティック・ワークスペースにフランス語を追加しています。

図3-24 言語の追加

「図3-24 言語の追加」の説明

メジャー・フォルダの定義

メジャー・フォルダは、メジャーをグループに分類して名前を付けたものです。ユーザーは、SalesやCostsといった名前のメジャーを含む複数のアナリティック・ワークスペースやリレーショナル・スキーマにアクセスすることがあります。アプリケーションではメジャー・フォルダを利用してこれらのメジャーを区別します。

メジャー・フォルダの作成手順:

1. 目的のアナリティック・ワークスペースのフォルダを開きます。

2. 「メジャー・フォルダ」を右クリックし、ショートカット・メニューから「メジャー・フォルダの作成」を選択します。

3. 「メジャー・フォルダの作成」ダイアログ・ボックスの「一般」タブで必要な情報を入力します。
「ヘルプ」をクリックすると、各項目の詳細を参照できます。

メジャー・フォルダが、ナビゲーション・ツリーの「メジャー・フォルダ」の下に表示されます。サブフォルダも作成できます。

図3-25は、メジャー・フォルダの作成画面です。

図3-25 メジャー・フォルダの作成

「図3-25 メジャー・フォルダの作成」の説明

テンプレートを使用した次元モデルの再作成

Analytic Workspace Managerでは、データ・モデルのすべてまたは一部をテキスト・ファイルとして保存できます。このテキスト・ファイルには、ディメンション、レベル、階層、属性、メジャーなどの次元オブジェクトのXML定義が含まれます。保存されるのはメタデータのみであり、データは保存されません。テンプレートは小さなファイルです。したがって、GlobalおよびSales HistoryのテンプレートがOracle Webサイトで配布されているように、電子メールやWebサイト上で簡単に配布できます。次元オブジェクトを再作成するには、Analytic Workspace Managerでテンプレートを指定するだけです。

次の種類のオブジェクトをXMLテンプレートとして保存できます。

- アナリティック・ワークスペース: すべての次元オブジェクトが保存されます。アナリティック・ワークスペース全体を保存すれば、自動的にメジャー・フォルダも保存されます。

- ディメンション: ディメンションとそのレベル、階層、属性およびマッピングが保存されます。

- キューブ: キューブとそのメジャー、計算済メジャー、キューブ・スクリプトおよびマッピングが保存されます。

テンプレートは、ローカル・システム上の任意の場所に保存できます。

テンプレートの作成手順:

- ナビゲーション・ツリーでアナリティック・ワークスペース、ディメンションまたはキューブを右クリックし、「テンプレートにアナリティック・ワークスペースを保存」（または「テンプレートにディメンションを保存」、「テンプレートにキューブを保存」）を選択します。

テンプレートからアナリティック・ワークスペースを再作成する手順:

- ナビゲーション・ツリーで「アナリティック・ワークスペース」を右クリックし、「テンプレートからアナリティック・ワークスペースを作成」を選択します。

テンプレートからディメンションやキューブを追加または変更する手順:

1. アナリティック・ワークスペースを開くか、または作成します。

2. ナビゲーション・ツリーで「ディメンション」または「キューブ」を右クリックし、「テンプレートからディメンションを作成」（または「テンプレートからキューブを作成」）を選択します。既存のディメンションやキューブのメタデータを上書きするには、「オプション」タブで「既存のオブジェクトの変更」を選択します。

4 次元オブジェクトの問合せ

Oracle OLAPでは多数の分析コンテンツが用意されており、問合せに対する応答も高速なため、お使いのSQLアプリケーションを強化できます。SQL問合せのインタフェースにより、OLAPの知識がなくても、すべてのアプリケーションでキューブやディメンションへの問合せを実行できます。

OLAPオプションは、キューブ、ディメンションおよび階層のリレーショナル・ビューを自動的に生成します。SQLアプリケーションでこれらのビューを問い合せることにより、分析担当者や意思決定者はこれらのオブジェクトの情報量に富んだ内容を表示できます。また、実表などのシステム生成ビューを使用して、お使いのアプリケーションが求める構造に従ったカスタム・ビューを作成できます。

この章では、SQLで次元オブジェクトを問い合せるための基本的な方法を説明します。この章では、次の項目について説明します。

- OLAPの各ビューについて

- 基本的な問合せの作成

- 階層問合せの作成

- 問合せでの計算の使用

- 集計での属性の使用

- 実行計画の表示

- データ・ディクショナリの問合せ

参照:

- Oracle Application Expressを使用して作成したサンプル・ダッシュボードについては、「SQLツールとアプリケーション・ビルダーを使用したレポートとダッシュボードの開発」を参照してください。

- キューブ、ディメンションおよび階層については、「次元データ・モデルの概要」を参照してください。

OLAPの各ビューについて

システム生成ビューはアナリティック・ワークスペースと同じスキーマに作成されます。Oracle OLAPでは、次の3種類のビューを使用できます。

- キューブ・ビュー

- ディメンション・ビュー

- 階層ビュー

これらのビューは、スター・スキーマにおけるファクト表とディメンション表と同様の関係にあります。キューブ・ビューはファクト表と同じ機能を持ち、階層ビューとディメンション・ビューはディメンション表と同様に機能します。通常の問合せでは、階層ビューまたはディメンション・ビューのいずれかとキューブ・ビューを結合します。

キューブ・ビュー

各キューブには、キューブ内のすべてのメジャーと計算済メジャーのデータを示すキューブ・ビューが1つあります。キューブ・ビューは、スター・スキーマまたはスノーフレーク・スキーマ内のファクト表のように使用できます。ただし、キューブ・ビューには、ディテール・レベルのデータの他にすべてのサマリー・データも含まれます。

キューブ・ビューの名前の確認

キューブ・ビューのデフォルトの名前はcube_VIEWです。スキーマ内のUNITS_CUBEのビューを検索するには、次のような問合せを発行します。

SELECT view_name FROM user_views WHERE view_name LIKE 'UNITS_CUBE%';

VIEW_NAME
------------------------------
UNITS_CUBE_VIEW

次の問合せを発行すると、USER_CUBE_VIEWSからスキーマ内のすべてのキューブ・ビューの名前が戻されます。

SELECT view_name FROM user_cube_views;

VIEW_NAME
------------------------------
UNITS_CUBE_VIEW
PRICE_CUBE_VIEW

キューブ・ビューの列の確認

ファクト表と同様、キューブ・ビューには、キューブ内のメジャー、計算済メジャーおよびディメンションそれぞれに対応する列が含まれています。次の例のUNITS_CUBE_VIEWには、SALES、UNITS、COSTの3つのメジャー、SALESの複数の計算済メジャー、およびTIME、CUSTOMER、PRODUCT、CHANNELの各ディメンションを表す列があります。

DESCRIBE units_cube_view
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
SALES                                              NUMBER
UNITS                                              NUMBER
COST                                               NUMBER
SALES_PP                                           NUMBER
SALES_CHG_PP                                       NUMBER
SALES_PCTCHG_PP                                    NUMBER
SALES_PROD_SHARE_PARENT                            NUMBER
SALES_PROD_SHARE_TOTAL                             NUMBER
SALES_PROD_RANK_PARENT_PP                          NUMBER
TIME                                               VARCHAR2(100)
CUSTOMER                                           VARCHAR2(100)
PRODUCT                                            VARCHAR2(100)
CHANNEL                                            VARCHAR2(100)

次の問合せのように、USER_CUBE_VIEW_COLUMNSデータ・ディクショナリ・ビューを問い合せるとキューブ・ビューの列が戻されます。

SELECT column_name, column_type FROM user_cube_view_columns
WHERE view_name = 'UNITS_CUBE_VIEW';

COLUMN_NAME                    COLUMN_TYPE
------------------------------ --------------
SALES                          MEASURE
UNITS                          MEASURE
COST                           MEASURE
SALES_PP                       MEASURE
SALES_CHG_PP                   MEASURE
SALES_PCTCHG_PP                MEASURE
SALES_PROD_SHARE_PARENT        MEASURE
SALES_PROD_SHARE_TOTAL         MEASURE
SALES_PROD_RANK_PARENT_PP      MEASURE
TIME                           KEY
CUSTOMER                       KEY
PRODUCT                        KEY
CHANNEL                        KEY

13 rows selected.

キューブ・ビューの内容の表示

次のような問合せを発行すると、キューブ・ビューの内容をすぐに表示できます。キューブには、ディテール・レベルから最上位レベルに至るすべてのレベルのデータが格納されています。

SELECT sales, units, time, customer, product, channel
FROM units_cube_view WHERE ROWNUM < 15;

SALES      UNITS TIME       CUSTOMER   PRODUCT    CHANNEL
---------- ---------- ---------- ---------- ---------- --------
1120292752    4000968 TOTAL      TOTAL      TOTAL      TOTAL
134109248     330425 CY1999     TOTAL      TOTAL      TOTAL
130276514     534069 CY2003     TOTAL      TOTAL      TOTAL
100870877     253816 CY1998     TOTAL      TOTAL      TOTAL
136986572     565718 CY2005     TOTAL      TOTAL      TOTAL
140138317     584929 CY2006     TOTAL      TOTAL      TOTAL
144290686     587419 CY2004     TOTAL      TOTAL      TOTAL
124173522     364233 CY2000     TOTAL      TOTAL      TOTAL
92515295     364965 CY2002     TOTAL      TOTAL      TOTAL
116931722     415394 CY2001     TOTAL      TOTAL      TOTAL
31522409.5      88484 CY2000.Q1  TOTAL      TOTAL      TOTAL
27798426.6      97346 CY2001.Q2  TOTAL      TOTAL      TOTAL
29691668.2     105704 CY2001.Q3  TOTAL      TOTAL      TOTAL
32617248.6     138953 CY2005.Q3  TOTAL      TOTAL      TOTAL

14 rows selected.

ディメンション・ビューと階層ビュー

各ディメンションには、ディメンション・ビューが1つと、そのディメンションに関連付けられている各階層の階層ビューがあります。たとえば、Timeディメンションは、次の3つのビューを持つ場合があります。

- Time（時間）ディメンション・ビュー

- Calendar（暦年）階層ビュー

- Fiscal（会計年度）階層ビュー

ディメンション・ビューと階層ビューは、スター・スキーマのディメンション表のように使用できます。

ディメンション・ビューおよび階層ビューの名前の確認

USER_CUBE_DIM_VIEWSでは、すべてのディメンションのディメンション・ビューを確認できます。ディメンション・ビューのデフォルトの名前はdimension_VIEWです。

SELECT * FROM user_cube_dim_views;

DIMENSION_NAME                 VIEW_NAME
------------------------------ ------------------------------
PRODUCT                        PRODUCT_VIEW
CUSTOMER                       CUSTOMER_VIEW
CHANNEL                        CHANNEL_VIEW
TIME                           TIME_VIEW

USER_CUBE_HIER_VIEWSでは、すべてのディメンションの階層ビューを確認できます。階層ビューのデフォルトの名前はdimension_hierarchy_VIEWです。次の問合せを発行すると、ディメンション名、階層名およびビュー名が戻されます。

SELECT * FROM user_cube_hier_views ORDER BY dimension_name;

DIMENSION_NAME  HIERARCHY_NAME  VIEW_NAME
--------------- --------------- ------------------------------
CHANNEL         PRIMARY         CHANNEL_PRIMARY_VIEW
CUSTOMER        SEGMENT         CUSTOMER_SEGMENT_VIEW
CUSTOMER        SHIPMENTS       CUSTOMER_SHIPMENTS_VIEW
PRODUCT         PRIMARY         PRODUCT_PRIMARY_VIEW
TIME            FISCAL          TIME_FISCAL_VIEW
TIME            CALENDAR        TIME_CALENDAR_VIEW

ディメンション・ビューの列の確認

ディメンション表と同様、ディメンション・ビューにはキー列、レベル名、ディメンションと関連付けられた各階層のすべてのレベルのレベル・キー、および属性列が含まれます。次の例のTIME_VIEWには、ディメンション・キー、レベル名、ディメンション属性を表す列があります。

DESCRIBE time_view
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
DIM_KEY                                            VARCHAR2(100)
LEVEL_NAME                                         VARCHAR2(30)
DIM_ORDER                                          NUMBER
END_DATE                                           DATE
LONG_DESCRIPTION                                   VARCHAR2(100)
SHORT_DESCRIPTION                                  VARCHAR2(100)
TIME_SPAN                                          NUMBER

次の問合せのように、USER_CUBE_DIM_VIEW_COLUMNSを問い合せると各列の情報が戻されます。

SELECT column_name, column_type FROM user_cube_dim_view_columns
WHERE view_name ='TIME_VIEW';

COLUMN_NAME                    COLUMN_TYPE
------------------------------ --------------------
DIM_KEY                        KEY
LEVEL_NAME                     LEVEL_NAME
DIM_ORDER                      DIM_ORDER
END_DATE                       ATTRIBUTE
TIME_SPAN                      ATTRIBUTE
LONG_DESCRIPTION               ATTRIBUTE
SHORT_DESCRIPTION              ATTRIBUTE

ディメンション・ビューの内容の表示

次の問合せを発行すると、各ディメンション・キーのレベルと属性が表示されます。

SELECT dim_key, level_name, long_description description, time_span, end_date
FROM time_view WHERE dim_key LIKE '%2005%';

DIM_KEY      LEVEL_NAME           DESCRIPTION   TIME_SPAN END_DATE
------------ -------------------- ------------ ---------- ---------
CY2005       CALENDAR_YEAR        2005                365 31-DEC-05
CY2005.Q2    CALENDAR_QUARTER     Q2.05                91 30-JUN-05
CY2005.Q4    CALENDAR_QUARTER     Q4.05                92 31-DEC-05
CY2005.Q3    CALENDAR_QUARTER     Q3.05                92 30-SEP-05
CY2005.Q1    CALENDAR_QUARTER     Q1.05                90 31-MAR-05
2005.01      MONTH                JAN-05               31 31-JAN-05
2005.05      MONTH                MAY-05               31 31-MAY-05
2005.07      MONTH                JUL-05               31 31-JUL-05
2005.03      MONTH                MAR-05               31 31-MAR-05
2005.04      MONTH                APR-05               30 30-APR-05
2005.08      MONTH                AUG-05               31 31-AUG-05
2005.09      MONTH                SEP-05               30 30-SEP-05
2005.02      MONTH                FEB-05               28 28-FEB-05
2005.11      MONTH                NOV-05               30 30-NOV-05
2005.06      MONTH                JUN-05               30 30-JUN-05
2005.10      MONTH                OCT-05               31 31-OCT-05
2005.12      MONTH                DEC-05               31 31-DEC-05
FY2005       FISCAL_YEAR          FY2005              365 30-JUN-05
FY2005.Q4    FISCAL_QUARTER       Q4 FY-05             91 30-JUN-05
FY2005.Q1    FISCAL_QUARTER       Q1 FY-05             92 30-SEP-04
FY2005.Q2    FISCAL_QUARTER       Q2 FY-05             92 31-DEC-04
FY2005.Q3    FISCAL_QUARTER       Q3 FY-05             90 31-MAR-05

22 rows selected.

階層ビューの列の確認

ディメンション・ビューと同じく、階層ビューにもディメンション・キー、レベル名およびレベル・キーが含まれています。ただし、行と列はすべて、階層に属するディメンション・キーと関連付けられています。

DESCRIBE time_calendar_view
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
DIM_KEY                                            VARCHAR2(100)
LEVEL_NAME                                         VARCHAR2(30)
DIM_ORDER                                          NUMBER
HIER_ORDER                                         NUMBER
LONG_DESCRIPTION                                   VARCHAR2(100)
SHORT_DESCRIPTION                                  VARCHAR2(100)
END_DATE                                           DATE
TIME_SPAN                                          NUMBER
PARENT                                             VARCHAR2(100)
TOTAL                                              VARCHAR2(100)
CALENDAR_YEAR                                      VARCHAR2(100)
CALENDAR_QUARTER                                   VARCHAR2(100)
MONTH                                              VARCHAR2(100)

階層ビューの内容の表示

次の問合せを発行すると、ディメンション・キー、親キー、および2005年（暦年）の全親子関係（祖先、子孫を含む）が表示されます。

SELECT dim_key, long_description description, parent, calendar_year year,
calendar_quarter quarter, month FROM time_calendar_view
WHERE calendar_year='CY2005'
ORDER BY level_name, end_date;

DIM_KEY      DESCRIPTION  PARENT       YEAR         QUARTER      MONTH
------------ ------------ ------------ ------------ ------------ ------------
CY2005.Q1    Q1.05        CY2005       CY2005       CY2005.Q1
CY2005.Q2    Q2.05        CY2005       CY2005       CY2005.Q2
CY2005.Q3    Q3.05        CY2005       CY2005       CY2005.Q3
CY2005.Q4    Q4.05        CY2005       CY2005       CY2005.Q4
CY2005       2005         TOTAL        CY2005
2005.01      JAN-05       CY2005.Q1    CY2005       CY2005.Q1    2005.01
2005.02      FEB-05       CY2005.Q1    CY2005       CY2005.Q1    2005.02
2005.03      MAR-05       CY2005.Q1    CY2005       CY2005.Q1    2005.03
2005.04      APR-05       CY2005.Q2    CY2005       CY2005.Q2    2005.04
2005.05      MAY-05       CY2005.Q2    CY2005       CY2005.Q2    2005.05
2005.06      JUN-05       CY2005.Q2    CY2005       CY2005.Q2    2005.06
2005.07      JUL-05       CY2005.Q3    CY2005       CY2005.Q3    2005.07
2005.08      AUG-05       CY2005.Q3    CY2005       CY2005.Q3    2005.08
2005.09      SEP-05       CY2005.Q3    CY2005       CY2005.Q3    2005.09
2005.10      OCT-05       CY2005.Q4    CY2005       CY2005.Q4    2005.10
2005.11      NOV-05       CY2005.Q4    CY2005       CY2005.Q4    2005.11
2005.12      DEC-05       CY2005.Q4    CY2005       CY2005.Q4    2005.12

17 rows selected.

基本的な問合せの作成

キューブに対する問合せは、スター・スキーマに対する問合せと似ています。スター・スキーマの場合は、ファクト表とディメンション表を結合します。ファクト表にはビジネス・メジャー（数値）、ディメンション表にはデータに意味を与える説明的な属性が格納されています。同様に、キューブ・ビューをディメンション・ビューまたは階層ビューのいずれかと結合することによって、完全に識別可能な意味のあるデータを利用できます。

階層を持たないディメンションの場合は、ディメンション・ビューを問合せで使用します。階層を持つディメンションの場合は階層ビューを使用します。これは、ディメンション・ビューよりも階層ビューの方が多くの情報を含んでいるためです。

キューブを問い合せるときは、次のガイドラインに従ってください。

- すべてのディメンションにフィルタを適用する。
キューブにはディテール・レベル・データと集計データの両方が含まれています。問合せでフィルタを適用しないディメンションを使用すると、一般にユーザーが必要とするよりも多くのデータが戻されるため、パフォーマンスが低下します。

- キューブによるデータの集計を許可する。
キューブ内では集計値が計算されているため、通常の問合せではGROUP BY句は必要ありません。ディメンション・キーまたは属性に対して適切なフィルタを使用し、必要な集計値を選択してください。

すべてのディメンションへのフィルタの適用

レベル・フィルタを作成する場合、ディメンション・レベルの名前が必要になります。これらは、ディメンション・ビューまたは階層ビューを問い合せることにより簡単に取得できます。

SELECT DISTINCT level_name FROM time_calendar_view;

LEVEL_NAME
------------------------------
CALENDAR_YEAR
CALENDAR_QUARTER
MONTH
TOTAL

一部のデータ・ディクショナリ・ビューでもレベルの名前を確認できます。次の例では、USER_CUBE_HIER_LEVELSを問い合せています。

SELECT level_name FROM user_cube_hier_levels
WHERE dimension_name = 'TIME' AND hierarchy_name ='CALENDAR';

LEVEL_NAME
--------------------
TOTAL
CALENDAR_YEAR
CALENDAR_QUARTER
MONTH

すべてのディメンションにフィルタを適用することの重要性を理解するために、Timeディメンションにフィルタを適用していない例4-1の問合せについて考えてみます。

例4-1 Timeのすべてのレベルでの集計の表示

/* Select key descriptions and facts */
SELECT t.long_description time,
ROUND(f.sales) sales
/* From dimension views and cube view */
FROM time_calendar_view t,
product_primary_view p,
customer_shipments_view cu,
channel_primary_view ch,
units_cube_view f
/* No filter on Time */
WHERE p.level_name = 'TOTAL'
AND cu.level_name = 'TOTAL'
AND ch.level_name = 'TOTAL'
/* Join dimension views to cube view */
AND t.dim_key = f.time
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND ch.dim_key = f.channel
ORDER BY t.end_date;

Timeディメンションにフィルタを適用しないと、Timeのすべてのレベルの値が戻されます。ユーザーが通常必要とするよりも多数のデータが戻されるため、パフォーマンスが低下する可能性があります。

TIME            SALES
---------- ----------
JAN-98        8338545
FEB-98        7972132
Q1.98        24538588
MAR-98        8227911
APR-98        8470315
MAY-98        8160573
JUN-98        8362386
Q2.98        24993273
JUL-98        8296226
AUG-98        8377587
SEP-98        8406728
Q3.98        25080541
OCT-98        8316169
NOV-98        8984156
Q4.98        26258474
1998        100870877
.
.
.

次に、Timeを年レベルのデータに制限するフィルタを適用したときの結果を見てみます。

例4-2は、基本的な問合せの例です。ここでは、UNITS_CUBE_VIEWからSalesメジャーを選択し、このキューブ・ビューのキーを階層ビューに結合してキーの説明を取得します。

例4-2 キューブ・ビューの基本的な問合せ

/* Select key descriptions and facts */
SELECT t.long_description time,
ROUND(f.sales) sales
/* From dimension views and cube view */
FROM time_calendar_view t,
product_primary_view p,
customer_shipments_view cu,
channel_primary_view ch,
units_cube_view f
/* Create level filters */
WHERE t.level_name = 'CALENDAR_YEAR'
AND p.level_name = 'TOTAL'
AND cu.level_name = 'TOTAL'
AND ch.level_name = 'TOTAL'
/* Join dimension views to cube view */
AND t.dim_key = f.time
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND ch.dim_key = f.channel
ORDER BY t.end_date;

例4-2を実行すると、次の行が選択されます。CUSTOMER、PRODUCTおよびCHANNELについては最上位レベルの1つの値のみ戻されます。TIMEでは各歴年の値が戻されます。

TIME          SALES
-------- ----------
1998      100870877
1999      134109248
2000      124173522
2001      116931722
2002       92515295
2003      130276514
2004      144290686
2005      136986572
2006      140138317

ディメンション属性を使用して、問合せ用のデータを選択することもできます。例4-3のWHERE句では、すべてのディメンションをフィルタするために、属性値を使用しています。

例4-3 属性フィルタによるデータの選択

/* Select key descriptions and facts */
SELECT t.long_description time,
p.long_description product,
cu.long_description customer,
ch.long_description channel,
ROUND(f.sales) sales
/* From dimension views and cube view */
FROM time_calendar_view t,
product_primary_view p,
customer_shipments_view cu,
channel_primary_view ch,
units_cube_view f
/* Create attribute filters */
WHERE t.long_description in ('2005', '2006')
AND p.package = 'Laptop Value Pack'
AND cu.long_description LIKE '%Boston%'
AND ch.long_description = 'Internet'
/* Join dimension views to cube view */
AND t.dim_key = f.time
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND ch.dim_key = f.channel
ORDER BY time, customer;

この問合せでは、2つの暦年、Laptop Value Packの製品、ボストンの顧客、インターネット・チャネルが選択されます。

TIME   PRODUCT                        CUSTOMER              CHANNEL       SALES
------ ------------------------------ --------------------- -------- ----------
2005   Laptop carrying case           KOSH Entrpr Boston    Internet       5936
2005   56Kbps V.92 Type II Fax/Modem  KOSH Entrpr Boston    Internet      45285
2005   Internal 48X CD-ROM            KOSH Entrpr Boston    Internet       2828
2005   Standard Mouse                 KOSH Entrpr Boston    Internet        638
2005   Envoy Standard                 Warren Systems Boston Internet      19359
2005   Laptop carrying case           Warren Systems Boston Internet      13434
2005   Standard Mouse                 Warren Systems Boston Internet        130
2006   Standard Mouse                 KOSH Entrpr Boston    Internet        555
2006   Laptop carrying case           KOSH Entrpr Boston    Internet       6357
2006   56Kbps V.92 Type II Fax/Modem  KOSH Entrpr Boston    Internet      38042
2006   Internal 48X CD-ROM            KOSH Entrpr Boston    Internet       3343
2006   Envoy Standard                 Warren Systems Boston Internet      24198
2006   Laptop carrying case           Warren Systems Boston Internet      13153
2006   Standard Mouse                 Warren Systems Boston Internet         83

14 rows selected.

キューブによるデータの集計

キューブにはすべての集計データが含まれています。この章で説明しているとおり、キューブに対する問合せでは集計データの選択のみを行います。集計値の計算は行われません。

ファクト表に対する基本的な問合せを次に示します。

/* Querying a fact table */
SELECT t.calendar_year_dsc time,
SUM(f.sales) sales
FROM time_dim t, units_fact f
WHERE t.calendar_year_dsc IN ('2005', '2006')
AND t.month_id = f.month_id
GROUP BY t.calendar_year_dsc;

次の問合せは、フィルタを使用してキューブからまったく同じ結果をフェッチします。

/* Querying a cube */
SELECT t.long_description time, f.sales sales
FROM time_calendar_view t,
product_primary_view p,
customer_shipments_view cu,
channel_primary_view ch,
units_cube_view f
/* Apply filters to every dimension */
WHERE t.long_description IN ('2005', '2006')
AND p.level_name = 'TOTAL'
AND cu.level_name = 'TOTAL'
AND ch.level_name = 'TOTAL'
/* Join dimension views to cube view */
AND t.dim_key = f.TIME
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND ch.dim_key = f.channel
ORDER BY time;

どちらの問合せでも、次の結果が戻されます。

TIME       SALES
----- ----------
2005   136986572
2006   140138317

キューブに対する問合せでは、SUM演算子とGROUP BY句を使用した集計値の計算は行いません。キューブ内には集計値が存在するので、集計済のデータを再集計することになるためです。かわりに、この問合せではキューブから直接集計値を選択し、各ディメンションに適切なフィルタを適用することにより、必要な集計値を指定しています。

問合せ処理

最も効率的な問合せでは、OLAPエンジンでデータをフィルタして、問合せで必要な最小行数がSQLに戻されるようにします。

次の演算子は、WHERE句内で使用されるもので、処理用にOLAPエンジンに送られます。

- =

- !=

- >

- !>

- <

- !<

- IN

- NOT IN

- IS NULL

- LIKE

- NOT LIKE

OLAPエンジンは、ネストした文字関数（INSTR、LENGTH、NVL、LOWER、UPPER、LTRIM、RTRIM、TRIM、LPAD、RPAD、SUBSTR）も処理します。

WHERE句内のその他の演算子と関数、およびSELECT構文の他の部分で使用される演算子は、SQLで処理されます。

階層問合せの作成

ドリル操作は、ビジネス分析における重要な機能の1つです。ダッシュボードやアプリケーションでは、ユーザーはディメンション・キーをクリックすることによってデータの選択を変更できます。また、意思決定者がよく行うのは、特定のデータ値の要因を調べるためのドリルダウンや、特定のデータ値がデータ全体にどのように影響しているかを確認するためのドリルアップです。たとえば、ボストン地区の販売部長の場合、ボストン全体の売上から開始して、各販売担当者の貢献度を見るためにドリルダウンした後、ボストン地区のニュー・イングランド全体の売上に対する貢献度を調べるためにドリルアップすることがあります。

階層ビューにはPARENT列があり、これによってすべてのディメンション・キーの親が示されます。この列には、ディメンションのすべての階層情報が要約されています。つまり、すべてのキーの親がわかっていれば、その祖先、子、子孫も導き出すことができます。

レベルベース階層の場合は、LEVEL_NAME列がこの情報を補います。階層の同じ深さ（最上位レベルからベース・レベルまで）にあるすべてのキーを識別できるため便利です。値ベース階層の場合は、PARENT列が階層に関するすべての情報を提供します。

参照:
ドリル操作をサポートしているバインド変数の使用方法は、第6章「レポートとダッシュボードの開発」を参照してください。

子へのドリルダウン

階層ビューのPARENT列を使用して、特定の値に対する子のみを選択できます。次のWHERE句は、暦年2005の子を選択します。

/* Select children of calendar year 2005 */
WHERE  t.parent = 'CY2005'
AND p.dim_key = 'TOTAL'
AND cu.dim_key = 'TOTAL'
AND ch.dim_key = 'TOTAL'

この問合せは、年から四半期にドリルダウンします。Q1-05からQ4-05の4つの四半期が、Calendar階層の年CY2005の子です。

TIME          SALES
-------- ----------
Q1.05      31381338
Q2.05      37642741
Q3.05      32617249
Q4.05      35345244

親へのドリルアップ

各ディメンション・キーの親は階層ビューのPARENT列によって特定できます。全継承親子は、レベル・キーの各列で示されます。次のWHERE句は、LONG_DESCRIPTION属性に基づいて特定のTimeキーの親を選択します。

/* Select the parent of a Time key*/
WHERE t.dim_key =
(SELECT DISTINCT parent
FROM time_calendar_view
WHERE long_description='JAN-05')
AND p.dim_key= 'TOTAL'
AND cu.dim_key = 'TOTAL'
AND ch.dim_key = 'TOTAL'

この問合せは、月から四半期にドリルアップします。月JAN-05の親は、Calendar階層の四半期Q1-05です。

TIME          SALES
-------- ----------
Q1.05      31381338

子孫へのドリルダウン

次のWHERE句は、LEVEL_NAMEがMONTH、CALENDAR_YEARがCY2005の行を選択することによって、暦年2005の子孫を選択します。

/* Select Time level and ancestor */
WHERE t.level_name = 'MONTH'
AND t.calendar_year = 'CY2005'
AND p.dim_key = 'TOTAL'
AND cu.dim_key = 'TOTAL'
AND ch.dim_key = 'TOTAL'

この問合せは、2つのレベル（年から四半期、四半期から月）をドリルダウンします。Jan-05からDec-05までの12の月が、Calendar階層の年2005の子孫です。

TIME          SALES
-------- ----------
JAN-05     12093518
FEB-05     10103162
MAR-05      9184658
APR-05      9185964
MAY-05     11640216
JUN-05     16816561
JUL-05     11110903
AUG-05      9475807
SEP-05     12030538
OCT-05     11135032
NOV-05     11067754
DEC-05     13142459

祖先へのドリルアップ

「階層ビューの内容の表示」で説明したとおり、階層ビューでは各ディメンション・キーの祖先、子孫を含む全親子関係が示されます。次のWHERE句は、CALENDAR_YEARレベル・キー列を使用してMONTHディメンション・キーの祖先を特定します。

/* Select the ancestor of a Time key based on its Long Description attribute */
WHERE t.dim_key =
(SELECT calendar_year
FROM time_calendar_view
WHERE long_description = 'JAN-05')
AND p.dim_key = 'TOTAL'
AND cu.dim_key = 'TOTAL'
AND ch.dim_key = 'TOTAL'

この問合せは、2つのレベル（月から四半期、四半期から年）をドリルアップします。月JAN-05の祖先は、Calendar階層の年2005です。

TIME          SALES
-------- ----------
2005      136986572

問合せでの計算の使用

DBAは、すべてのアプリケーションで利用できる計算済メジャーをAnalytic Workspace Managerで作成できます。これによりアプリケーション開発が簡素化されるのに加えて、同じ計算に対してすべてのアプリケーションで同じ名前を使用できるようになります。

一方、ユーザー独自の計算を含む問合せの作成が必要になることもあります。この場合は、内部問合せを使用してキューブから集計データを選択してから、外部問合せの計算を実行します。データを選択するキューブではどの集計演算子が使用されていてもかまいません。また、問合せ内ではすべての関数または演算子を使用できます。キューブの適切なレベルから計算用のデータを選択すること、およびキューブと問合せにおける演算子の組合せにより必要な計算が作成されるようにすることの2点についてのみ注意してください。

例4-4は、「2005会計年度の第3四半期における政府系顧客に対するSentinel Standardコンピュータの平均売上」を求める問合せです。UNITS_CUBEはすべてのディメンションで合計されており、FY2005.Q3が7月、8月、9月の合計となります。内部問合せでこれらの月のデータを抽出し、外部問合せでMIN、MAX、AVGの3つの演算子とGROUP BY句を使用して平均を求めます。

例4-4 顧客全体の平均売上の計算

SELECT customer, ROUND(MIN(sales)) minimum, ROUND(MAX(sales)) maximum,
ROUND(AVG(sales)) average
FROM
(SELECT cu.long_description customer,
f.sales sales
FROM time_fiscal_view t,
product_primary_view p,
customer_segment_view cu,
channel_primary_view ch,
units_cube_view f
WHERE t.parent = 'FY2005.Q3'
AND p.dim_key = 'SENT STD'
AND cu.parent = 'GOV'
AND ch.level_name = 'TOTAL'
AND t.dim_key = f.time
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND ch.dim_key = f.channel
)
GROUP BY customer
ORDER BY customer;

内部問合せにより、次のデータがキューブから抽出されます。

CUSTOMER                                 TIME          SALES
---------------------------------------- -------- ----------
Dept. of Labor                           JAN-05      1553.26
Dept. of Labor                           MAR-05       1555.6
Ministry of Intl Trade                   JAN-05      1553.26
Ministry of Intl Trade                   FEB-05      1554.56
Ministry of Intl Trade                   MAR-05       1555.6
Royal Air Force                          JAN-05      1553.26
Royal Air Force                          FEB-05      6218.23
UK Environmental Department              JAN-05      4659.78
UK Environmental Department              FEB-05      3109.12

外部問合せによって計算された各顧客の売上の最大値、最小値および平均値は次のとおりです。

CUSTOMER                          MINIMUM    MAXIMUM    AVERAGE
------------------------------ ---------- ---------- ----------
Dept. of Labor                       1553       1556       1554
Ministry of Intl Trade               1553       1556       1554
Royal Air Force                      1553       6218       3886
UK Environmental Department          3109       4660       3884

集計での属性の使用

OLAPキューブは、階層ビューによって示される親子関係を使用して、階層内のデータを集計します。OLAPエンジンによるディメンション属性値の集計計算は行われません。

しかし、製品を色またはサイズで集計したり、顧客を年齢、郵便番号、人口密度などで集計したいという場合もあります。このような場合は、キューブを問い合せるときにGROUP BY句を使用できます。この問合せでは、キューブからデータを抽出してから、SQLを使用して属性値別に集計します。

キューブではすべてのディメンションに対して同じ集計演算子を使用する必要があります。また、問合せのSELECT構文内の集計演算子は、キューブの集計演算子と一致する必要があります。次の演算子を使用するキューブの問合せで、GROUP BY句を使用できます。

- FIRST（最初のNA以外の値）

- LAST（最後のNA以外の値）

- MAX（最大）

- MIN（最小）

- SUM（合計）

属性によるメジャーの集計

例4-5は、Packageという名前の属性に基づき集計する問合せです。次の結果が戻されます。

TIME   PACKAGE                 SALES
------ ------------------ ----------
2005   All                1809157.64
2005   Multimedia         18083256.3
2005   Executive            19836977
2005   Laptop Value Pack  9547494.81

Unitsキューブはすべてのディメンションに対してSUM演算子を使用しており、この問合せではSUM演算子を使用してSalesに対する集計を行います。Package属性はProductディメンションのItemレベルにのみ適用されるため、問合せではProductのItemレベルを選択しています。また、PackageについてNULLを除外しているので、パッケージの値を持つ製品のみが計算に含まれます。GROUP BY句によって、総売上が時間およびパッケージ別で集計されます。

例4-5 属性による集計

SELECT t.long_description time,
p.package package,
SUM(f.sales) sales
FROM time_calendar_view t,
product_primary_view p,
customer_shipments_view cu,
channel_primary_view ch,
units_cube_view f
/* Select Product by level and attribute */
WHERE p.level_name = 'ITEM'
AND p.package IS NOT NULL
AND t.long_description = '2005'
AND cu.level_name = 'TOTAL'
AND ch.level_name = 'TOTAL'
/* Join dimensions and cube */
AND t.dim_key = f.time
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND ch.dim_key = f.channel
GROUP BY t.long_description, p.package;

属性による計算済メジャーの集計

「属性によるメジャーの集計」で説明した方法を使用する前に、その計算自体に意味があるかどうか確認してください。たとえば、一般的な計算である変化率は、計算済メジャーとしてキューブ内に定義されている場合があります。変化率を合計すると予想外の結果になることがありますが、これは、変化率の計算（(a-b)/b）が加算的ではないためです。

次の行を持つデータについて考えてみます。全体に対する正しい変化率は.33ですが、1行目と2行目の変化率を合計すると.75になります。

行

売上

前期間の売上

変化率

1

15

10

.50

2

25

20

.25

合計

40

30

.33

例4-6は、Package属性に基づいて集計し、前期間からの変化率を計算する問合せです。内部問合せで総売上と前期間の売上を属性別に集計し、外部問合せではその結果を使用して変化率を計算します。問合せの結果は次のようになります。PCT_CHG_PPに正しい結果が表示されます。

TIME   PACKAGE                 SALES PRIOR_PERIOD PCT_CHG_PP
------ ------------------ ---------- ------------ ----------
2005   All                1809157.64   1853928.06 -.02414895
2006   All                1720399.03   1809157.64 -.04906074
2005   Executive            19836977   20603879.8 -.03722128
2006   Executive          19580638.4     19836977 -.01292226
2005   Laptop Value Pack  9547494.81   10047298.6 -.04974509
2006   Laptop Value Pack  9091450.58   9547494.81 -.04776585
2005   Multimedia         18083256.3   19607675.5 -.07774604
2006   Multimedia         18328678.7   18083256.3 .013571806

8 rows selected.

例4-6 属性による問合せ（計算済メジャーを使用）

/* Calculate Percent Change */
SELECT TIME, package, sales, prior_period,
((sales - prior_period) / prior_period) pct_chg_pp
FROM
/* Fetch data from the cube and aggregate over Package */
(SELECT t.long_description time,
p.package package,
SUM(f.sales) sales,
SUM(f.sales_pp) prior_period
FROM time_calendar_view t,
product_primary_view p,
customer_shipments_view cu,
channel_primary_view ch,
units_cube_view f
/* Create filters */
WHERE p.level_name = 'ITEM'
AND p.package IS NOT NULL
AND t.long_description IN ('2005', '2006')
AND cu.level_name = 'TOTAL'
AND ch.level_name = 'TOTAL'
/* Join dimension views to cube view */
AND t.dim_key = f.time
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND ch.dim_key = f.channel
GROUP BY t.long_description, p.package
ORDER BY p.package);

実行計画の表示

キューブやディメンションに対する問合せの実行計画は、リレーショナル表に対する問合せの実行計画と同様に作成および表示できます。

SQLコマンドのEXPLAIN PLANは、実行計画の内容を表示する表を作成します。この表のデフォルト名はPLAN_TABLEです。

実行計画の生成

次のコマンドを実行すると、キューブに対する基本的な問合せの実行計画が作成されます。

EXPLAIN PLAN FOR
SELECT t.long_description time,
p.long_description product,
cu.long_description customer,
ch.long_description channel,
f.sales sales
FROM time_calendar_view t,
product_primary_view p,
customer_shipments_view cu,
channel_primary_view ch,
units_cube_view f
WHERE t.level_name = 'CALENDAR_YEAR'
AND p.level_name = 'TOTAL'
AND cu.level_name = 'TOTAL'
AND ch.level_name = 'TOTAL'
AND t.dim_key = f.TIME
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND ch.dim_key = f.channel
ORDER BY t.end_date;

例4-7は、この実行計画から選択された列です。CUBE SCAN操作が実行されます。この計画のオプションはPARTIAL OUTERです（「実行計画の種類」を参照）。

例4-7 PLAN_TABLEから選択された列

SQL> SELECT operation, options, object_name FROM plan_table;

OPERATION            OPTIONS              OBJECT_NAME
-------------------- -------------------- ---------------
SELECT STATEMENT
SORT                 ORDER BY
JOINED CUBE SCAN     PARTIAL OUTER
CUBE ACCESS                               UNITS_CUBE
CUBE ACCESS                               CHANNEL
CUBE ACCESS                               CUSTOMER
CUBE ACCESS                               PRODUCT
CUBE ACCESS                               TIME

8 rows selected.

PL/SQLパッケージDBMS_XPLANのDISPLAYテーブル・ファンクションを使用すると、実行計画の情報を例4-8のように書式を整えて表示できます。

例4-8 DBMS_XPLANを使用して書式を整えた実行計画

SQL> SELECT plan_table_output FROM TABLE(dbms_xplan.display());

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------
Plan hash value: 1667678335

----------------------------------------------------------------------------------------------
| Id  | Operation                       | Name       | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                |            |     1 |   100 |   104   (3)| 00:00:02 |
|   1 |  SORT ORDER BY                  |            |     1 |   100 |   104   (3)| 00:00:02 |
|   2 |   JOINED CUBE SCAN PARTIAL OUTER|            |       |       |            |          |
|   3 |    CUBE ACCESS                  | UNITS_CUBE |       |       |            |          |
|   4 |    CUBE ACCESS                  | CHANNEL    |       |       |            |          |
|   5 |    CUBE ACCESS                  | CUSTOMER   |       |       |            |          |
|   6 |    CUBE ACCESS                  | PRODUCT    |       |       |            |          |
|*  7 |    CUBE ACCESS                  | TIME       |     1 |   100 |   103   (2)| 00:00:02 |
----------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

7 - filter(SYS_OP_ATG(VALUE(KOKBF$),12,13,2)='CALENDAR_YEAR' AND
SYS_OP_ATG(VALUE(KOKBF$),43,44,2)='TOTAL' AND
SYS_OP_ATG(VALUE(KOKBF$),33,34,2)='TOTAL' AND
SYS_OP_ATG(VALUE(KOKBF$),23,24,2)='TOTAL')

22 rows selected.

実行計画の種類

表4-1に、キューブの実行計画の種類を示します。

表4-1 キューブおよびディメンションの実行計画の説明

操作

オプション

説明

CUBE SCAN

--

キューブへのアクセスすべてに内部結合を使用する。

CUBE SCAN

PARTIAL OUTER

少なくとも1つのディメンションに対して外部結合を使用し、その他のディメンションについては内部結合を使用する。

CUBE SCAN

OUTER

キューブへのアクセスすべてに外部結合を使用する。

データ・ディクショナリの問合せ

汎用アプリケーション（次元オブジェクトの名前が不明なアプリケーション）を開発している場合、データ・ディクショナリからこの情報を取得してアプリケーションで利用できます。

データベースのデータ・ディクショナリの静的ビューには、次元オブジェクトに関する情報を提供するものがあります。OLAPメタデータはすべてデータ・ディクショナリに格納されています。一部のデータ・ディクショナリ・ビューについては、この章の前半で紹介しています。

表4-2に、ALLビューの簡単な説明を示します。対応するDBAおよびUSERビューが存在します。

表4-2 OLAPの静的データ・ディクショナリ・ビュー

ビュー

説明

ALL_CUBE_ATTR_VISIBILITY

キューブのディメンションの属性が表示可能かどうかを示す。

ALL_CUBE_ATTRIBUTES

キューブのディメンションの属性を示す。

ALL_CUBE_BUILD_PROCESSES

キューブの作成プロセスとメンテナンス・スクリプトを示す。

ALL_CUBE_CALCULATED_MEMBERS

キューブのディメンションの計算済メンバー（キー）を示す。

ALL_CUBE_DIM_LEVELS

キューブのディメンション・レベルを示す。

ALL_CUBE_DIM_MODELS

OLAPのディメンションのモデルを示す。

ALL_CUBE_DIM_VIEW_COLUMNS

キューブのディメンションのシステム生成リレーショナル・ビューの列を示す。

ALL_CUBE_DIM_VIEWS

OLAPディメンションのシステム生成リレーショナル・ビューを示す。

ALL_CUBE_DIMENSIONALITY

OLAPキューブのディメンションの順序を示す。

ALL_CUBE_DIMENSIONS

キューブのディメンションを示す。

ALL_CUBE_HIER_LEVELS

キューブのディメンションの階層レベルを示す。

ALL_CUBE_HIER_VIEW_COLUMNS

キューブのディメンションのリレーショナル階層ビューの列を示す。

ALL_CUBE_HIER_VIEWS

キューブのディメンションの階層を示す。

ALL_CUBE_HIERARCHIES

OLAPディメンション階層を示す。

ALL_CUBE_MEASURES

OLAPキューブのメジャーを示す。

ALL_CUBE_VIEW_COLUMNS

OLAPキューブのリレーショナル・ビューの列を示す。

ALL_CUBE_VIEWS

OLAPキューブのシステム生成リレーショナル・ビューを示す。

ALL_CUBES

OLAPキューブを示す。

ALL_MEASURE_FOLDER_CONTENTS

OLAPメジャー・フォルダの内容を示す。

ALL_MEASURE_FOLDERS

OLAPのメジャー・フォルダを示す。

参照:
データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

5 分析コンテンツによるデータベースの拡張

Oracle OLAPには、情報量の豊富なコンテンツを利用してデータベースを拡張できる多数の分析関数が用意されています。この章では、Analytic Workspace Managerでテンプレートや非定型の計算を使用して計算済メジャーを作成する方法について説明します。

この章では、次の項目について説明します。

- 計算済メジャーとは

- 計算を定義するための関数

- 計算済メジャーの作成

- 計算テンプレートの使用

- ユーザー定義の式の作成

- OLAP DMLを使用した計算済メジャーの作成

計算済メジャーとは

計算済メジャーは、1つ以上のメジャーに格納されたデータを基にして実行時に計算される値を戻します。リレーショナル・ビューと同様に、計算済メジャーには、他のオブジェクトに格納されているデータに対する問合せが格納されます。計算済メジャーにはデータは格納されないため、計算済メジャーを多数作成してもデータベースのサイズが大きくなることはありません。計算済メジャーは、別の計算済メジャーを定義する際のベースとして使用できるので、Analytic Workspace Managerでテンプレートを基にして作成できる計算の種類が豊富になります。

計算済メジャーを作成すると、ただちにキューブ・ビューの列として表示されます。計算済メジャーにはデータが格納されていないため、これらのメジャーは作成処理とは関連していません。計算済メジャーはいつでも作成可能であり、SQLアプリケーションでの問合せ用としてすぐに利用できます。

計算を定義するための関数

計算済メジャーを定義するための関数のライブラリには、次の基本的な分類があります。

- 算術演算子: 2つのメジャーの値に対して計算を実行します。

- 分析関数: 1つのメジャーまたは列に格納されている、順序付けられた一連の値または特定の範囲の値に対して計算を実行します。

- 単一行関数: 1つの行に格納された値に対して計算を実行します。

算術演算子

2つのメジャーに対して次の算術演算子を実行できます。キューブ内での計算は、ディメンション階層のすべてのレベルでセル単位に実行されます。

- 加算: 2つのメジャーの値を足します。

- 減算: 一方のメジャーの値からもう一方のメジャーの値を引きます。

- 乗算: 2つのメジャーの値を掛けます。

- 除算または比率: 一方の値をもう一方の値で割ります。

- 相違率: 2つのメジャーの値の相違率を計算します。

算術演算子は、Analytic Workspace Managerではテンプレートとして使用できます（「計算テンプレートの使用」を参照）。

分析関数

分析関数は、ビジネス・インテリジェンスなどのアプリケーションでの問合せをさらに有益なものにする最も効果的な計算です。ランク関数、シェア関数、時系列関数など各種の単一行関数が用意されています。分析関数を使用することによって、分析担当者や意思決定者は比較を行ったり傾向を把握したりできます。

Oracle OLAPの分析関数では、ディメンションに関連付けられた、レベルや親子関係の情報を活用します。さらに、時間ディメンションには、時系列の手法（ラグ、リード、移動、累積などの計算）に利用できる情報が含まれています。このような情報はディメンションに格納されているため、計算済メジャーを作成するときにこれらの関係を指定する必要はありません。

分析関数は、Analytic Workspace Managerではテンプレートとして使用できます。詳細は、「計算テンプレートの使用」を参照してください。

単一行関数

Oracle OLAPでは、ほとんどのSQL単一行関数をサポートしています。たとえば次のようなものがあります。

- 数値関数: ABS、CEIL、FLOOR、POWER、ROUND、TRUNCなど

- 文字関数: CONCAT、LPAD、RPAD、LTRIM、RTRIM、REPLACE、SUBSTRなど

- 日時関数: CURRENT_DAY、MONTHS_BETWEEN、NEXT_DAY、SYSTIMESTAMPなど

- 比較関数: GREATEST、LEAST

- 変換関数: TO_CHAR、TO_DATE、TO_NUMBER、TO_TIMESTAMPなど

これらの関数を使用すると、メジャー内のデータ値を（一般に、より複雑な計算の一部として）操作できます。これらの関数はテンプレートとしては使用できませんが、非定型の計算で使用できます（「ユーザー定義の式の作成」を参照）。

計算済メジャーの作成

Analytic Workspace Managerには、計算済メジャーの作成時に利用できる使いやすいテンプレートが用意されています。計算済メジャーはソース・メジャーと同じキューブ内に作成できますが、別のキューブ内に作成することもできます。

計算済メジャーは、キューブ・ビュー（UNITS_CUBE_VIEWなど）の追加の列として、問合せ時に利用できます。キューブ・マテリアライズド・ビュー（CB$UNITS_CUBEなど）では利用できません。

計算済メジャー・ジェネレータは、ランク、シェア、前期間と将来期間、現在までの期間、平行期間、移動集計および累積集計など、キューブの1つ以上のメジャーに対して標準の計算済メジャーを素早く生成します。このジェネレータでは、名前と説明の生成にいくつかのネーミング規則を使用しています。これらのネーミング規則は「ネーミング・ルール」タブでカスタマイズできます。

また、OLAP式の構文やOLAP DMLを使用して、個々の計算済メジャー（ユーザー定義の式など）を作成することもできます。

複数の計算済メジャーの作成手順:

1. ナビゲーション・ツリーでキューブを右クリックし、「計算メジャーの生成」を選択します。

2. 「計算」タブで、計算済メジャーのベースにするメジャーを選択します。

3. 選択したメジャーについて、「計算詳細」をスクロール・ダウンし、作成する計算済メジャーの各タイプを選択します。必要に応じてテンプレートを変更し、計算を編集します。

4. 時系列の計算に使用するTimeディメンションを選択します。

5. 計算済メジャーのリストを確認します。生成された名前は「ネーミング・ルール」タブで変更できます。

6. 「計算の生成」をクリックして計算済メジャーを作成します。

7. 同じ基本タイプで様々な計算を生成する場合は、この手順を繰り返します。たとえば、メジャーが同じでも対象のディメンションが異なるシェア計算を別に生成できます。ネーミング規則を変更して、新しい一意の名前を生成します。

図5-1に、「計算メジャーの生成」ダイアログ・ボックスを示します。

図5-1 複数の計算済メジャーの生成

「図5-1 複数の計算済メジャーの生成」の説明

単独の計算済メジャーの作成手順:

1. ナビゲーション・ツリーでキューブ・フォルダを開きます。

2. 「計算済メジャー」を右クリックし、ショートカット・メニューから「計算済メジャーの作成」を選択します。
「計算済メジャーの作成」ダイアログ・ボックスが表示されます。

3. わかりやすい名前を入力します。

4. 計算方法を選択します。
算術関数または分析関数を選択すると、計算テンプレートが動的に変わります。

5. 計算テンプレートを編集します。

6. 「作成」をクリックします。
計算済メジャーがナビゲーション・ツリーの「計算済メジャー」フォルダ内に表示されます。

図5-2に、「計算済メジャーの作成」ダイアログ・ボックスを示します。

図5-2 計算済メジャーの作成

「図5-2 計算済メジャーの作成」の説明

テンプレートの変更

選択した計算はテンプレートとして表示されます。テンプレートは計算の詳細を示すもので、変数部分を変更することによりカスタマイズできます。

図5-3は、前の期間を計算するためのテンプレートです。リンクをクリックすると、選択リストが表示されます。

図5-3 計算の変数部分の変更

「図5-3 計算の変数部分の変更」の説明

1つの計算にメジャーのすべての値を含めることができます。計算の種類によっては、選択した値のみが含まれるようにメジャーにフィルタを適用できます。1つ以上のディメンションを単独のディメンション・メンバーに制限するには、メジャーの横にある省略記号（...）をクリックします。図5-4のような「メジャーの修飾」ダイアログ・ボックスが表示されます。

図5-4 単独のディメンション・メンバーに制限

「図5-4 単独のディメンション・メンバーに制限」の説明

期間の範囲の選択

大部分の計算は、階層の同じレベルの期間に対して実行されます。一部の種類の計算では、同じ計算で使用される期間の範囲を指定できます。たとえば、キューブに格納された1番目の月から始まる累計ではなく、各会計年度の月の累計を求めたい場合などです。

計算対象の期間の範囲を指定する場合、次の基準を使用できます。

- レベル: 同じレベルのすべての期間を計算します。たとえば、キューブ内のすべての月を1つの計算に含め、すべての四半期を別の計算に含めることができます。

- 親: 同じ親を持つすべての期間を計算します。たとえば、Q1-07に含まれるすべての月を1つの計算に含め、Q2-07に含まれるすべての月を別の計算に含めることができます。

- レベルの祖先: 特定のレベルの同じ祖先を持つすべての期間を計算します。たとえば、特定のレベルがYear-Quarter-Month階層のYearであるとき、Q1-06からQ4-06までを1つの計算に含め、Q1-07からQ4-07までを別の計算に含め、Jan-06からDec-06までをさらに別の計算に含めることができます。階層内の上位のレベルについては計算されません。

- グレゴリオ暦の期間: 選択した階層にグレゴリオ暦の期間（年、四半期、月、週）を適用します。この方法は、非標準的なカレンダ階層が使用されているデータを分析するときに有効です。たとえば、7月1日から始まり6月30日に終わる会計年度の階層でグレゴリオ暦を使用すると、ある会計年度の下半期とその次の会計年度の上半期が一緒に計算されます。指定したグレゴリオ暦期間よりも上位にある階層内の期間については計算されません。

計算テンプレートの使用

Analytic Workspace Managerには、ビジネス・インテリジェンス・アプリケーションで一般的に必要とされるあらゆる計算用のテンプレートが用意されています。次の各項では、Analytic Workspace Managerで計算テンプレートとして利用できる計算の種類について説明します。

算術計算

基本的な数学の演算子を使用して、2つのメジャーに関してセル単位の計算を実行できます（「算術演算子」を参照）。

算術計算の例

次のテンプレートは、相違率を使用してGlobal Priceキューブの計算済メジャーを定義します。

Percent difference between measure UNIT_PRICE and measure UNIT_COST.

この計算済メジャーに対して問合せを発行すると、次のような結果が戻されます。PCT_CHG列に、PRICEとCOSTの変化率が示されています。この値はPRICE-COST/COSTの計算で求められます。

PRODUCT                   PRICE       COST   PCT_DIFF
-------------------- ---------- ---------- ----------
Envoy Ambassador           2892       2664        .09
Envoy Executive            2803       2644        .06
Envoy Standard             1662       1737       -.04
Sentinel Financial         1755       1658        .06
Sentinel Multimedia        1770       1813       -.02
Sentinel Standard          1552       1410         .1

指数

指数は、単独のメジャーに対して計算される数学的演算の1つです。指数計算では、メジャーの値と、基準となる数値との差の割合を求めます。

指数計算では計算テンプレートを使用しません。そのかわり、キューブの各ディメンションのディメンション・メンバーのリストから、指数として使用するものを選択できます（図5-5を参照）。

図5-5 Productの指数の計算

「図5-5 Productの指数の計算」の説明

指数の例

この例では、Productディメンションに関して指数を作成し、Desktop PCsが指数として使用されています。

PRODUCT                   SALES PROD_INDEX
-------------------- ---------- ----------
Desktop PCs            76682955        100
Portable PCs           18072328         24
CD/DVD                 17302122         23
Modems/Fax              5565552          7
Memory                  5347292          7
Monitors                3926632          5

前期間と将来期間

Oracle OLAPでは、前の期間または将来の期間についての計算ができます。

- 前回の期間: 前の期間のメジャーの値を戻します。

- 前期間との相違: 現在の期間の値と前の期間の値の差を計算します。

- 前期間との相違率: 現在の期間の値と前の期間の値との相違率を計算します。

- 将来期間: 後の期間のメジャーの値を戻します。

- 将来期間との相違: 現在の期間の値と後の期間の値の差を計算します。

- 将来期間との相違率: 現在の期間の値と後の期間の値との相違率を計算します。

前の期間または将来期間の計算を作成するときは、メジャー、時間ディメンション、階層、および現在の期間からいくつ前（または後）の期間かを選択します。

前の期間の例

次のテンプレートは、前回の期間を使用して計算済メジャーを定義します。

Prior period for measure SALES in TIME dimension and TIME.CALENDAR hierarchy 1 period ago.

この計算済メジャーに対する問合せの結果は次のとおりです。PRIOR_PERIOD列に、Calendar階層の同じレベルで1つ前の期間におけるSalesの値が示されます。

TIME     TIME_LEVEL                SALES PRIOR_PERIOD
-------- -------------------- ---------- ------------
2005     CALENDAR_YEAR         136986572    144290686
2006     CALENDAR_YEAR         140138317    136986572
Q1.05    CALENDAR_QUARTER       31381338     41988687
Q2.05    CALENDAR_QUARTER       37642741     31381338
Q3.05    CALENDAR_QUARTER       32617249     37642741
Q4.05    CALENDAR_QUARTER       35345244     32617249
Q1.06    CALENDAR_QUARTER       36154815     35345244
Q2.06    CALENDAR_QUARTER       36815657     36154815
Q3.06    CALENDAR_QUARTER       32318935     36815657
Q4.06    CALENDAR_QUARTER       34848911     32318935

現在までの期間

現在までの期間を求める関数は、現在の期間に至る一連の期間（親が同じもの）に対して計算を行います。現在までの期間を計算する関数には次のものがあります。

- 現在までの期間: 現在の期間までの値を計算します。

- 前期間までの期間: 前の期間までのデータ値を計算します。

- 前期間までの期間との相違: 現在の期間までのデータ値と前期間までのデータ値の差を計算します。

- 前期間までの期間との相違率: 現在の期間までのデータ値と前期間までのデータ値の相違率を計算します。

現在までの期間の計算を作成するときは、次の集計方法のいずれかを選択します。

- 合計

- 平均

- 最大

- 最小

その他に、メジャー、時間ディメンション、階層も選択します。

現在までの期間の例

次のテンプレートは、現在までの期間を使用して計算済メジャーを定義します。

Gregorian Year to date for SALES in the TIME dimension and TIME.CALENDAR hierarchy. Aggregate using MINIMUM from the beginning of the period.

この計算済メジャーに対する問合せの結果は次のとおりです。MIN_TO_DATE列に、該当のレベルおよび年の中で最小のSALESの値が表示されます。

TIME     TIME_LEVEL                SALES MIN_TO_DATE
-------- -------------------- ---------- -----------
Q1.06    CALENDAR_QUARTER       36154815    36154815
Q2.06    CALENDAR_QUARTER       36815657    36154815
Q3.06    CALENDAR_QUARTER       32318935    32318935
Q4.06    CALENDAR_QUARTER       34848911    32318935
JAN-06   MONTH                  13119235    13119235
FEB-06   MONTH                  11441738    11441738
MAR-06   MONTH                  11593842    11441738
APR-06   MONTH                  11356940    11356940
MAY-06   MONTH                  13820218    11356940
JUN-06   MONTH                  11638499    11356940
JUL-06   MONTH                   9417316     9417316
AUG-06   MONTH                  11596052     9417316
SEP-06   MONTH                  11305567     9417316
OCT-06   MONTH                  11780401     9417316
NOV-06   MONTH                  10653184     9417316
DEC-06   MONTH                  12415325     9417316

シェア

シェアを使用すると、現在のディメンション・メンバーのメジャーの値を、同じディメンションの関連メンバーの値と比較した割合を計算できます。関連メンバーとして次のいずれかを選択できます。

- 階層の最上位: 合計に対する各メンバーの比率を計算します。

- メンバーの親: それぞれの親に対する各メンバーの比率を計算します。

- レベルのメンバーの祖先: それぞれの祖先（階層内の特定の上位レベルのメンバー）に対する各メンバーの比率を計算します。

シェア計算を作成するときは、メジャー、ディメンションおよび階層を選択します。また、結果に100を掛けることにより、比率をパーセンテージで表すようにすることもできます。

シェアの例

次のテンプレートは、SHAREを使用して計算済メジャーを定義します。

Share of measure SALES in PRODUCT.PRIMARY hierarchy of the PRODUCT dimension as a ratio of top of hierarchy.

この計算済メジャーに対する問合せの結果は次のとおりです。TOTAL_SHARE列に、選択した製品の合計に対する比率がパーセント単位で表示されます。

PRODUCT              PROD_LEVEL           SALES TOTAL_SHARE
-------------------- --------------- ---------- -----------
Total Product        TOTAL            144290686         100
Hardware             CLASS            130145388          90
Desktop PCs          FAMILY            78770152          55
Portable PCs         FAMILY            19066575          13
CD/DVD               FAMILY            16559860          11
Software/Other       CLASS             14145298          10
Accessories          FAMILY             6475353           4
Operating Systems    FAMILY             5738775           4
Memory               FAMILY             5430466           4
Modems/Fax           FAMILY             5844185           4
Monitors             FAMILY             4474150           3
Documentation        FAMILY             1931170           1

ランク

ランクは、選択したメジャーの値に基づいてディメンションの値を順位付けします。ランク計算を定義するときは、ディメンション、階層およびメジャーを選択します。

同一の値を処理する方法は、次の中から選択できます。

- ランク: 同一の値に同じ順位を割り当てます。そのため、メンバーの数よりランクの数の方が少なくなることがあります。たとえば、5つのディメンション・メンバーに対して、1、2、3、3、4という順位が戻されます。

- 稠密ランク: 同一の値に同じ最小順位を割り当てます。たとえば、5つのディメンション・メンバーに対して、1、2、3、3、5という順位が戻されます。

- 平均ランク: 同一の値に同じ平均順位を割り当てます。たとえば、5つのディメンション・メンバーに対して、1、2、3.5、3.5、5という順位が戻されます。

ディメンション・メンバーを順位付けするグループを選択することもできます。

- メンバーのレベル: 同じレベルのメンバーを順位付けします。

- メンバーの親: 同じ親を持つメンバーを順位付けします。

- レベルのメンバーの祖先: 階層内の特定の上位レベルに同じ祖先を持つメンバーを順位付けします。

ランクの例

次のテンプレートは、ランクを使用して計算済メジャーを定義します。

Rank members of the PRODUCT dimension and PRODUCT.PRIMARY hierarchy based on measure SALES. Calculate rank using RANK method with member's parent in order lowest to highest. Rank NA (null) values nulls last.

この計算済メジャーに対する問合せの結果は、次のように製品がRANKで順位付けされた形で表示されます。

PRODUCT                   SALES       RANK
-------------------- ---------- ----------
Monitors                4474150          1
Memory                  5430466          2
Modems/Fax              5844185          3
CD/DVD                 16559860          4
Portable PCs           19066575          5
Desktop PCs            78770152          6

平行期間

平行期間とは、現在の期間とレベルは同じであるが、前の期間における親が異なる期間のことです。たとえば、四半期レベルおよび月レベルで、現在の売上を前年の売上と比較する場合に使用します。

Oracle OLAPでは、平行期間の計算に使用する関数として次のものがあります。

- 平行期間: 平行期間の値を計算します。

- 平行期間との相違: 現在の期間の値と平行期間の値の差を計算します。

- 平行期間との相違率: 現在の期間の値と平行期間の値の相違率を計算します。

平行期間を指定するときは、特定のレベルと、現在の期間からいくつ前の期間かを指定します。また、2つの期間が厳密に一致しない場合（たとえば、2月（28日間）と1月（31日間）の1日の売上を比較する場合など）の処理を決めることもできます。

その他に、メジャー、時間ディメンション、階層も選択します。

平行期間の例

次のテンプレートは、平行期間を使用して計算済メジャーを定義します。

Parallel period for SALES in the TIME dimension and TIME.CALENDAR hierarchy 1 TIME.CALENDAR.QUARTER ago based on position from beginning to ending of period.

この計算済メジャーに対する問合せの結果では、次のように2つの四半期の各月が表示されます。平行関係にある月は、前の四半期と位置が同じ月です。つまり、JUL-06の平行期間はAPR-06、AUG-06の平行期間はMAY-06、SEP-06の平行期間はJUN-06となります。

TIME     PARENT          SALES   LAST_QTR
-------- ---------- ---------- ----------
APR-06   CY2006.Q2    11356940   13119235
MAY-06   CY2006.Q2    13820218   11441738
JUN-06   CY2006.Q2    11638499   11593842
JUL-06   CY2006.Q3     9417316   11356940
AUG-06   CY2006.Q3    11596052   13820218
SEP-06   CY2006.Q3    11305567   11638499

移動計算

移動計算は、現在の期間の前後の期間に対して実行されます。Oracle OLAPでは、移動計算用に次の集計方法を使用できます。

- 移動平均: 特定の数の期間におけるメジャーの平均値を計算します。

- 移動最大: 特定の数の期間におけるメジャーの最大値を計算します。

- 移動最小: 特定の数の期間におけるメジャーの最小値を計算します。

- 移動合計: 特定の数の期間におけるメジャーの合計値を戻します。

メジャー、時間ディメンション、階層を選択します。また、範囲（「期間の範囲の選択」を参照）に加え、現在の期間の前後の期間をいくつ計算に含めるかを選択できます。

移動計算の例

次のテンプレートは、移動最小を使用して計算済メジャーを定義します。

Moving minimum of SALES in the TIME dimension and TIME.CALENDAR hierarchy. Include 1 preceding and 1 following members within level.

この計算済メジャーに対する問合せの結果には、暦年2004年の子孫の値が表示されます。それぞれの最小売上（MIN_SALES）の値は、現在の値とその直前および直後の値の中で最も小さい値です。この計算は、キューブ内のレベルのすべてのメンバーに対して実行されています。

TIME     TIME_LEVEL                SALES  MIN_SALES
-------- -------------------- ---------- ----------
Q1.04    CALENDAR_QUARTER       32977874   32977874
Q2.04    CALENDAR_QUARTER       35797921   32977874
Q3.04    CALENDAR_QUARTER       33526203   33526203
Q4.04    CALENDAR_QUARTER       41988687   31381338
JAN-04   MONTH                  11477898   10982016
FEB-04   MONTH                  10982016   10517960
MAR-04   MONTH                  10517960   10517960
APR-04   MONTH                  11032057   10517960
MAY-04   MONTH                  11432616   11032057
JUN-04   MONTH                  13333248   11432616
JUL-04   MONTH                  12070352   11108893
AUG-04   MONTH                  11108893   10346958
SEP-04   MONTH                  10346958   10346958
OCT-04   MONTH                  14358605   10346958
NOV-04   MONTH                  12757560   12757560
DEC-04   MONTH                  14872522   12093518

累積計算

累積計算では、1番目の期間から現在のメンバーまでを計算するか、または最後の期間から現在のメンバーにさかのぼって計算をします。Oracle OLAPでは、累積計算用に次の集計方法を使用できます。

- 累積平均: 対象の期間の累積平均を計算します。

- 累積最大: 対象の期間の最大値を計算します。

- 累積最小: 対象の期間の最小値を計算します。

- 累積合計: 対象の期間の累計を計算します。

メジャー、時間ディメンション、階層を選択します。また、範囲（「期間の範囲の選択」を参照）に加えて、1番目の期間から以降の期間に向かって計算するか、最後の期間からさかのぼって計算するかを選択できます。

累積計算の例

次のテンプレートは、累積最小を使用して計算済メジャーを定義します。

Cumulative minimum of SALES in the TIME dimension and TIME.CALENDAR hierarchy within ancestor at level TIME.CALENDAR_YEAR. Total from beginning to current member.

この計算済メジャーに対する問合せの結果には、暦年2004年の子孫の値が表示されます。Q1.04からQ4.04までの四半期の最小値、Jan-04からDec-04までの月の最小値が表示されます。

TIME     TIME_LEVEL                SALES  MIN_SALES
-------- -------------------- ---------- ----------
Q1.04    CALENDAR_QUARTER       32977874   32977874
Q2.04    CALENDAR_QUARTER       35797921   32977874
Q3.04    CALENDAR_QUARTER       33526203   32977874
Q4.04    CALENDAR_QUARTER       41988687   32977874
JAN-04   MONTH                  11477898   11477898
FEB-04   MONTH                  10982016   10982016
MAR-04   MONTH                  10517960   10517960
APR-04   MONTH                  11032057   10517960
MAY-04   MONTH                  11432616   10517960
JUN-04   MONTH                  13333248   10517960
JUL-04   MONTH                  12070352   10517960
AUG-04   MONTH                  11108893   10517960
SEP-04   MONTH                  10346958   10346958
OCT-04   MONTH                  14358605   10346958
NOV-04   MONTH                  12757560   10346958
DEC-04   MONTH                  14872522   10346958

ネストした計算

計算済メジャーを別の計算済メジャーのベースとして使用することにより、テンプレートで使用可能な各種関数を拡張できます。

たとえば、Analytic Workspace Managerの移動平均および前期間との相違のテンプレートを使用して、移動平均を求める計算済メジャーを作成してから、現在の移動平均と過去の移動平均の差を求めることができます。

ネストした計算の例

次のテンプレートは、UnitsについてUNITS_MOVING_AVGという名前の移動平均を作成します。

Moving average of UNITS in the TIME dimension and TIME.CALENDAR hierarchy. Include 1 preceding and 1 following members within level.

次のテンプレートは、UNITS_MOVING_AVGを基にして前期間との相違を作成します。

Difference from prior period for UNITS_MOVING_AVG in TIME dimension and TIME.CALENDAR hierarchy 1 period ago.

Unitsメジャーおよび2つの計算済メジャーに対する問合せの結果は次のとおりです。MOVING_AVG列に移動平均が表示され、DIFF列に現在の移動平均と前の期間の移動平均の差が表示されています。

TIME     TIME_LEVEL                UNITS MOVING_AVG       DIFF
-------- -------------------- ---------- ---------- ----------
JAN-06   MONTH                     47776      48520         66
FEB-06   MONTH                     47695      48940        419
MAR-06   MONTH                     51348      48683       -257
APR-06   MONTH                     47005      50387       1705
MAY-06   MONTH                     52809      48411      -1976
JUN-06   MONTH                     45419      48872        461
JUL-06   MONTH                     48388      47546      -1326
AUG-06   MONTH                     48830      47857        312
SEP-06   MONTH                     46354      47532       -326
OCT-06   MONTH                     47411      46869       -663
NOV-06   MONTH                     46842      49768       2899
DEC-06   MONTH                     55052      50947       1179
2006     CALENDAR_YEAR            584929     575324      -4032
Q1.06    CALENDAR_QUARTER         146819     145705       2093
Q2.06    CALENDAR_QUARTER         145233     145208       -497
Q3.06    CALENDAR_QUARTER         143572     146037        829
Q4.06    CALENDAR_QUARTER         149305     146439        402

ユーザー定義の式の作成

計算タイプの1つとして、ユーザー定義の式があります。通常は、OLAP式の構文（この章で説明した分析関数、算術演算子、単一行関数など）を使用して式を作成します。OLAP構文は、SQL構文を拡張したものです。SQLの分析関数や単一行関数を使用したことがある場合は、この構文の作成は難しくありません。

参照:
ユーザー定義のOLAP DML式については、「OLAP DMLを使用した計算済メジャーの作成」を参照してください。

OLAP式の構文の使用

OLAP式の構文で式を作成するときは、Analytic Workspace Managerを使用して行うのが最も簡単です。テンプレートを使用して同じような計算を作成し、その構文を切り取って貼り付け、新しい計算のベースにすることができます。

OLAP式の構文でのユーザー定義の式の作成手順:

1. 「計算済メジャーの作成」ダイアログ・ボックスを開きます。

2. 定義しようとしている式と最も近い計算タイプを選択します。

3. テンプレートを必要に応じて編集します。

4. 「計算」ボックスから計算を切り取って、テキスト・エディタに貼り付けます。

5. 定義する計算で2つ以上の関数を使用する場合は、前の手順を繰り返します。

6. テキスト・エディタで必要に応じて計算を編集します。1つの計算内で算術演算子、分析関数、単一行関数を組み合せて使用できます。

7. 「計算タイプ」リストから「OLAP式構文」を選択します。

8. テキスト・エディタから計算を切り取って、「計算」ボックスに貼り付けます。

9. 「作成」をクリックします。

参照:
OLAP式の構文の詳細は、Analytic Workspace Managerのヘルプを参照してください。

算術演算子を使用した式の構文例

次の乗算テンプレートは、販売単位と単位原価を使用して計算を生成します。

Multiply measure UNITS by measure UNIT_COST.

次のテンプレートは、乗算演算子（*）を使用して同じ計算を生成します。これは「計算」ボックスに表示されます。UNITSはUnitsキューブ内、UNIT_COSTはPriceキューブ内にあることに注意してください。

UNITS_CUBE.UNITS * PRICE_CUBE.UNIT_COST

この計算の構文は単純なため、テンプレートにはメジャーの修飾名を指定するだけです。

次の式は、販売数量に2%を加算する非定型の式です。

UNITS_CUBE.UNITS * 1.02

この計算済メジャーに対する問合せの結果は次のとおりです。

PRODUCT                   UNITS     TARGET
-------------------- ---------- ----------
Envoy Ambassador           2116       2158
Envoy Executive            2481       2531
Envoy Standard             3300       3366
Sentinel Financial        30513      31123
Sentinel Multimedia        7948       8107
Sentinel Standard          7302       7448

分析関数を使用した非定型の式の例

次の累積平均テンプレートは、販売数量の平均を求める計算を生成します。

Cumulative average of UNITS in the TIME dimension and TIME.CALENDAR hierarchy within level. Total from beginning to following member.

次のテンプレートは、AVG関数を使用して同じ計算を生成します。

AVG(UNITS_CUBE.UNITS) OVER HIERARCHY (TIME.CALENDAR BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING WITHIN LEVEL)

次の式は、現在の販売数量と累積平均との相違率を求める非定型の計算式です。AVG関数と、減算（-）、除算（/）、乗算（*）の各演算子が使用されています。

((UNITS_CUBE.UNITS - AVG(UNITS_CUBE.UNITS) OVER HIERARCHY (TIME.CALENDAR BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING WITHIN LEVEL)) / AVG(UNITS_CUBE.UNITS) OVER HIERARCHY (TIME.CALENDAR BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING WITHIN LEVEL)) * 100

この計算済メジャーに対する問合せの結果は次のとおりです。

TIME          UNITS    CUM_AVG   PCT_DIFF
-------- ---------- ---------- ----------
Q1.06        146819     107965         36
Q2.06        145233     109062         33
Q3.06        143572     110048         30
Q4.06        149305     111138         34

なお、この計算は次のテンプレートを使用して作成することもできます。

1. 累積平均テンプレート: UNITSの累積平均を計算する。

2. 相違率テンプレート: 現在のUNITSと累積平均との差をパーセントで求める。

式の構文の分析関数

表5-1は、OLAP式の構文によって非定型の計算を作成する際に使用できる分析関数の説明です。これらの関数の構文は、Analytic Workspace Managerのヘルプを参照してください。

表5-1 OLAP式の構文の分析関数

関数

説明

AVERAGE_RANK

式の値に基づいてディメンション・メンバーを順位付ける。この関数はディメンション・メンバーについて連続する数値を戻し、同一の値には同じ平均順位を割り当てる。

AVG

特定の期間に対して計算された、選択した値の平均を戻す。

COUNT

選択したディメンション・メンバーにより識別されるデータ値の数を計算する。

DENSE_RANK

式の値に基づいてディメンション・メンバーを順位付ける。この関数はディメンション・メンバーについて連続する数値を戻し、同一の値には同じ最小順位を割り当てる。

HIER_ANCESTOR

階層のすべてのメンバーまたは特定のメンバーに関して、階層の特定のレベルにある祖先を戻す。

HIER_CHILD_COUNT

階層のすべてのディメンション・メンバーの子、または特定のメンバーの子の数を戻す。

HIER_DEPTH

階層のすべてのメンバーまたは特定のメンバーのレベルの深さを表す数値を戻す（0が最上位レベル）。

HIER_LEVEL

階層のすべてのメンバーまたは特定のメンバーのレベルを戻す。

HIER_PARENT

階層のすべてのディメンション・メンバーまたは特定のメンバーの親を戻す。

HIER_TOP

階層のすべてのメンバーまたは特定のメンバーの最上位の祖先を戻す。

LAG

現在の期間より指定した数だけ前の期間における特定の式の値を戻す。

LAG_VARIANCE

現在の期間の値と前の期間の値の差を戻す。

LAG_VARIANCE_PERCENT

現在の期間の値と前の期間の値の相違率を戻す。

LEAD

現在の期間より指定した数だけ後の期間における特定の式の値を戻す。

LEAD_VARIANCE

現在の期間の値とそれより後の期間の値の差を戻す。

LEAD_VARIANCE_PERCENT

現在の期間の値と後の期間の値の相違率を戻す。

MAX

特定のディメンションに対して計算されたデータ値のある範囲における最大値を戻す。

MIN

特定のディメンションに対して計算されたデータ値のある範囲における最小値を戻す。

OLAP_DML_EXPRESSION

OLAP DML言語で式を実行する。

RANK

式の値に基づいてディメンション・メンバーを順位付ける。この関数はディメンション・メンバーについて連続する数値を戻し、同一の値には同じ順位を割り当てる。

ROW_NUMBER

式の値に基づいてディメンション・メンバーを順位付ける。この関数はディメンション・メンバーについて連続する数値を戻し、同一の値には一意の任意（常に一定とは限らない）の順位を割り当てる。

SHARE

現在のディメンション・メンバーのメジャーの値を、同じディメンションの関連するメンバーの値と比較した割合を計算する。

SUM

特定のディメンションに対して計算されたデータ値のある範囲の合計を戻す。

OLAP DMLを使用した計算済メジャーの作成

OLAP DMLでは、予測、モデル、割当てなどの高度なビジネス計算を利用できます。OLAP DMLは、アナリティック・ワークスペース用の内部データを定義したり操作するための言語です。主なデータ構造には、ディメンション、変数、計算式および値セットが含まれます。アナリティック・ワークスペース内の次元オブジェクトは、データベースの高レベルな次元オブジェクト（キューブ、キューブ・ディメンション、メジャー、属性、階層など）をサポートします。

データベースの次元オブジェクト（キューブ、レベル、階層など）は、OLAP DMLの一部のコマンドでサポートされています。OLAP DMLでは、これらのコマンドに加えて、その他のファンクションや演算子なども使用できます。

参照:
『Oracle OLAP DMLリファレンス』のキューブ対応のOLAP DML文に関する項目

OLAP DMLは、次元オブジェクトの作成と管理、および次元データの操作に特化して開発された成熟度の高い言語です。OLAP DMLでのプログラミングには高度なスキルを必要としますが、他の言語よりも優れた機能や柔軟性が提供されます。

OLAP DMLの計算タイプの選択

Analytic Workspace Managerは、OLAP DMLを使用したユーザー定義の式について、次の2つのタイプをサポートしています。

- OLAP DML式: OLAP DML式を計算します。この計算タイプは、既存のプログラム、組込みファンクション、または単独の式を実行する際に選択します。OLAP DML式は、計算式のEQ文としてアナリティック・ワークスペース内に格納されます。

- OLAP DMLファンクション: 「プログラム本体」フィールドに入力されたOLAP DMLプログラムを実行して値を戻します。この計算タイプは、OLAP DMLで新しいプログラムを開発する際に選択します。プログラムの名前は、アナリティック・ワークスペース内の計算式のEQ文に格納されます。

OLAP DML式の作成手順:

1. 「計算済メジャーの作成」ダイアログ・ボックスを開きます。

2. 「計算タイプ」リストから「OLAP DML式」を選択します。

3. 「データ型」に戻り値のデータ型を選択します。

4. 「OLAP DML」フィールドに式を入力します。

5. 「式のコンパイル」をクリックして、構文のエラーをチェックし、式のコンパイル済バージョンを保存します。

6. 「作成」をクリックして計算済メジャーを作成します。

OLAP DMLファンクションの作成手順:

1. 「計算済メジャーの作成」ダイアログ・ボックスを開きます。

2. 「計算タイプ」リストから「OLAP DMLファンクション」を選択します。

3. 「データ型」に戻り値のデータ型を選択します。

4. ファンクションの名前を入力します。

5. 「プログラム本体」フィールドにプログラムを入力します。DEFINE、PROGRAMおよびENDの各コマンドは自動的に生成されるため、これらのコマンドは省略します。

6. 「式のコンパイル」をクリックして、構文のエラーをチェックし、プログラムのコンパイル済バージョンを保存します。

7. 「作成」をクリックして計算済メジャーを作成します。

OLAP DML式の例

OLAP DMLには多数の組込みファンクションが用意されています。この例では、RANDOMファンクションを使用して計算済メジャーを作成します。図5-6に、単純な計算の定義を示します。この計算済メジャーは、デフォルトの範囲（0から1）で値を生成します。

図5-6 OLAP DML式の使用

「図5-6 OLAP DML式の使用」の説明

次の例では、算術演算子を使用して販売数量に2%を加算した値を求めます。このOLAP DMLの例は、「算術演算子を使用した式の構文例」で示した例と非常に似ていますが、メジャーのネーミング規則が異なっている点に注意してください。

units_cube_units * 1.02

OLAP DML式として作成した2つの計算済メジャーに対する問合せの結果は次のとおりです。

PRODUCT                   UNITS     TARGET     RANDOM
-------------------- ---------- ---------- ----------
Envoy Ambassador           2116       2158      .6467
Envoy Executive            2481       2531      .0773
Envoy Standard             3300       3366      .2349
Sentinel Financial        30513      31123      .6027
Sentinel Multimedia        7948       8107      .6494
Sentinel Standard          7302       7448      .5912

OLAP DMLファンクションの例

値を戻すOLAP DMLプログラムはファンクションでもあります。次のプログラムは、現在の売上が前年より低い場合に値ALERTを戻します。実際の計算は、前年の売上からの変化率を求める別の計算済メジャー（UNITS_CUBE_SALES_PCT_CHG_PY）によって行われます。売上が前年より高い場合には、このプログラムはOKAYを戻します。

例5-1 OLAP DMLファンクション

VARIABLE _alert   TEXT
VARIABLE _product NUMBER

TRAP ON error

_product = product + 0

TEMPSTAT product
DO
LIMIT product TO CHILDREN USING product_parentrel _product
LIMIT product KEEP UNITS_CUBE_SALES_PCT_CHG_PY LT 0

IF STATLEN(product) GT 0
THEN _alert = 'ALERT'
ELSE _alert = 'OKAY'

DOEND

RETURN _alert

error:
RETURN 'ERROR'

図5-7に、このプログラムの計算済メジャーとしての定義を示します。

図5-7 OLAP DMLファンクションの使用

「図5-7 OLAP DMLファンクションの使用」の説明

この計算済メジャーに対する問合せの結果は次のとおりです。

CHANNEL         TIME         PCTCHG STATUS
--------------- -------- ---------- ------
Catalog         Q1.06            -1 ALERT
Catalog         Q2.06            -1 ALERT
Catalog         Q3.06            -3 ALERT
Catalog         Q4.06            -7 ALERT
Direct Sales    Q1.06            -3 ALERT
Direct Sales    Q2.06            -1 ALERT
Direct Sales    Q3.06            10 OKAY
Direct Sales    Q4.06            -4 ALERT
Internet        Q1.06            29 OKAY
Internet        Q2.06             3 ALERT
Internet        Q3.06             0 ALERT
Internet        Q4.06            16 OKAY

6 レポートとダッシュボードの開発

SQL開発ツールやアプリケーションを使用して、OLAPキューブからデータを移入したレポートおよびダッシュボードを作成できます。この章では、Oracle Databaseの付属ツールであるOracle Business Intelligence Publisher（BI Publisher）およびOracle Application Expressの基本的な使用手順について説明します。これらのツールを直接使用する以外に、この章で説明する方法に基づいて好みのSQLツールを使用することもできます。

この章では、次の項目について説明します。

- OLAPアプリケーションの開発

- BI Publisherを使用したレポートの開発

- Application Expressを使用したダッシュボードの開発

参照:
第4章「次元オブジェクトの問合せ」

OLAPアプリケーションの開発

レポートまたはダッシュボードの内容のかわりに、キューブに対するSQL問合せを使用できます。BI PublisherおよびApplication Expressは、ともにクエリー・ビルダーを備えています。これを使用すると、リレーショナル・オブジェクトと次元オブジェクトのどちらに対する問合せでも開発できます。また、SQLスクリプトや別のソースから問合せを切り取って貼り付けることもできます。この方法をこの章では使用します。

静的レポートおよび静的ダッシュボードを作成することが目的であれば、これ以上の説明は必要ありません。適切なツールを使用して、今すぐOLAPアプリケーションの開発を始められます。この章では、動的な内容を持つアプリケーションの作成方法を説明します。中でも、キューブやディメンションの特徴的な機能を活用することにより、ドリル可能なレポートおよびグラフを単独の問合せを使用して作成する方法について詳しく説明します。ここでは、次の2つのタイプのドリル可能インタフェースの作成方法について見ていきます。

- 選択リスト: レポートまたはダッシュボード内のディメンションをドリルできるよう、ディメンションごとにドロップダウン・リストを作成できます。

- リンクされたディメンション列: Application Expressにおいて、階層の最下位へドリル・ダウンするためのリンクを、クロス集計のディメンション列に追加できます。最上位レベルに戻るには「リセット」ボタンを使用します。

これらのユーザー・インタフェースを使用すると、ソース問合せのWHERE句に、バインド変数の値を設定できます。ユーザーが、選択リストで現在選択されている項目を変更したり、クロス集計内のリンクをクリックしたりすると、そのアクションにより変数の値は動的に変更されます。変数値が変更されると、問合せの条件およびレポートまたはダッシュボードの内容も変更されます。

変数により階層ビューのPARENT列の値が設定されると、ユーザーは親をドリルしてその子を表示できます。

例6-1に、Globalサンプル・スキーマのUNITS_CUBE_VIEWに対する基本的なSQL問合せを示します。この問合せにより、SALESメジャー、およびSALESに基づく3つの計算済メジャーが選択されます。

- SALES_PP: 前の期間の売上

- SALES_CHG_PP: 現在の期間の売上と前の期間の売上の差

- SALES_PCTCHG_PP: 現在の期間の売上と前の期間の売上の相違率

この問合せは、この章の中で開発を行うサンプル・アプリケーションで使用します。Product、Customer、Timeの各ディメンションのPARENT列は、これらのアプリケーションでドリル可能です。CHANNELディメンションは、TOTALレベルに固定されたままになります。

例6-1 Salesキューブに対するSQL問合せ

SELECT p.long_description "Product",
cu.long_description "Customer",
t.long_description "Time",
ROUND(f.sales) "Sales",
ROUND(f.sales_pp) "Prior Period",
ROUND(f.sales_chg_pp) "Change",
ROUND(f.sales_pctchg_pp * 100) "Percent Change"
/* From dimension views and cube view */
FROM product_primary_view p,
customer_shipments_view cu,
time_calendar_view t,
channel_primary_view ch,
units_cube_view f
/* Use parent columns to implement drilling */
WHERE p.parent = 'TOTAL'
AND cu.parent = 'TOTAL'
AND t.parent = 'CY2006'
AND ch.level_name = 'TOTAL'
/* Join dimension views to cube view */
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND t.dim_key = f.time
AND ch.dim_key = f.channel
ORDER BY product, customer, t.end_date;

Product         Customer        Time            Sales Prior Period     Change Percent Change
--------------- --------------- ---------- ---------- ------------ ---------- --------------
Hardware        North America   Q1.06        16002175     14493426    1508749             10
Hardware        North America   Q2.06        16032643     16002175      30469              0
Hardware        North America   Q3.06        15698208     16032643    -334436             -2
Hardware        North America   Q4.06        15958791     15698208     260583              2
Hardware        Asia Pacific    Q1.06        13416447     14273900    -857453             -6
Hardware        Asia Pacific    Q2.06        14306431     13416447     889984              7
.
.
.
Software/Other  Asia Pacific    Q4.06          652300       647019       5281              1
Software/Other  Europe          Q1.06          737523       634293     103230             16
Software/Other  Europe          Q2.06          678391       737523     -59132             -8
Software/Other  Europe          Q3.06          499008       678391    -179383            -26
Software/Other  Europe          Q4.06          710796       499008     211788             42

24 rows selected.

BI Publisherを使用したレポートの開発

BI Publisherは、情報を生成してそれを様々な配布方法で提供するための、高度でスケーラブルなレポート作成ソリューションです。このソリューションを使用することにより、ビジネス文書の作成およびメンテナンスに伴うコストが削減されると同時に、レポート管理の効率性が向上します。BI Publisherでは、HTML、PDF、Excelなど様々な形式でレポートが生成されます。

BI Publisherをまだ使用していない場合は、次のOracle Technology Networkのページから、ソフトウェア、チュートリアルおよびドキュメント一式をダウンロードできます。

http://www.oracle.com/technology/products/xml-publisher/index.html

図6-0は、例6-1の問合せに基づくレポートをPDF形式で表示したものです。配布用のレポートを生成する場合は、Products、CustomersおよびTime Periodsの任意の組合せを選択リストから選択できます。このレポートでは、ハードウェア製品、ヨーロッパの顧客、および2006年第2四半期の月が選択されています。この章では、ドリル可能なディメンションを使用してこのようなレポートを作成する方法について説明します。

図6-1 BI PublisherのSalesレポート

「図6-1 BI PublisherのSalesレポート」の説明

BI PublisherでのOLAPレポートの作成

各レポートは、BI Publisherで作成するレポート・エントリと、Microsoft WordやAdobe Acrobatなどのアプリケーションを使用して作成するレイアウト・テンプレートにより構成されます。レポートはフォルダ内にまとめておくことができます。

BI Publisherはミドルウェア・アプリケーションで、複数のソースからデータを導出できます。次に示す手順では、アクセスできるBI Publisherのキューブが1つ以上あることが想定されています。アクセスできるキューブがない場合は、データソースの定義をBI Publisherの管理者に依頼してください。

レポート・エントリの作成手順:

1. ブラウザでBI Publisherのホーム・ページを開き、ログインします。

2. 「マイ・フォルダ」をクリックします。

3. 既存のフォルダを開きます。
または

フォルダの作成手順

1. 「新規フォルダの作成」をクリックします。

2. テキスト・ボックスにフォルダの名前（OLAP Reportsなど）を入力します。

3. 「作成」をクリックします。

4. フォルダをクリックして開きます。

5. レポートを作成します。

1. 「新規レポートの作成」をクリックします。

2. テキスト・ボックスにレポートの名前を入力します。
この例では、Global Salesという名前のレポートを作成します。

3. 「作成」をクリックします。

レポートがフォルダ内に表示されます（図6-2を参照）。

図6-2 BI Publisherでのレポートの作成

「図6-2 BI Publisherでの新規レポートの作成」の説明

レポート・エントリの構成手順:

1. レポートの内容を定義するため、「編集」をクリックします。
レポート・エディタが表示されます。

2. 「一般設定」で、説明を入力してデフォルトのデータソースを選択します。
リストの中に、キューブが含まれているデータベースおよびスキーマへの接続が表示されていない場合は、BI Publisherの管理者に問い合せてください。

3. 「データ・モデル」を選択し、「新規」をクリックします。
「データ・セット」ページが表示されます。

4. データセットの名前を入力し、例6-1に示したようなSQL問合せを入力します。ただし、セミコロンは使用できません。

5. 「保存」をクリックします。

6. 「表示」をクリックします。
BI Publisherでは、レポート定義にエラーがないかどうかのチェックが行われます。エラーがなければ、レポート用のXMLが生成されます。

図6-3に、レポート・エディタの「データ・セット」ページを示します。

図6-3 BI Publisherのレポート・エディタによるデータ・モデルの作成

「図6-3 BI Publisherのレポート・エディタによるデータ・モデルの作成」の説明

Microsoft Wordでのテンプレートの作成

BI Publisherは、書式設定ツールを備えていません。そのかわりとして、使い慣れたデスクトップ・アプリケーションを使用してレポートを設計できるようになっています。この例では、Microsoft Wordを使用します。レポート・テンプレートには、次のような要素があります。

- 静的テキストおよびグラフィック。他のWordドキュメントと同じように入力できます。

- 日時やページ番号などの動的フィールド。Wordにより処理されます。

- データ用のXMLタグを指定するコード。BI Publisherにより処理されます。BI Publisherによりレポートが生成されると、このコードが、これらのタグによって指定されたデータに置き換えられます。

Wordでフォント、テキストの色や背景色、表デザインなどを選択することにより、レポート・テンプレートの要素はすべて、Word内で書式設定を行うことができます。

例6-2に、サンプル問合せにより戻された行のデータに対応するXMLを示します。タグは、空白がアンダースコアに置き換えられていることを除けば、選択リスト内の列名に一致しています。タグは、Product、Customer、Time、Sales、Prior_Period、ChangeおよびPercent_Changeです。XMLタグでは、大文字と小文字は区別されます。Wordドキュメント内のコードには、HTMLタグ名を使用します。

例6-2 SQL問合せに対応するXML

<ROW>
<Product>Hardware</Product>
<Customer>North America</Customer>
<Time>Q1.06</Time>
<Sales>16002175</Sales>
<Prior_Period>14493426</Prior_Period>
<Change>1508749</Change>
<Percent_Change>10</Percent_Change>
</ROW>

図6-4に、サンプル・レポートのテンプレートとして使用するWordドキュメントを示します。このドキュメントには次の要素が含まれます。

- バナーの書式設定に使用する表。グラフィック、会社名および横罫線で構成されます。（静的）

- レポートの名前。（静的）

- 次の2つの行を含む問合せ結果の表。

- 見出し行。（静的）

- テキスト・フォーム・フィールドを含む本文行。XMLタグおよびデータの適切な書式を指定します。これらのフィールドは、BI Publisherによって問合せのデータに置き換えられます。最初の列と最後の列にはそれぞれ2つのフィールドが含まれています。最初と最後のフィールドにより、列の繰返し範囲が指定されます。（動的）

- 日付フィールド。このフィールドは、Wordにより現在の日付に更新されます。（動的）

この例では、何も記述されていないWordテンプレートを使用しますが、すでにバナーなどが定義されているテンプレートを使用してもかまいません。

図6-4 Wordで作成されたBI Publisher用のサンプル・レポート・テンプレート

「図6-4 Wordで作成されたBI Publisher用のサンプル・レポート・テンプレート」の説明

次に示すのは、テンプレートを手動で定義するための手順です。この手順のかわりに、Oracle BI Publisher DesktopというWordのプラグインを使用することもできます。このプラグインは、BI Publisherの「マイ・フォルダ」ページで「Template Builder」をクリックするとダウンロードできます。

WordでBI Publisherテンプレートを作成する手順:

1. Wordで新規文書を開きます。

2. 目的にあわせてページを構成します。

3. 問合せ結果に対する表を作成します。
図6-4に示した表は非常に単純ですが、必要であれば、ネストした列や表など、より複雑な書式を使用することもできます。

4. 「表示」メニューから「ツールバー」を選択し、さらに「フォーム」を選択します。
「フォーム」ツールバーが表示されます。

5. 次の手順に従って各列の本文行にフィールドを入力します。

1. 目的のセルにカーソルをあわせます。

2. 「フォーム」ツールバーで、「テキスト ボックス フォーム フィールド」アイコンをクリックします。
「テキスト ボックス フォーム フィールド」ダイアログ・ボックスが表示されます。

3. 「種類」から適切な項目を選択します。通常、ディメンション・ラベルに対しては「文字列」、メジャーに対しては「数値」を選択します。

4. デフォルト値および書式を入力します。

5. 「ヘルプの追加」をクリックします。
「ヘルプの追加」ダイアログ・ボックスが表示されます。

6. <?tag?>という書式を使用して、目的のXMLタグを「ヘルプの内容を指定する」ボックスに入力します。
XMLレポートに表示されているとおりにタグ名を入力します。たとえば、XMLタグ<Product>に対しては<?Product?>と入力します。

7. 「OK」をクリックして「ヘルプの追加」ダイアログ・ボックスを閉じます。

8. 「OK」をクリックして「テキスト ボックス フォーム フィールド」ダイアログ・ボックスを閉じます。

6. 最初の列の先頭部分に、追加のフォーム・フィールドを挿入します。

1. 「テキスト ボックス フォーム フィールド」ダイアログ・ボックスで、For-Eachなどのデフォルト値を入力します。

2. 「ヘルプの追加」ダイアログ・ボックスで、次のテキストを入力します。

<?for-each:ROW?>

7. 最後の列の末尾に、追加のフォーム・フィールドを挿入します。

1. 「テキスト ボックス フォーム フィールド」ダイアログ・ボックスで、Endなどのデフォルト値を入力します。

2. 「ヘルプの追加」ダイアログ・ボックスで、次のテキストを入力します。

<?end for-each?>

8. 表の見出しやデータ列の適切な位置調整など、その他にも書式設定に関する変更がある場合は、Wordを使用してその変更を行います。

9. ドキュメントをRTFファイルとして保存します。

書式設定されたレポートの生成

Wordで作成されたレポート・テンプレートは、BI publisherにアップロードし、レポート定義に関連付けることができます。その上で、レポートを様々な書式で生成できます。

レポート・レイアウトの作成手順:

1. BI Publisherでレポート・エディタを開きます。

2. 「レイアウト」を選択します。
「レイアウトの作成」ページが表示されます。

3. 「新規」をクリックします。
「レイアウト」ページが表示されます。

4. 名前を入力し、テンプレートのタイプとして「RTF」を選択します。

5. 再度「レイアウト」を選択し、作成したレイアウトをこのレポートのデフォルト・テンプレートとして選択します。

6. 「テンプレート・ファイルの管理」で「参照」をクリックし、作成したRTFファイルを選択します。

7. 「アップロード」をクリックします。
アップロードされたファイルは「テンプレート・ファイルの管理」にリスト表示されます。このファイルをWordで変更したときは、必ず再アップロードしてください。再アップロードしないと、BI Publisherでは変更前のファイルのコピーがそのまま使用されます。

8. 「保存」をクリックします。

9. 「表示」をクリックします。
レポートが表示されます。

10. 書式を変更する場合は、リストから書式を選択し、「表示」をクリックします。
XMLを表示する場合は、「データ」を選択します。

図6-5に、HTML形式で表示したレポートを示します。

図6-5 HTML形式で表示したBI Publisherのレポート

「図6-5 HTML形式で表示したBI Publisherのレポート」の説明

ディメンション選択リストの追加

ディメンションの選択リストをレポートに追加できます。レポートの生成時に、問合せを変更することなく、選択するデータを変更できます。選択リストを追加するには、次の手順を実行します。

- メニューに表示する値リスト（LOV）を1つ以上作成します。

- LOVを表示するためのメニューを作成します。

- メニューに対して作成したバインド変数が使用されるように問合せを編集します。

値リストの作成

LOVに対しては、表示するディメンション・キーを選択するためのSQL問合せを使用します。階層ビューからLONG_DESCRIPTION列およびDIM_KEY列を取り込みます。この例では、Product Primary階層に関するリストを作成します。

SELECT long_description, dim_key
FROM product_primary_view
WHERE parent = 'TOTAL'
OR dim_key = 'TOTAL'
ORDER BY level_name, long_description

LONG_DESCRIPTION     DIM_KEY
-------------------- ------------
Hardware             HRD
Software/Other       SFT
Total Product        TOTAL

値リストの作成手順:

1. BI Publisherでレポート・エディタを開きます。

2. 「値リスト」を選択し、「新規」をクリックします。
「値リスト」ページが表示されます。

3. 次の手順に従ってリストを定義します。

1. リストの名前（Product_LOVなど）を入力します。

2. タイプとして「SQL問合せ」を選択します。

3. 前述のように、ディメンション階層ビューに対する問合せを入力します。

4. 「保存」をクリックします。

その他のディメンションに対しても、この手順を繰り返します。この例では、Product、CustomerおよびTimeの各リストを使用します。

メニューの作成

BI Publisherでは、メニューは一種のパラメータとして扱われます。パラメータを作成すると、レポートの問合せに使用できるバインド変数が自動的に作成されます。

メニューの作成手順:

1. 「パラメータ」を選択し、「新規」をクリックします。
「パラメータ」ページが表示されます。

2. 次の手順に従ってパラメータを定義します。

1. 「識別子」に、productなどの名前を入力します。
この名前が、問合せで使用するバインド変数の名前になります。ただし、大文字と小文字は区別されます。

2. 適切なデータ型を選択します（通常は「文字列」）。

3. 「デフォルト値」に、LOV問合せのWHERE句で使用するディメンション・キーを入力します。
メニューには最初にこのキーが表示されます。

4. 「パラメータ・タイプ」で、「メニュー」を選択します。

5. 目的の値リストを選択します。

6. オプションの選択をすべて解除します。

3. 「保存」をクリックします。

その他のディメンションに対しても、この手順を繰り返します。この例では、Product、CustomerおよびTimeに対してメニューを作成します。

問合せの編集

メニューをアクティブにするには、レポートに対する問合せのWHERE句を変更して、バインド変数が使用されるようにします。バインド変数の値は、現在メニューで選択されている内容になります。

次に示すのは、WHERE句の条件の書式です。

parent_column = :bind_variable

この例では、WHERE句に、Time、ProductおよびCustomerのバインド変数を使用します。

WHERE  p.parent  = :product
AND cu.parent = :customer
AND t.parent  = :time
AND ch.level_name = 'TOTAL'

問合せの編集手順:

1. 「データ・モデル」から、このレポートに対して定義したデータセットを選択します。
「データ・セット」ページが表示されます。

2. 「SQL問合せ」ボックスで、パラメータを定義する際に作成したバインド変数が使用されるようにWHERE句を編集します。

3. 「保存」をクリックします。

図6-6に、BI Publisherに表示されたHTML形式のレポートを示します。上部には、Product、CustomerおよびTimeの各選択リストが表示されています。クロス集計には、2006年第3四半期の月、ハードウェア製品およびヨーロッパの国がリスト表示されています。データの選択内容を変更して表示する場合は、メニューからTime Period、ProductおよびCustomerを選択し、「表示」をクリックします。このレポートは、図6-1に示したレポートと同じレポート・エントリおよび問合せを使用して生成されたものです。

このレポートに対して、グラフやその他の表をさらに追加することもできます。

図6-6 BI Publisherの選択リストを持つSalesレポート

「図6-6 BI Publisherの選択リストを持つSalesレポート」の説明

Application Expressを使用したダッシュボードの開発

Oracle Application Expressは、Oracle Database用の高速Webアプリケーション開発ツールです。Application Expressには、ユーザー・インタフェースのテーマ、ナビゲーショナル・コントロール、フォーム・ハンドラ、フレキシブル・レポートなど、開発プロセスを簡素化するための機能が組み込まれています。

第1章に、キューブから分析データを抽出し、それらを多様なグラフやレポートの形式で表した高度なダッシュボードが図示されています。Oracle OLAPにより生成される豊富な分析データを表示するためのダッシュボードを、キューブから容易に作成できます。

Application Expressをまだ使用していない場合は、次のOracle Technology Networkのページから、ソフトウェア、チュートリアルおよびドキュメント一式をダウンロードできます。

http://www.oracle.com/technology/products/database/application_express

図6-7に、ProductとCustomerの表示リスト、および3つのディメンション列すべてにリンクを持つクロス集計を示します。別のProductまたはCustomerを選択すると、関連する列には新たに、選択したキーの子が表示されます。いずれかの列のディメンション・キーをクリックすると、その子が表示されます。「リセット」ボタンを押すと、ページがリフレッシュされ、最初に選択したデータが表示されます。

図6-7 Application Expressのドリル可能なディメンション

「図6-7 Application Expressのドリル可能なディメンション」の説明

Application ExpressでのOLAPアプリケーションの作成

Application Expressでは、管理者が作成した作業領域で、Webアプリケーションの開発を行います。各アプリケーションは1つ以上のHTMLページで構成されており、各ページはその中の特定の場所を表す複数のリージョンで構成されています。また各リージョンは、レポート（クロス集計）やグラフなどいくつかの要素で構成されています。

Application ExpressはOracle Databaseで動作します。次元オブジェクトが別のデータベースに格納されている場合は、問合せの中にデータベース・リンクを使用する必要があります。次に示す手順は、作業領域が用意されており、かつ少なくとも1つのキューブにアクセスできることが前提となっています。作成するのは、クロス集計を表示する、1ページで構成されるアプリケーションです。

SQL問合せを基にしたWebページの作成手順:

1. ブラウザでApplication Expressのホーム・ページを開き、ログインします。

2. 「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーション・ビルダーが表示されます。

3. 「作成」をクリックします。
「アプリケーションの作成ウィザード」が表示されます。

4. 「アプリケーションの作成」を選択し、さらに「次へ」を選択します。

5. 「名前」ページで、アプリケーションのタイトル（Global Dashboardなど）を入力し、「最初から」を選択します。

6. 「ページ」ページで、「レポート」ページ・タイプを選択した上で、次の手順に従ってページを定義します。

1. 「ページ・ソース」で「SQL問合せ」を選択します。

2. 「タイトル」に、Sales Analysisなどの名前を入力します。
ページにはこのタイトルが表示されます。

3. 「問合せ」には、例6-1と同じように、キューブに対するSQL SELECT文を入力します。ただし、ORDER BY句およびセミコロンは使用できません。

4. 「ページの追加」をクリックします。
「アプリケーションの作成」ボックスにページ定義が表示されます。

7. 「次へ」をクリックし、目的の操作を行った上で「アプリケーションの作成ウィザード」を終了します。
この例で作成したアプリケーションには、タブ、共有コンポーネント、認証およびテーマ15（水色）は使用されていません。

8. 「確認」ページで「作成」をクリックします。

9. アプリケーション・ビルダーのホーム・ページで、「アプリケーションの実行」をクリックします。

ヒント:
このページでの操作を続行する場合は、画面下部にある「ページの編集 1」リンクをクリックします。

図6-8に、Application Expressに表示された問合せの結果を示します。ページには、ブレッドクラム、「検索」ボックス、「表示」リスト、「実行」ボタン、「リセット」ボタン、「スプレッドシート」リンクなどのアイテムが自動的に追加されます。このアプリケーションでは「リセット」ボタン以外は不要であるため、その他のアイテムは削除してもかまいません。

図6-8 Application Expressの基本的なSalesレポート

「図6-8 Application Expressの基本的なSalesレポート」の説明

ディメンション選択リストの追加

BI Publisherと同様、Application Expressでも、ディメンション・キーの選択リストを追加することにより、ディメンションでのドリル操作を行えるようにできます。ダッシュボードのユーザーは、リストから特定のアイテムを選択したり、ページ上のグラフィックやクロス集計に表示されているデータの選択内容を動的に変更したりすることが可能です。選択リストを実装するには、次の手順を実行します。

- ページ上に、リストを表示するためのリージョンを作成します。

- 値リスト（LOV）を作成します。

- LOVを表示するためのリスト・アイテムを、バインド変数を使用して作成します。

- リストに対して無条件ブランチを作成します。

- バインド変数が使用されるように問合せを編集します。

「ページ定義」では、ページの作成および編集に加え、グラフィカル・アイテムの追加や変更も行えます。これらのアイテムは、「ページ・レンダリング」、「ページ・プロセス」、「共有コンポーネント」という3つの列に分類されます。

「ページ定義」を開く手順:

- アプリケーションを起動後、ページ下部にある「ページの編集」リンクをクリックします。
または

- Applicationのホーム・ページで、レポートが定義されるページのアイコンをクリックします。

図6-9に、「ページ定義」の一部を示します。

図6-9 Application Expressの「ページ定義」

「図6-9 Application Expressの「ページ定義」」の説明

リージョンの作成

ページ上部のプレーンHTML領域に選択リストを作成できます。

空のHTMLリージョンの作成手順:

1. 「リージョン」にある「ページ定義」で、「作成」アイコンをクリックします。
「リージョンの作成」ウィザードが表示されます。

2. 「リージョン」ページで、「HTML」を選択し、「次へ」をクリックした後、再度「HTML」を選択します。

3. 「表示属性」ページで、リストに対し、わかりやすいタイトルを入力して、適切なテンプレートおよびページ上の位置を選択します。
この例では、名前はlov_region、テンプレートは「テンプレートなし」、位置は「ページ・テンプレート・ボディ (1. リージョン・コンテンツより下のアイテム)」です。名前は、レンダリングされたページ上に表示できますが、この例では非表示になっています。

4. 「リージョンの作成」をクリックします。
「リージョン」にある「ページ定義」にリージョンが表示されます。

値リストの作成

値リストの場合は、ここで説明するようなSQL問合せを使用します。階層ビューからLONG_DESCRIPTION列およびDIM_KEY列を取り込みます。この問合せを実行すると、Customer Shipments階層に関するリストが作成されます。

SELECT long_description, dim_key
FROM customer_shipments_view
WHERE parent = 'TOTAL'
OR dim_key= 'TOTAL'
ORDER BY level_name, long_description;

LONG_DESCRIPTION     DIM_KEY
-------------------- ----------
Asia Pacific         APAC
Europe               EMEA
North America        AMER
Total Customer       TOTAL

値リストの作成手順:

1. 「LOV」にある「ページ定義」で、「作成」アイコンをクリックします。
「LOVの作成」ウィザードが表示されます。

2. 「ソース」ページで、「最初から」を選択します。

3. 「名前およびタイプ」ページで、説明的な名前を入力し、「動的」を選択します。
この例で使用する名前はCUSTOMER_LOVです。

4. 「問合せ」ページで、前述したような問合せを入力します。ただし、セミコロンは使用できません。

5. 「LOVの作成」をクリックします。
「LOV」の「ページ定義」にLOVが表示されます。

さらにLOVを作成する場合は、これらの手順を繰り返します。この例では、ProductおよびCustomerの各ディメンションに対するLOVを作成します。

選択リストの作成

選択リストの場合は、LOVを表示するためのリスト・アイテムを作成します。

リスト・アイテムの作成手順:

1. 「アイテム」にある「ページ定義」で、「作成」アイコンをクリックします。
「アイテムの作成」ウィザードが表示されます。

2. 「アイテム・タイプ」ページで、「選択リスト」を選択します。

3. 「コントロール・タイプ」で、「送信機能付き選択リスト」を選択します。

4. 「表示位置および名前」ページで次の操作を実行します。

- ディメンションを識別するための名前（Customerバインド変数の名前に使用するP1_CUSTOMERなど）を入力します。P1はページ番号、CUSTOMERはCustomerディメンションを表します。

- リストを配置するための新規のHTMLリージョンを選択します。

5. 「LOV」ページで、次の設定を実行します。

- 「名前付きLOV」を、このディメンションに対して作成したLOV（CUSTOMER_LOVなど）に設定します。

- 「NULLオプションの表示」を「いいえ」に設定します。

6. 目的にあわせて「アイテム」の属性を選択します。

7. 「ソース」ページで、デフォルト値に対する最上位のディメンション・キーの名前を入力します。
Global Customerディメンションの場合、この値はTOTALです。

8. 「アイテムの作成」をクリックします。

その他のリストに対しても、この手順を繰り返します。この例では、ProductおよびCustomerの各ディメンションに対するリストを作成します。

リスト・アイテムをアクティブにする手順:

1. 「ブランチ」にある「ページ定義」で、「作成」アイコンをクリックします。
「ブランチの編集」ウィザードが表示されます。

2. 「ポイントおよびタイプ」ページではデフォルト設定をそのまま使用します。

3. 「ターゲット」ページで、次の操作を実行します。

- 「ターゲット」を「このアプリケーションのページ」に設定します。

- 「ページ」を、リスト・アイテムを持つページ（この例では1）に設定します。

- 「このページのページ区切りをリセット)」を選択します。

4. 「ブランチ条件」ページでは、無条件ブランチを作成するデフォルト設定をそのまま使用します。

5. 「変更の適用」をクリックします。
「ブランチの編集」ページが閉じ、「ページ定義」に戻ります。無条件ブランチが「ブランチ」にリスト表示されます。

問合せの編集

次に示すのは、WHERE句の動的条件の書式です。

parent_column = NVL(:bind_variable, 'top dim_key')

NVL関数を使用すると、NULL値が、階層における最上位のディメンション・キーの名前に置換されます。最上位のディメンション・キーには、親キーはありません。

問合せの編集手順:

1. 「ページ定義」を開きます。

2. 「リージョン」で、「リージョンの編集」リンクをクリックします。この例におけるリージョンの名前はSales Reportです。
「リージョンの編集」ページが表示されます。

3. 「ソース」で問合せを編集します。手順は次のとおりです。

- バインド変数が使用されるようにWHERE句を変更します。

- Application Expressにより追加された外部SELECT文を削除します。

4. 「変更の適用」をクリックします。

この例におけるWHERE句は、次のような形になっています。

WHERE p.parent = NVL(:P1_PRODUCT, 'TOTAL')
AND cu.parent = NVL(:P1_CUSTOMER, 'TOTAL')
AND t.parent = 'CY2006'
AND ch.level_name = 'TOTAL'

図6-10は、ProductおよびCustomerの各選択リストが表示された修正済ページを示したものです。

図6-10 ドリル用の選択リストを持つダッシュボード

「図6-10 ドリル用の選択リストを持つダッシュボード」の説明

ディメンション列でのドリル操作

ユーザーが1回の問合せを行うだけで、階層の最上位からディテール・レベルにドリルダウンできるようにすることが可能です。Application Expressにドリル操作を実装するには、次の手順を実行します。

- バインド変数を使用して非表示アイテムを作成します。

- バインド変数が使用されるように問合せを編集します。

- クロス集計のディメンション列にリンクを追加します。

この例では、表示されるディメンションすべてにドリル操作を実装します。

非表示アイテムの作成

Application Expressでは、バインド変数を与える様々なタイプのアイテムを作成できます。これらのアイテムには、特定の要素に関するセッション・ステートが格納されます。この場合は、親ディメンション・キーの現在の選択内容が格納されます。

ドリル操作をサポートするディメンションにはそれぞれ、バインド変数が必要です。この例の場合、ProductおよびCustomerにはリスト・アイテムとともに作成されたバインド変数が存在します。Timeは、レポートに表示されているディメンションのうち、唯一バインド変数がありません。Timeディメンション列のリンクがセッション・ステートを変更するためのユーザー・インタフェースとして使用されるため、Timeには他のグラフィカル・ユーザー・インタフェースは必要ありません。非表示アイテムはこのようなときに使用します。

非表示アイテムの作成手順:

1. 「ページ定義」を開きます。

2. 「アイテム」で、「作成」アイコンをクリックします。
「アイテムの作成」ウィザードが表示されます。

3. 「アイテム・タイプ」ページで、「非表示」を選択します。

4. 「表示位置および名前」ページで次の操作を実行します。

- ディメンションを識別するための名前（Timeバインド変数の名前に使用するP1_TIMEなど）を入力します。

- レポートを定義するリージョンを選択します。

5. 「ソース」ページで、階層の最上位のディメンション・キーを入力します。
Globalスキーマにおけるすべての階層の最上位はTOTALです。この例の場合、選択範囲を1年に制限するため「時間」はCY2006に設定されます。

6. 「アイテムの作成」をクリックします。

7. 列リンクでのみドリルをサポートするディメンションがその他にあれば、それらのディメンションに対してもこの手順を繰り返します。
この例では、Timeに対して非表示アイテムが定義されます。

問合せの編集

列リンクをレポートに追加するには、SELECT文の2つの部分を変更する必要があります。

- 選択リスト: Application Expressで管理されるのは、選択リストに表示される列のみです。列を表示するか非表示にするかは選択できます。列リンクを定義するには、階層ビューのDIM_KEY列およびPARENT列を問合せの選択リストに追加します。

- WHERE句: 「問合せの編集」の中で選択リストに対して行ったのと同じ手順で、非表示アイテムに対するバインド変数を追加します。

例6-3に、修正したサンプルの問合せを示します。

例6-3 Application Expressにおける列リンク用の修正済問合せ

SELECT p.long_description "Product",
cu.long_description "Customer",
t.long_description "Time",
ROUND(f.sales) "Sales",
ROUND(f.sales_pp) "Prior Period",
ROUND(f.sales_chg_pp) "Change",
ROUND(f.sales_pctchg_pp * 100) "Percent Change",
/* Add DIM_KEY and PARENT columns for column links */
p.dim_key product_key,
p.parent product_parent,
cu.dim_key customer_key,
cu.parent customer_parent,
t.dim_key time_key,
t.parent time_parent
/* From dimension views and cube view */
FROM product_primary_view p,
customer_shipments_view cu,
time_calendar_view t,
channel_primary_view ch,
units_cube_view f
/* Use parent columns and bind variables for drilling */
WHERE p.parent = NVL(:P1_PRODUCT, 'TOTAL')
AND cu.parent = NVL(:P1_CUSTOMER, 'TOTAL')
AND t.parent = NVL(:P1_TIME, 'CY2006')
AND ch.level_name = 'TOTAL'
/* Join dimension views to cube view */
AND p.dim_key = f.product
AND cu.dim_key = f.customer
AND t.dim_key = f.time
AND ch.dim_key = f.channel

ディメンション列へのリンクの追加

ダッシュボードのユーザーがクロス集計内のリンクされたディメンション列をクリックすると、バインド変数の値が変更され、それに伴ってクロス集計も変更されます。階層をドリルダウンした後、「リセット」ボタンを押すことにより、画面上のデータを元の選択状態に戻すことができます。これらの列リンクを実装するには、列リンクを追加し、「リセット」ボタンをアクティブにする必要があります。

ディメンション列にリンクを追加する手順:

1. 「ページ定義」を開きます。

2. 「リージョン」で、「レポート」リンクをクリックします。
「レポート属性」ページが表示されます。

3. 「列属性」で、レポート表示を修正します。手順は次のとおりです。

- 非表示にする列（DIM_KEY列やPARENT列など）の「表示」チェック・ボックスを選択解除します。

- レポートに対して目的のソートを行うため、「ソート」チェック・ボックスおよび「ソート順序」チェック・ボックスを選択します。この例におけるソート順序は、Product（1）、Customer（2）、Time（3）です。

4. ディメンション列の「編集」アイコンをクリックします。
「列属性」ページが表示されます。

5. 「列リンク」で、リンクを定義します。手順は次のとおりです。

- 「リンク・テキスト」: ディメンションの名前を選択します。

- 「ページ」: ページ番号を入力します。

- 「名前」: レポートに表示される順序でディメンションをリスト表示します。「アイテム」はバインド変数の名前です。また「値」は、定義されているディメンションのDIM_KEY列またはその他のディメンションのPARENT列です。

図6-11に、Timeディメンションのリンク定義を示します。

6. 「変更の適用」をクリックします。
「列属性」ページが閉じ、「レポート属性」ページに戻ります。

7. その他のディメンション列のリンクを定義します。

8. 「変更の適用」をクリックします。
「レポート属性」ページが閉じ、「ページ定義」に戻ります。

図6-11 Timeリンクの定義

「図6-11 Timeリンクの定義」の説明

「リセット」ボタンをアクティブにする手順:

1. 「ページ定義」を開きます。

2. 「ブランチ」で、「ページに移動 条件付き」リンクをクリックします。
ページ上には、条件付きブランチに伴って、「リセット」ボタンが自動的に作成されています。「ブランチの編集」ページが表示されます。

3. 「アクション」で、「キャッシュのクリア」の値をページ番号に設定します（この例では1）。

4. 「条件」で、「対象ボタン」を「リセット」に設定します。

5. 「変更の適用」をクリックします。
「ブランチの編集」ページが閉じ、「ページ定義」に戻ります。

6. 「実行」をクリックしてページを表示します。

図6-12に、2006年第3四半期の月を表示した、処理が完了したページを示します。このアプリケーションでの操作を続行して、他のレポートやグラフをページに追加することもできます。これらのレポートやグラフにデータを供給するSQL問合せには、ディメンションのバインド変数をそのまま使用できます。

図6-12 Application Expressの列リンクを持つSales Analysisレポート

「図6-12 Application Expressの列リンクを持つSales Analysisレポート」の説明

7 Oracle OLAPの管理

Oracle OLAPはデータベース内にあり、そのリソースは同じツールを使用して管理されるため、Oracle OLAPおよびデータベースの管理は集中して行われます。ただし、データベースのチューニングなど、データ・ウェアハウス固有の作業は行う必要があります。

この章では、次の項目について説明します。

- データベース初期化パラメータの設定

- ストレージ管理

- ディクショナリ・ビューとシステム表

- パーティション化されたキューブとパラレル化

- キューブおよびディメンションの分析

- アナリティック・ワークスペースの監視

- バックアップとリカバリ

- エクスポートとインポート

- キューブ・マテリアライズド・ビュー

データベース初期化パラメータの設定

表7-1に、Oracle OLAPのパフォーマンスに影響するパラメータを示します。サーバー・パラメータ・ファイルまたはinit.oraファイルをこれらの値に変更した後、データベース・インスタンスを再起動します。これらの設定の効果を監視し、必要に応じて設定を調整できます。

参照:

- パラメータ設定のチューニングについては、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。

- 個々のパラメータについては、『Oracle Databaseリファレンス』を参照してください。

表7-1 データベース・パラメータの初期設定

パラメータ

デフォルト値

推奨設定

説明

JOB_QUEUE_PROCESSES

1000

この値を減らしてインスタンスで実行されるジョブ・スレーブの最大数を制限する場合は、OLAP用のプロセス数を次のように計算する。

CPUの数+CPU3個ごとに1。マルチコアCPUでは各コアを1つのCPUとして数える。

たとえば、4プロセッサのコンピュータではJOB_QUEUE_PROCESSES=5となる。

OLAPの複数のビルドにおけるパラレル化の程度を制御する（「パラレル化」を参照）。

PARALLEL_DEGREE_POLICY

MANUAL

AUTOまたはLIMITED

パラレル化の程度の決定方法を制御する。

AUTOまたはLIMITEDに設定すると、SQL文をパラレルに実行するかどうかと、実行する場合はパラレル化の程度が自動的に決定される。

SESSIONS

導出

2.5×同時OLAPユーザーの最大数。

各ユーザーに対して十分な数のバックグラウンド・プロセスを確保する。

UNDO_MANAGEMENT

AUTO

(10gではMANUAL）

AUTO

UNDO表領域を使用するかどうかを指定する。

UNDO_TABLESPACE

導出

UNDO表領域の名前。事前に定義されている必要がある。

OLAP用に定義されたUNDO表領域を指定する（「UNDO表領域の作成」を参照）。

システム・パラメータの設定手順:

1. テキスト・エディタでinit.ora初期化ファイルを開きます。

2. ファイルの設定を追加または変更します（表7-1を参照）。

3. データベースをいったん停止し、再起動します。
Windowsの「サービス」ユーティリティを使用して、OracleServiceをいったん停止し、再起動します。

Linux上では、次のようなコマンドを使用します。STARTUPコマンドの初期化ファイルが正しいものであることを確認してください。

SQLPLUS '/ AS SYSDBA'
SHUTDOWN IMMEDIATE
STARTUP pfile=$ORACLE_BASE/admin/orcl/pfile/init.ora.724200516420

ストレージ管理

アナリティック・ワークスペースは、特に指定しないかぎり、所有者のデフォルトの表領域に格納されます。OLAPに使用するすべての表領域には、EXTENT MANAGEMENT LOCALが指定される必要があります。デフォルト・パラメータを使用して作成される表領域では、リソースが効率的に使用されないことがあります。格納するアナリティック・ワークスペースにあわせて、UNDO表領域、永続表領域および一時表領域を作成する必要があります。

UNDO表領域の作成

UNDO表領域は、次の例のようにEXTENT MANAGEMENT LOCAL句を使用して作成します。

CREATE UNDO TABLESPACE olapundo DATAFILE '$ORACLE_BASE/oradata/undo.dbf'
SIZE 64M REUSE AUTOEXTEND ON NEXT 8M
MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;

UNDO表領域を作成したら、次の設定をシステム・パラメータ・ファイルに反映し、データベースを再起動します（「データベース初期化パラメータの設定」を参照）。

UNDO_TABLESPACE=tablespace
UNDO_MANAGEMENT=AUTO

OLAPで使用する永続表領域の作成

各次元オブジェクトは、少なくとも1つのエクステントを占有します。エクステントのサイズを固定すると、割当て領域の大部分が無駄になることがあります。たとえば、あるオブジェクトが64KBで、エクステントが1MB（デフォルト）の均一サイズに設定されている場合、エクステントのうち、ほんのわずかな部分のみが使用されることになります。

永続表領域は、次の例のようにEXTENT MANAGEMENT LOCAL句およびSEGMENT SPACE MANAGEMENT AUTO句を使用して作成します。

CREATE TABLESPACE glo DATAFILE '$ORACLE_BASE/oradata/glo.dbf'
SIZE 64M REUSE AUTOEXTEND ON NEXT 8M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

OLAPで使用する一時表領域の作成

Oracle OLAPでは、キューブ内のデータに対するすべての変更（データ・ロードやデータ分析の結果による変更）を格納するのに一時表領域が使用されます。キューブを保存すると、これらの変更内容が永続表領域に移動され、一時表領域がクリアされます。

このような方法で使用する場合は、表領域内に相当数のエクステントが作成されます。Oracle OLAPでの使用に適した一時表領域には、次の例のようにEXTENT MANAGEMENT LOCAL句、UNIFORM SIZE句および小さめのサイズを指定することが必要です。

CREATE TEMPORARY TABLESPACE glotmp TEMPFILE '$ORACLE_BASE/oradata/glotmp.tmp'
SIZE 50M REUSE AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K;

ストレージ・リソース間のデータの分散

Oracle Databaseには、定期的な作業を簡素化するための高度なストレージ管理ツールが用意されています。自動ストレージ管理（ASM）は、データベース記憶域をディスク・グループに仮想化する簡易なストレージ管理インタフェースを備えています。少数のディスク・グループを管理でき、それらのディスク・グループへのデータベース・ファイルの配置はASMにより自動的に行われます。

ASMでは、使用可能なすべてのストレージ・リソース間でデータを均等に分散させることにより、パフォーマンスと使用率が最適化されます。ディスクの追加または削除を行うと、ASMにより自動的にファイルがディスク・グループ全体に再分散されます

OLAPはOracle Databaseに組み込まれているため、リレーショナル・データと次元データのどちらを管理する場合にもASMを使用できます。

アナリティック・ワークスペースには、ASMを使用することを強くお薦めします。ASMを使用して管理されているシステムは、ファイル・システムに比べて動作が高速であり、RAWデバイスよりも管理が容易です。ASMを使用すると、Oracle RACを備えたシステム上でもOracle RACを備えていないシステム上でも、アナリティック・ワークスペースのパフォーマンスが最適化されます。

ただし、Oracle OLAPを使用する上でASMは必須ではありません。次の例のように表領域を定義すれば、複数のディスク間にデータを分散させることは可能です。

CREATE TABLESPACE glo DATAFILE
'disk1/oradata/glo1.dbf' SIZE 64M REUSE AUTOEXTEND ON NEXT 8M MAXSIZE 1024M
EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

ALTER TABLESPACE glo ADD DATAFILE
'disk2/oradata/glo2.dbf' SIZE 64M REUSE AUTOEXTEND ON NEXT 8M MAXSIZE 1024M,
'disk3/oradata/glo3.dbf' SIZE 64M REUSE AUTOEXTEND ON NEXT 8M
MAXSIZE UNLIMITED;

ディクショナリ・ビューとシステム表

Oracle Databaseのデータ・ディクショナリ・ビューとシステム表には、アナリティック・ワークスペースに関する広範な情報が格納されています。

静的データ・ディクショナリ・ビュー

データベースのデータ・ディクショナリの静的ビューには、アナリティック・ワークスペースに関する情報を提供するものがあります。表7-2にそれらの簡単な説明を示します。すべてのデータ・ディクショナリ・ビューには、対応するDBAビューとUSERビューがあります。

表7-2 OLAPの静的データ・ディクショナリ・ビュー

ビュー

説明

ALL_AWS

現在のユーザーがアクセス可能なすべてのアナリティック・ワークスペースを示す。

ALL_AW_OBJ

現在のユーザーがアクセス可能なすべてのアナリティック・ワークスペース内の現在のオブジェクトを示す。

ALL_AW_PROP

現在のユーザーがアクセス可能なすべてのアナリティック・ワークスペースで定義されているプロパティを示す。

ALL_AW_PS

現在のユーザーがアクセス可能なすべてのアナリティック・ワークスペースによって現在使用されているページ領域を示す。

参照:

- OLAPの次元オブジェクトを説明するデータ・ディクショナリ・ビューのリストは、「データ・ディクショナリの問合せ」を参照してください。

- すべてのデータ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

システム表

SYSユーザーは、アナリティック・ワークスペースに関連付けられた複数の表を所有します。表7-3に簡単な説明を示します。

重要:
これらの表はOracle OLAPの操作に必須です。これらの表を削除または変更した場合の影響を十分に理解していない場合は、削除したり直接変更しないでください。

表7-3 SYSが所有するOLAP表

表

説明

AW$

データベースの全アナリティック・ワークスペースのレコードを保持し、その名前や所有者などの情報を記録する。

AW$AWCREATE

AWCREATEアナリティック・ワークスペースを格納。このアナリティック・ワークスペースには、Oracle Database 10g リリース10.1.0.2以前のOLAPカタログ・メタデータを使用するためのプログラムが含まれる。この表は、下位互換性のみを目的として存在する。

AW$AWCREATE10G

AWCREATE10Gアナリティック・ワークスペースを格納。このアナリティック・ワークスペースには、Oracle Database 10g リリース10.1.0.3においてOLAPカタログ・メタデータを使用するためのプログラムが含まれる。OLAPカタログは、それ以降のリリースでは使用されない。この表は、下位互換性のみを目的として存在する。

AW$AWMD

AWMDアナリティック・ワークスペースを格納。このアナリティック・ワークスペースには、メタデータのカタログを作成するプログラムが含まれる。

AW$AWREPORT

AWREPORTアナリティック・ワークスペースを格納。このアナリティック・ワークスペースには、サマリー領域レポートを生成するためのAWREPORTというプログラムが含まれる。

AW$AWXML

AWXMLアナリティック・ワークスペースを格納。このアナリティック・ワークスペースには、Oracle Database 10g リリース10.1.0.4以降のアナリティック・ワークスペースを作成および管理するプログラムが含まれる。

AW$EXPRESS

EXPRESSアナリティック・ワークスペースを格納。このアナリティック・ワークスペースには、基本操作をサポートするオブジェクトおよびプログラムが含まれる。EXPRESSは、セッションが開いている場合には常に使用される。

AW_OBJ$

アナリティック・ワークスペースに格納されているオブジェクトを示す。

AW_PRG$

プログラム・データを格納。現在は使用されていない。

AW_PROP$

アナリティック・ワークスペース・オブジェクトのプロパティを格納。

AW_TRACK$

集計セルへのアクセスに関するトラッキング・データを格納。現在は使用されていない。

PS$

すべてのページ領域の履歴を保持。ページ領域は順序付けられた一連のバイトで、ファイルに相当する。Oracle OLAPは、アナリティック・ワークスペース・ページのキャッシュを管理する。ページは表の記憶域から読み込まれ、問合せへの応答でキャッシュに書き込まれる。複数のセッションで同じページにアクセスすることも可能。

PS$に格納された情報を使用すると、セッション中にアナリティック・ワークスペースが変更されている場合でも、Oracle OLAPは不要になったページを廃棄し、すべてのユーザーのデータのビューを一貫性のある状態に維持できる。アナリティック・ワークスペースへの変更が保存されると、未使用のページは削除され、対応する行がPS$から削除される。

アナリティック・ワークスペース表

アナリティック・ワークスペースはOracleデータベース内の表に格納されます。これらの表の名前は、常にAW$で始まります。

たとえば、GLOBALユーザーがFINANCIALSとMARKETINGという2つのアナリティック・ワークスペースを作成すると、次の表がGLOBALスキーマに作成されます。

AW$FINANCIALS
AW$MARKETING

これらの表には、すべてのオブジェクト定義およびデータが格納されます。

メンテナンス・ログ

Analytic Workspace Managerを使用してデータをキューブまたはディメンションに初めてロードした時点で、いくつかのログが作成されます。これらのログはアナリティック・ワークスペースと同じスキーマ内の表に格納されます。

- キューブ作成ログ: 作成中の実行内容に関する情報が書き込まれます。このログを使用して、期待どおりの作成結果が得られたかどうか、得られなかった場合は、その理由を確認できます。このログは、Analytic Workspace Manager、データベース・マテリアライズド・ビュー・リフレッシュ・サブシステム、またはPL/SQLプロシージャによりキューブまたはディメンションがリフレッシュされると、そのたびに継続して更新されます。作成の進行状況を評価し、完了する時間を推測するために、いつでもログに問い合せることができます。この表のデフォルト名は、CUBE_BUILD_LOGです。

- キューブ・ディメンション・コンパイル・ログ: OLAPでキューブを集計する際に、ディメンション階層の検証中に発生したエラーが書き込まれます。この表のデフォルト名は、CUBE_DIMENSION_COMPILEです。

- キューブ操作ログ: すべてのOLAPエンジン・イベントに関するメッセージおよびデバッグ情報が書き込まれます。この表のデフォルト名は、CUBE_OPERATIONS_LOGです。

- キューブ拒否レコード・ログ: 予測された形式に適合しなかったために拒否されたレコードを確認できます。この表のデフォルト名は、CUBE_DIMENSION_COMPILEです。

これらのログを使用すると、長時間実行されているプロセスの進行状況を追跡し、その結果を使用してパフォーマンスの特徴をプロファイルできます。これらのログから、キューブの作成中やメンテナンス中に発生する可能性がある問題を診断して、問題の解決に役立つ情報が得られます。また、キューブに問い合せる際のパフォーマンスの問題の診断にも役立ちます。

$ORACLE_HOME/olap/admin/utlolaplog.sqlスクリプトを実行すると、いくつかの便利なビューとともに作成ログを作成することもできます。

Analytic Workspace Managerのメンテナンス・ウィザードでは、それぞれの作成処理の進行中に、これらの表の中の関連する行が「メンテナンス・ログ」ページに表示されます。この表には、任意のSQLインタフェースから直接問い合せることができます。

参照:
『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』のDBMS_CUBE_LOGエントリに関する項目

パーティション化されたキューブとパラレル化

作成やメンテナンスに要する時間を短縮するため、キューブは原則としてパーティション化されます。パーティション化されたキューブの作成については、「パーティション化方法の選択」を参照してください。

キューブのパーティション化に関するメタデータの問合せ

現在のパーティションを確認するには、ALL_CUBESデータ・ディクショナリ・ビューに対して問合せを行います。PARTITION_DIMENSION_NAME、PARTITION_HIERARCHY_NAMEおよびPARTITION_LEVEL_NAMEの各列に、パーティション化情報が表示されます。たとえば次の問合せにより、Unitsキューブが、Timeディメンション、Calendar階層およびCalendar Yearレベルでパーティション化されていることがわかります。

SELECT partition_dimension_name, partition_hierarchy_name,
partition_level_name FROM all_cubes
WHERE owner='GLOBAL' AND cube_name='UNITS_CUBE';

PARTITION_DIMENSION_NAME  PARTITION_HIERARCHY_NAME  PARTITION_LEVEL_NAME
------------------------- ------------------------- --------------------
TIME                      CALENDAR                  CALENDAR_YEAR

パーティションの作成と削除

OLAPエンジンでは、パーティション化ディメンションのメンバーの追加または削除に伴い、パーティションの作成や削除がデータ・メンテナンスの一環として自動的に行われます。

たとえば、サンプルのGlobalアナリティック・ワークスペースにおいて、Unitsキューブが、Timeディメンション、Calendar階層およびCalendar Quarterレベルでパーティション化されているとします。OLAPエンジンでは、各Calendar Quarterおよびその子に対してパーティションが作成されます。デフォルトの最上位パーティションには、Calender YearおよびFiscal階層のすべてのメンバーが含まれます。Globalに3年分のデータがある場合、Unitsキューブには、1つのCalender Yearにつき4つある最下位パーティションに最上位パーティションを加えた、計13のパーティションが含まれます。

通常、データがリフレッシュされると、期間が新たに作成されて古い期間は削除されます。Calendar Quarter値がTimeディメンションにロードされると、そのたびに対応するパーティションがキューブに追加されます。また、Calendar Quarter値がTimeディメンションから削除されると、そのたびに対応する空のパーティションがキューブから削除されます。

パラレル化

パラレル処理を有効にすると、データ・メンテナンスのパフォーマンスを向上させることができます。パラレル化には、次に示す2つのレベルがあります。

- パラレル・ジョブ実行: データのロードおよび集計を、複数のプロセスを使用して行います。

- パラレル更新: 一時表領域から永続表領域へのデータの移動を、複数のプロセスを使用して行います。

パラレル処理のプロセス数は、次の要素により制御されます。

- パラレルに集計可能なオブジェクトの数。キューブおよびパーティション（最上位パーティションを含む）ごとに、別々のプロセスを使用できます。
キューブ内のパーティションの数は、Analytic Workspace Managerのキューブ・プロパティ・シートにある「パーティショニング」タブで制御できます。

- 当該ユーザーが実行を許可されている同時データベース・プロセスの数。
この数は、JOB_QUEUE_PROCESSESパラメータで制御されます。SYS権限を持っている場合、このパラメータの現在の設定は次のSQLコマンドで確認できます。

SHOW PARAMETER JOB_QUEUE_PROCESSES

- パラレル更新の場合は、ジョブに割り当てるプロセスの数。プロセスの数は、Analytic Workspace Managerのメンテナンス・ウィザードでタスク処理オプションを指定する際や、キューブの「マテリアライズド・ビュー」タブで指定できます。

- リレーショナル・ソース表から行をフェッチするために、SQLに割り当てるプロセスの数。PARALLEL_DEGREE_POLICYがAUTOまたはLIMITEDに設定されている場合は、SQL文の実行用に追加のプロセスが自動的に割り当てられます。

ここで、TimeディメンションのQuarterレベルでパーティション化され、3年分のデータが含まれているキューブを考えます。このキューブには3×4=12のパーティションがあり、JOB_QUEUE_PROCESSESは8に設定されています。このとき、作成に対するパラレル化オプションを4に設定します。Oracle Databaseでは、PARALLEL_DEGREE_POLICYがデフォルト値のMANUALに設定されている場合に、次の方法でキューブを処理します。

1. キューブの各ディメンションのロードと作成を、ただ1つのプロセスを使用して逐次行います。

2. 12の最下位パーティションのロードと作成を、4つのプロセスを使用してパラレルに行います。1つのプロセスが終了すると同時に別のプロセスが開始され、これを繰り返して12あるパーティションの処理が最後まで行われます。
このキューブに対して使用できるプロセスの数は、本来はJOB_QUEUE_PROCESSESに指定されている8ですが、ここでは作成のオプション設定により4に制限されます。

3. 最上位パーティションのロードと作成が行われます。

PARALLEL_DEGREE_POLICYがAUTOまたはLIMITEDに設定されている場合は、指定した数より多くのプロセスが自動的に割り当てられることがあります。

例7-1は、Unitsキューブおよびそのディメンションの作成に関するCUBE_BUILD_LOGの抜粋です。TimeディメンションのCalendar Yearレベルでパーティション化した結果、1998〜2007に対応する10個の最下位パーティションが作成されました。JOB_QUEUE_PROCESSESは2に設定され、作成に対するパラレル化オプションも2に設定されています。このログは、Oracle DatabaseがGlobalを次のように処理したことを示しています。

1. 4個のディメンションを逐次処理する。

2. Unitsキューブの各パーティションを処理する。

例7-1 Global Unitsキューブの作成ログ

SLAVE_NUMBER STATUS     COMMAND              BUILD_OBJECT    PARTITION
------------ ---------- -------------------- --------------- ---------------
0 STARTED    BUILD
0 STARTED    ATTACH AW RW WAIT
0 COMPLETED  ATTACH AW RW WAIT
0 STARTED    FREEZE
0 COMPLETED  FREEZE
0 STARTED    LOAD NO SYNCH        TIME
0 SQL        LOAD NO SYNCH        TIME
.
.
.
0 SQL        LOAD NO SYNCH        PRODUCT
0 SQL        LOAD NO SYNCH        PRODUCT
0 COMPLETED  LOAD NO SYNCH        PRODUCT
0 STARTED    COMPILE              PRODUCT
0 COMPLETED  COMPILE              PRODUCT
0 STARTED    COMPILE AGGMAP       UNITS_CUBE
0 COMPLETED  COMPILE AGGMAP       UNITS_CUBE
0 STARTED    COMPILE AGGMAP       PRICE_CUBE
0 COMPLETED  COMPILE AGGMAP       PRICE_CUBE
0 STARTED    UPDATE/COMMIT        PRODUCT
0 COMPLETED  UPDATE/COMMIT        PRODUCT
0 STARTED    UPDATE/COMMIT
0 COMPLETED  UPDATE/COMMIT
0 STARTED    REATTACH AW MULTI TH
AW

0 COMPLETED  REATTACH AW MULTI TH
AW

0 STARTED    SLAVE                UNITS_CUBE      P10:CY2007
0 STARTED    SLAVE                UNITS_CUBE      P9:CY2006
1 STARTED    BUILD                                P10:CY2007
1 STARTED    ATTACH AW MULTI THAW UNITS_CUBE      P10:CY2007
1 COMPLETED  ATTACH AW MULTI THAW UNITS_CUBE      P10:CY2007
1 STARTED    ACQUIRE              UNITS_CUBE      P10:CY2007
1 COMPLETED  ACQUIRE              UNITS_CUBE      P10:CY2007
1 STARTED    LOAD                 UNITS_CUBE      P10:CY2007
1 SQL        LOAD                 UNITS_CUBE      P10:CY2007
1 COMPLETED  LOAD                 UNITS_CUBE      P10:CY2007
1 STARTED    UPDATE/COMMIT        UNITS_CUBE      P10:CY2007
1 COMPLETED  UPDATE/COMMIT        UNITS_CUBE      P10:CY2007
.
.
.
10 STARTED    BUILD                                P1:CY1998
10 STARTED    ATTACH AW MULTI THAW UNITS_CUBE      P1:CY1998
10 COMPLETED  ATTACH AW MULTI THAW UNITS_CUBE      P1:CY1998
10 STARTED    ACQUIRE              UNITS_CUBE      P1:CY1998
10 COMPLETED  ACQUIRE              UNITS_CUBE      P1:CY1998
10 STARTED    LOAD                 UNITS_CUBE      P1:CY1998
10 SQL        LOAD                 UNITS_CUBE      P1:CY1998
10 COMPLETED  LOAD                 UNITS_CUBE      P1:CY1998
10 STARTED    SOLVE                UNITS_CUBE      P1:CY1998
10 COMPLETED  SOLVE                UNITS_CUBE      P1:CY1998
10 STARTED    UPDATE/COMMIT        UNITS_CUBE      P1:CY1998
10 COMPLETED  UPDATE/COMMIT        UNITS_CUBE      P1:CY1998
10 STARTED    DETACH AW            UNITS_CUBE      P1:CY1998
10 COMPLETED  DETACH AW            UNITS_CUBE      P1:CY1998
10 COMPLETED  BUILD                                P1:CY1998
0 COMPLETED  SLAVE                UNITS_CUBE      P1:CY1998
0 STARTED    REATTACH AW MULTI TH
AW

0 COMPLETED  REATTACH AW MULTI TH
AW

0 STARTED    SLAVE                UNITS_CUBE      P0
11 STARTED    BUILD                                P0
11 STARTED    ATTACH AW MULTI THAW UNITS_CUBE      P0
11 COMPLETED  ATTACH AW MULTI THAW UNITS_CUBE      P0
11 STARTED    ACQUIRE              UNITS_CUBE      P0
11 COMPLETED  ACQUIRE              UNITS_CUBE      P0
11 STARTED    LOAD                 UNITS_CUBE      P0
11 COMPLETED  LOAD                 UNITS_CUBE      P0
11 STARTED    SOLVE                UNITS_CUBE      P0
11 COMPLETED  SOLVE                UNITS_CUBE      P0
11 STARTED    UPDATE/COMMIT        UNITS_CUBE      P0
11 COMPLETED  UPDATE/COMMIT        UNITS_CUBE      P0
11 STARTED    DETACH AW            UNITS_CUBE      P0
11 COMPLETED  DETACH AW            UNITS_CUBE      P0
11 COMPLETED  BUILD                                P0
0 COMPLETED  SLAVE                UNITS_CUBE      P0
0 STARTED    REATTACH AW RW WAIT
0 COMPLETED  REATTACH AW RW WAIT
0 STARTED    ANALYZE              UNITS_CUBE
0 COMPLETED  ANALYZE              UNITS_CUBE
0 STARTED    THAW
0 COMPLETED  THAW
0 STARTED    DETACH AW
0 COMPLETED  DETACH AW
0 COMPLETED  BUILD

268 rows selected.

Oracle Databaseでは、ジョブのいずれの時点でもすべてのプロセスを同時使用できるかどうかに関係なく、指定された数のプロセスが割り当てられます。たとえば、あるジョブで使用可能なプロセスが最大3個である場合に、5を指定したとします。この場合、そのジョブに割り当てられたプロセスのうちの2個は、そのジョブを含むどのジョブでも使用できません。

Oracle DatabaseとともにReal Application Clusters（Oracle RAC）がインストールされている場合、ジョブ・キューに送られたスクリプトは、クラスタ内のすべてのノードに分散されます。これによりパフォーマンスが著しく向上することがあります。たとえば、あるジョブをクラスタ内の4つのノード上で実行すると、1つのコンピュータ上で実行した場合に比べ、実行速度が最大で4倍になります。

キューブおよびディメンションの分析

アプリケーションにより、単独のキューブに対して直接問合せが実行される場合は、そのキューブに対してオプティマイザ統計を生成する必要はありません。これらの問合せは、アナリティック・ワークスペース内で自動的に最適化されます。

オプティマイザ統計は、2つのキューブ・ビューを結合する問合せ、または1つのキューブ・ビューを表または表のビューに結合する問合せの実行計画を作成する際に使用します。また、キューブ・マテリアライズド・ビューへのコストベース・リライトを行う際にも使用されます。統計を生成する必要があるのは、こうしたタイプの問合せに対してのみです。

オプティマイザ統計の生成には、DBMS_AW_STATS PL/SQLパッケージを使用します。このパッケージは、キューブ・スクリプトの一部として、またはSQL*PlusなどのSQLインタフェースを使用して、Analytic Workspace Managerで実行できます。統計の生成により、パフォーマンスが大きく低下することはありません。

DBMS_AW_STATSの構文は次のとおりです。

DBMS_AW_STATS.ANALYZE
(object       IN VARCHAR2);

引数は、キューブまたはディメンションのどちらかです。例7-2に、Unitsキューブおよびそのディメンションに関する統計を生成するためのサンプル・スクリプトを示します。

例7-2 Unitsキューブに関する統計の生成

BEGIN
DBMS_AW_STATS.ANALYZE('units_cube');
DBMS_AW_STATS.ANALYZE('time');
DBMS_AW_STATS.ANALYZE('customer');
DBMS_AW_STATS.ANALYZE('product');
DBMS_AW_STATS.ANALYZE('channel');
END;
/

統計を直接表示することはできませんが、実行計画を確認することはできます（「実行計画の表示」を参照）。

参照:
『Oracle Databaseパフォーマンス・チューニング・ガイド』

アナリティック・ワークスペースの監視

Oracle Databaseには、パフォーマンス上の問題点を診断するのに役立つ様々なツールが用意されています。これらのツールは、Oracle DBAがデータベースのチューニングを行う上で有用性を発揮します。

- Oracle Enterprise Manager Database Control（Database Control）は、汎用データベース管理ツールです。Database Controlを使用すると、ユーザーの追加やデータファイルの変更など基本的な作業を効率化できるだけでなく、データベースの現在のステータスを視覚的に把握できます。またDatabase Controlは、トラブルシューティングやパフォーマンス・チューニング・ユーティリティのインタフェースを備えています。

- 自動ワークロード・リポジトリでは、分析やチューニングに使用するデータベース・パフォーマンスの統計やメトリックを収集したり、データベースの処理に要した正確な時間の表示やセッション情報の保存を行うことができます。

- 自動データベース診断モニターでは、データベース・パフォーマンス統計が監視され、これに基づいて、ボトルネックの特定、SQL文の分析、パフォーマンス改善のための提案が行われます。

Oracle Databaseには、パフォーマンス上の問題点を診断するのに役立つ様々なシステム・ビューも用意されています。次の項では、OLAPに特化されたビュー、またはOLAPに関連するデータベース情報を表示するビューについて説明します。

動的パフォーマンス・ビュー

各Oracle Databaseインスタンスは、現行のデータベース・アクティビティを記録する固定表を保持します。これらの表は、内部ディスク構造およびメモリー構造のデータを収集します。その中には、Oracle OLAPのデータを収集する表もあります。

これらの表は、一連の動的パフォーマンス・ビューを介してユーザーが利用できます。これらのビューを監視すると、使用方法の傾向を発見し、システムのボトルネックを診断できます。表7-4に、各ビューの簡単な説明を示します。グローバル動的パフォーマンス・ビュー（GV$）も提供されます。

参照:
OLAPの動的パフォーマンス・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

表7-4 OLAPの動的パフォーマンス・ビュー

ビュー

説明

V$AW_AGGREGATE_OP

アナリティック・ワークスペースで使用可能な集計演算子を表示する。

V$AW_ALLOCATE_OP

アナリティック・ワークスペースで使用可能な割当て演算子を表示する。

V$AW_CALC

キャッシュ領域の使用状況および動的集計のステータスに関する情報を収集する。

V$AW_LONGOPS

SQLフェッチに関するステータス情報を収集する。

V$AW_SESSION_INFO

各アクティブ・セッションに関する情報を収集する。

V$AW_OLAP

アクティブなアナリティック・ワークスペースの状態に関する情報を収集する。

表7-5は、OLAPに特化してはいないものの、データベースをOLAP用にチューニングする際に使用することが推奨されるその他の動的パフォーマンス・ビューを示したものです。

表7-5 推奨される動的パフォーマンス・ビュー

ビュー

説明

V$LOG

制御ファイルにあるログ・ファイル情報を表示する。

V$LOGFILE

REDOログ・ファイルに関する情報を表示する。

V$PGASTAT

PGA_AGGREGATE_TARGETが設定されている場合の自動PGAメモリー・マネージャに関する統計、およびPGAメモリーの使用状況に関する統計を表示する。

V$ROWCACHE

データ・ディクショナリのアクティビティに関する統計を表示する。各行に、データ・ディクショナリ・キャッシュの統計が表示される。

V$SYSSTAT

システム統計を表示する。

OLAPオプションを監視するための基本的な問合せ

次に示す問合せは、データ・ディクショナリからOLAP情報を抽出します。DBAビューを問い合せるには、その権限が付与されたアカウントを持っている必要があります。

より複雑な問合せは、スクリプト形式で用意されており、Oracle Technology NetworkのOracle OLAP Webサイトからダウンロードできます。これらのスクリプトおよびダウンロード手順については、「OLAP DBAスクリプト」を参照してください。

OLAPオプションがデータベースにインストールされているかを確認するには

OLAPオプションは、Oracle Database Enterprise Editionで提供されます。OLAPコンポーネントがインストールされていることを確認するには、次のSQLコマンドを発行します。

SELECT comp_name, version, status FROM DBA_REGISTRY
WHERE comp_name LIKE '%OLAP%';

COMP_NAME                VERSION                        STATUS
------------------------ ------------------------------ -----------
OLAP Analytic Workspace  11.2.0.1.0                     VALID
Oracle OLAP API          11.2.0.1.0                     VALID
OLAP Catalog             11.2.0.1.0                     VALID

データベースに存在するアナリティック・ワークスペースを確認するには

DBA_AWSビューは、すべてのアナリティック・ワークスペースに関する情報を提供します。アナリティック・ワークスペースの名前、所有者およびバージョンのリストを取得するには、次のSQLコマンドを使用します。

SELECT owner, aw_name, aw_version FROM DBA_AWS;

OWNER      AW_NAME                        AW_VERSION
---------- ------------------------------ ----------
SYS        EXPRESS                        11.2
GLOBAL     GLOBAL                         11.2
SYS        AWCREATE                       11.2
SH         SH                             11.2
SYS        AWMD                           11.2
SYS        AWXML                          11.2
SYS        AWREPORT                       11.2
SYS        AWCREATE10G                    11.2

参照:
SYSが所有するアナリティック・ワークスペースの説明については、「システム表」を参照してください。

アナリティック・ワークスペースのサイズを確認するには

特定のアナリティック・ワークスペースの表領域エクステントのサイズ（単位はバイト）を確認するには、次のSQL文を使用します。ただし、GLOBALは、対象のアナリティック・ワークスペースの名前に置き換えます。

SELECT extnum, SUM(dbms_lob.getlength(awlob)) bytes FROM global.aw$global
GROUP BY extnum;

EXTNUM      BYTES
---------- ----------
0  191776956

アナリティック・ワークスペースが格納されているLOB表のサイズを確認するには、次のようなSQLコマンドを使用します。ただし、GLOBAL.AW$GLOBALは、アナリティック・ワークスペースの修飾名に置き換えます。

SELECT ROUND(SUM(dbms_lob.getlength(awlob))/1024,0) kb
FROM global.aw$global;

KB
----------
187282

アナリティック・ワークスペースの作成日時を確認するには

DBA_OBJECTSビューは、データベースでのオブジェクトの作成日時を提供します。次のSQLコマンドでは、アナリティック・ワークスペースに関してわかりやすいレポートが生成されます。

SELECT owner, object_name, created, status FROM dba_objects
WHERE object_name LIKE 'AW$%' AND object_name!='AW$'
GROUP BY owner, object_name, created, status
ORDER BY owner, object_name;

OWNER      OBJECT_NAME     CREATED   STATUS
---------- --------------- --------- -------
GLOBAL     AW$GLOBAL       01-APR-09 VALID
SYS        AW$AWCREATE     26-MAR-09 VALID
SYS        AW$AWCREATE10G  26-MAR-09 VALID
SYS        AW$AWMD         26-MAR-09 VALID
SYS        AW$AWREPORT     26-MAR-09 VALID
SYS        AW$AWXML        26-MAR-09 VALID
SYS        AW$EXPRESS      26-MAR-09 VALID

7 rows selected.

OLAP DBAスクリプト

SQLスクリプトがいくつか含まれたファイルを、Oracle Technology NetworkのOracle OLAP Webサイトからダウンロードできます。通常これらのスクリプトは、複数のシステム・ビューから情報を抽出し、データベースの監視やチューニングに利用できるレポートを生成します。このファイルは次のURLからダウンロードできます。

http://www.oracle.com/technology/products/bi/olap/olap_dba_scripts.zip

表7-6は、これらのスクリプトに関する説明をまとめたものです。詳細は、スクリプトに付随しているREADMEファイルを参照してください。

表7-6 OLAP DBAスクリプト

SQLスクリプト

説明

aw_objects_in_cache

アナリティック・ワークスペースに関連のあるバッファ・キャッシュ内のオブジェクトを識別する。

aw_reads_writes

一時表領域および永続表領域からの読込み数、キャッシュへの書込み数、およびアナリティック・ワークスペースで処理された行の数を集計する。

aw_size

各アナリティック・ワークスペースによって使用されているディスク領域の量を表示する。

aw_tablespaces

アナリティック・ワークスペースによって使用されている表領域に関する広範囲の情報を提供する。

aw_users

アナリティック・ワークスペースのユーザーを識別する。

aw_wait_events

この1時間にアナリティック・ワークスペースのユーザーに対して発生した待機イベントを示す。

buffer_cache_hits

バッファ・キャッシュのヒット率を計算する。

cursor_parameters

オープン・カーソルの数を制限するデータベース・パラメータの設定が低すぎないかどうかを示す。

olap_pga_performance

使用されているPGAのサイズ、OLAPページ・プールのサイズ、および各ユーザーのOLAPページのヒット/ミス率を特定する。

olap_pga_use

アナリティック・ワークスペースで処理を行うためにOLAPページ・プールによって消費されているPGAのサイズを特定する。

session_resources

各オープン・セッションのUGA、PGAおよびカーソルの使用状況を識別する。

shared_pool_hits

共有プールのヒット率を計算する。

パフォーマンス監視用スクリプト

「OLAP DBAスクリプト」のリストに表示されているスクリプトの中には、OLAPセッションにおけるメモリーなどのデータベース・リソースの使用状況について、詳細情報を表示できるものがあります。これらのスクリプトをそのまま使用することもできますが、それらを基にして独自のスクリプトを作成することもできます。

例7-3に、session_resourcesスクリプトにより戻された情報を示します。ここには、カーソル、PGAおよびUGAの使用状況がリスト表示されています。

例7-3 セッション・リソースの問合せ

@session_resources

USERNAME             NAME                                VALUE
-------------------- ------------------------------ ----------
GLOBAL:86            opened cursors cumulative             621
opened cursors current                 18
session cursor cache count             50
session cursor cache hits             432
session pga memory                5356368
session pga memory max           10468176
session stored procedure space          0
session uga memory                4230692
session uga memory max            7049780

9 rows selected.

ディスク領域の監視

「OLAP DBAスクリプト」のリストに表示されているスクリプトの中には、アナリティック・ワークスペースにおけるディスク領域の使用状況について、詳細情報を表示できるものがあります。例7-4に、aw_sizeスクリプトにより戻された情報を示します。ここには、データベース内のアナリティック・ワークスペース、それらが消費するディスク領域、およびそれらが格納されている表領域がリスト表示されています。

例7-4 アナリティック・ワークスペースにおけるディスク領域の使用状況の問合せ

@aw_size

Analytic Workspace                            On Disk MB Tablespace
---------------------------------------- --------------- --------------------
GLOBAL.GLOBAL                                     249.31 GLOBAL
SYS.AWCREATE                                        7.81 SYSAUX
SYS.AWCREATE10G                                     1.63 SYSAUX
SYS.AWMD                                            8.00 SYSAUX
SYS.AWREPORT                                        1.63 SYSAUX
SYS.AWXML                                          18.00 SYSAUX
SYS.EXPRESS                                         2.25 SYSAUX
---------------
Total Disk:                                       288.63

7 rows selected.

バックアップとリカバリ

アナリティック・ワークスペースは、データベースのその他の対象と同じツールやプロシージャを使用してバックアップおよびリカバリできます。

Oracle Recovery Manager（RMAN）は、バックアップおよびリカバリについて、処理を簡素化あるいは自動化し、パフォーマンスを向上させる強力なツールです。RMANを使用すると、ワンタイム・バックアップ構成やバックアップの自動管理を行えるだけでなく、ユーザー指定のリカバリ期間に基づくアーカイブ・ログを使用できます。また、再開可能なバックアップ/リストアや、テスト・リストア/リカバリを実行することもできます。

RMANには、バックアップの有効期限を制御するリカバリ期間が実装されています。これにより、論理エラーを検出し、データベースまたは表領域のポイント・イン・タイム・リカバリにより該当オブジェクトを修正することが可能な期間を指定できます。またRMANでは、リカバリ期間のある時点までデータベースをリストアするのに必要がなくなったバックアップは、自動的に無効となります。また、RMANリポジトリが使用できない場合でも、制御ファイルの自動バックアップによりデータベースのリストアやリカバリを行うことができます。

エクスポートとインポート

アナリティック・ワークスペースは、別のコンピュータ上にレプリケートする場合やバックアップする場合には、様々な方法でコピーできます。

- データ・ポンプ。アナリティック・ワークスペースは、スキーマ内の他のオブジェクト、またはデータベース・エクスポートとともにコピーされます。データベース・ユーティリティのexpdp/impdpを使用します。

ヒント:
インポート先のスキーマにOLAP_XS_ADMIN権限が付与されていることを確認します。この権限が付与されていない場合は、必要な権限を持つアナリティック・ワークスペースが作成されません。

- トランスポータブル表領域。アナリティック・ワークスペースは、他のオブジェクトとともにトランスポータブル表領域にコピーされます。ただし、OLAP DECIMALデータ型はハードウェアに依存するため、表領域のトランスポート先は同じプラットフォームに限られます（LinuxからLinux、SolarisからSolaris、WindowsからWindowsなど）。データベース・ユーティリティのexpdp/impdbを使用します。トランスポータブル表領域は、ダンプ・ファイルよりもはるかに高速です。

- XMLテンプレート。テンプレートに、アナリティック・ワークスペース内にあるオブジェクトのXML定義が保存されます。アナリティック・ワークスペース全体を保存することも、キューブ、ディメンションおよび計算済メジャーを個々に保存することもできます。保存したテンプレートを使用すると、既存のものとまったく同じアナリティック・ワークスペースを作成できます。テンプレートには、データや、アナリティック・ワークスペースに対するカスタマイズ内容は保存されません。テンプレートは別のプラットフォームにコピーできます。

アナリティック・ワークスペースの所有者は、XMLテンプレートの作成と、スキーマのダンプ・ファイルへのエクスポートを行うことができます。データベース全体をエクスポートしたりトランスポータブル表領域を作成したりできるのは、EXP_FULL_DATABASE権限のあるユーザーまたは特権ユーザー（SYSユーザーやDBAロールを持つユーザーなど）のみです。

参照:

- XMLテンプレートについては、「テンプレートを使用した次元モデルの再作成」を参照してください。

- Oracle Data Pumpおよびexpdp/impdpコマンドについては、『Oracle Databaseユーティリティ』を参照してください。

キューブ・マテリアライズド・ビュー

作成時にマテリアライズド・ビューの機能を使用して拡張したOracle OLAPキューブを、キューブ・マテリアライズド・ビューといいます。

参照:
「キューブへのマテリアライズド・ビュー機能の追加」

データ・ディクショナリからの情報の取得

データ・ディクショナリには、マテリアライズド・ビューに関する情報を提供する様々な静的ビューが用意されています。これらのビューには、キューブ・マテリアライズド・ビューがその他すべてのマテリアライズド・ビューと一緒にリスト表示されます。

参照:
データ・ディクショナリ・ビューの詳細は、『Oracle Databaseリファレンス』を参照してください。

キューブ・マテリアライズド・ビューの識別

USER_MVIEWSでは、現在のユーザーが所有するマテリアライズド・ビューが各行に1つずつ表示されます。次の問合せを行うと、GLOBALユーザーが所有するマテリアライズド・ビューがリスト表示されます。各キューブ・マテリアライズド・ビューは、接頭辞CB$により識別されます。

SELECT mview_name, refresh_mode "MODE", refresh_method "METHOD",
last_refresh_date "DATE", staleness FROM user_mviews;

MVIEW_NAME               MODE     METHOD   DATE            STALENESS
------------------------ -------- -------- --------------- ----------
CB$CUSTOMER_MARKET       DEMAND   COMPLETE 20-MAR-09       UNKNOWN
CB$CHANNEL_PRIMARY       DEMAND   COMPLETE 20-MAR-09       UNKNOWN
CB$CUSTOMER_SHIPMENTS    DEMAND   COMPLETE 20-MAR-09       UNKNOWN
CB$PRODUCT_PRIMARY       DEMAND   COMPLETE 20-MAR-09       UNKNOWN
CB$TIME_CALENDAR         DEMAND   COMPLETE 20-MAR-09       UNKNOWN
CB$TIME_FISCAL           DEMAND   COMPLETE 20-MAR-09       UNKNOWN
CB$UNITS_CUBE            DEMAND   FORCE    20-MAR-09       UNKNOWN

7 rows selected.

この例は、Analytic Workspace Managerにより定義されたキューブ・マテリアライズド・ビューを、ディメンション階層およびキューブごとにそれぞれ1つずつ示したものです。

リフレッシュ・ログの識別

Oracle Databaseでは、キューブ・マテリアライズド・ビューのマスター表にログを保持できます。これらのログは、キューブの増分（高速）リフレッシュをサポートしています。リレーショナル・スキーマ・アドバイザにより生成されたスクリプトを使用すると、ファクト表およびディメンション表ごとに、データに対するすべての変更を記録するためのログが作成されます。次の問合せを行うと、GLOBALユーザーが所有するマテリアライズド・ビュー・ログがリスト表示されます。

SELECT master, log_table FROM user_mview_logs;

MASTER                         LOG_TABLE
------------------------------ ------------------------------
CHANNEL_DIM                    MLOG$_CHANNEL_DIM
CUSTOMER_DIM                   MLOG$_CUSTOMER_DIM
PRODUCT_DIM                    MLOG$_PRODUCT_DIM
TIME_DIM                       MLOG$_TIME_DIM
UNITS_FACT                     MLOG$_UNITS_FACT

データ・リフレッシュの開始

Analytic Workspace ManagerまたはPL/SQLパッケージを使用してキューブ・マテリアライズド・ビューのデータ・リフレッシュを開始する方法には、いくつかの選択肢があります。

- 自動リフレッシュ: キューブの「マテリアライズド・ビュー」タブで、マテリアライズド・ビュー・リフレッシュ・サブシステムの通常のスケジュールを作成できます（「キューブへのマテリアライズド・ビュー機能の追加」を参照）。

- メンテナンス・ウィザード: メンテナンス・ウィザードを使用して、キューブ・マテリアライズド・ビューを含めたすべてのキューブおよびディメンションのリフレッシュを行えます。

- DBMS_CUBE: DBMS_CUBE PL/SQLパッケージを使用して、すべてのキューブ、キューブ・ディメンションおよびキューブ・マテリアライズド・ビューのリフレッシュを行えます。

- DBMS_MVIEW: DBMS_MVIEW PL/SQLパッケージには、キューブ・マテリアライズド・ビューに使用するためのプロシージャがいくつか含まれています。

DBMS_CUBEの使用

DBMS_CUBEは、アナリティック・ワークスペースの作成および移入に使用できます。また、キューブ・マテリアライズド・ビューを含めたあらゆるキューブのメンテナンスにも使用できます。

次のコマンドを実行すると、キューブ・マテリアライズド・ビューとして使用されているUNITS_CUBEの完全リフレッシュが開始されます。このコマンドでは、キューブのリフレッシュが行われる前に、古いディメンションがすべて自動的にリフレッシュされます。

EXECUTE dbms_cube.build('GLOBAL.UNITS_CUBE');

USER_MVIEWSからリフレッシュ・メソッドを指定できます（「キューブ・マテリアライズド・ビューの識別」を参照）。

DBMS_MVIEWの使用

DBMS_MVIEWは、あらゆるタイプのマテリアライズド・ビューのリフレッシュに使用できます。次のリフレッシュ・プロシージャは、キューブ・マテリアライズド・ビューにも使用できます。

- REFRESHを使用すると、1つ以上のマテリアライズド・ビューがまとめてリフレッシュされます。

- REFRESH_ALL_MVIEWSを使用すると、一定の条件を満たすすべてのマテリアライズド・ビューがリフレッシュされます。

- REFRESH_DEPENDENTを使用すると、特定のマスター表に依存し一定の条件を満たすすべてのマテリアライズド・ビューがリフレッシュされます。

ディメンションは、キューブより先にリフレッシュする必要があります。キューブ・マテリアライズド・ビューをリフレッシュする際、それに関連するいずれかのディメンション・マテリアライズド・ビューが失効している場合は、エラーが発生します。DBMS_MVIEWに含まれるプロシージャを使用すると、1回のコールで複数のマテリアライズド・ビューをリフレッシュすることが可能ですが、リフレッシュの順序は保証されません。リフレッシュの順序を制御するには、ディメンション・マテリアライズド・ビューからキューブ・マテリアライズド・ビューに対してDBMS_MVIEW.REFRESHを別々にコールします。

次のコマンドを実行すると、CHANNEL_PRIMARY階層に対してマテリアライズド・ビューのリフレッシュが開始されます。

EXECUTE dbms_mview.refresh('CB$CHANNEL_PRIMARY', 'C');

リフレッシュ・メソッド

Analytic Workspace Managerでは、キューブのリフレッシュに使用するメソッドとして、COMPLETE、FASTまたはFORCEを指定できます。FAST_PCT、FAST_SOLVEという追加的な2つのメソッドは、マテリアライズド・ビュー・サブシステムにより起動されます。この2つのメソッドを個別に選択することはできません。

リフレッシュ・メソッドの説明

表7-7は、キューブ・マテリアライズド・ビューでサポートされているリフレッシュ・メソッドの説明をまとめたものです。

表7-7 キューブ・マテリアライズド・ビュー用のリフレッシュ・メソッド

リフレッシュ・メソッド

説明

COMPLETE

キューブを削除後、再作成する。

このオプションでは、ソース表からキューブへのどのような複雑なマッピングでもサポート。

FAST

マテリアライズド・ビュー・ログ、またはダイレクト・パス・ロード後のALL_SUMDELTAデータ・ディクショナリ・ビューに基づいて、変更された値のみをロードして再集計する。

リフレッシュされるソースは、元のマップされたソースではなく、マテリアライズド・ビュー・ログに記録されている増分。これらの増分によって、段階的にキューブの再作成が行われる。再集計されるのは、変更された値に影響を受けるセルのみ。

このオプションでは、キューブ・マテリアライズド・ビューに対する単純なマッピングのみをサポート。つまり、マッピングを定義する問合せの中には、式（table.column以外）、ビュー、集計は現れない。

FASTリフレッシュとFAST_PCTリフレッシュのどちらを実行するかは、マテリアライズド・ビュー・サブシステムにより決定される。この方法については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照。

FAST_PCT

変更されたパーティションのデータのみをロードして再集計する。このメソッドは、ソース表とキューブが同一のディメンションでパーティション化されている場合に最適。

FAST_PCTでは、変更ログは使用しない。FASTリフレッシュとFAST_PCTリフレッシュのどちらを実行するかは、マテリアライズド・ビュー・サブシステムにより決定される。この方法については、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照。

FAST_SOLVE

マップされた元のデータソースに基づいて、変更された値のみをロードして再集計する。

FAST_SOLVEはキューブ・マテリアライズド・ビュー専用のタイプのリフレッシュ。このリフレッシュでは、リフレッシュ・ソースが、マテリアライズド・ビュー・ログではなく元のマップされたソースであっても、キューブの再集計が段階的に行われる。段階的なキューブの再集計は、集計サブシステムにより検出される差分に基づいて行われる。

このオプションでは、ソース表からキューブへのどのような複雑なマッピングでもサポート。FAST_SOLVEリフレッシュが行われたかどうかは、CUBE_BUILD_LOG表で確認する（「FAST SOLVEリフレッシュ」を参照）。または、ALL_MVIEWのLAST_REFRESH_TYPE列を確認する。FAST_SOLVEリフレッシュはFAST_CSとして表示される。

FORCE

最適なメソッドを使用して、値をロードして再集計する。

COMPLETEリフレッシュが不要な場合、マテリアライズド・ビュー・システムでは、最初にFASTリフレッシュが試行される。キューブ・マテリアライズド・ビューに対してFASTリフレッシュが実行できない場合は、FAST_SOLVEリフレッシュが実行される。

FAST SOLVEリフレッシュ

FAST SOLVEメソッドが使用されると、作成ログのリストにはCLEAR LEAVESコマンドが表示されます。例7-5に、UNITS_CUBEの作成に関連するCUBE_BUILD_LOGの行を示します。

参照:
「メンテナンス・ログ」

例7-5 FAST SOLVEリフレッシュが行われたかどうかの確認

SELECT build_object, status, command FROM cube_build_log
WHERE build_object='UNITS_CUBE'
AND build_id=8;

BUILD_OBJECT STATUS     COMMAND
------------ ---------- -------------------------
UNITS_CUBE   STARTED    COMPILE AGGMAP
UNITS_CUBE   COMPLETED  COMPILE AGGMAP
UNITS_CUBE   STARTED    UPDATE
UNITS_CUBE   COMPLETED  UPDATE
UNITS_CUBE   STARTED    CLEAR LEAVES
UNITS_CUBE   COMPLETED  CLEAR LEAVES
UNITS_CUBE   STARTED    LOAD
UNITS_CUBE   COMPLETED  LOAD
UNITS_CUBE   STARTED    SOLVE
UNITS_CUBE   COMPLETED  SOLVE
UNITS_CUBE   STARTED    UPDATE
UNITS_CUBE   COMPLETED  UPDATE
UNITS_CUBE   STARTED    ANALYZE
UNITS_CUBE   COMPLETED  ANALYZE

14 rows selected.

クエリー・リライトの使用

クエリー・リライトは、マスター表から結果セットを計算するかわりに、問合せを変更してマテリアライズド・ビューのデータを選択する機能です。変換はクライアントに対して完全に透過的であり、変換を行う際、SQL文の中にマテリアライズ・ビューを指定する必要はありません。キューブ・マテリアライズ・ビューの場合、問合せは、スター・スキーマまたはスノーフレーク・スキーマの表またはビューに対する問合せとして記述され、キューブ・マテリアライズ・ビューに対する問合せに変換されます。この変換により、実行時のパフォーマンスが大幅に向上します。

クエリー・リライトには、キューブおよびディメンションに関するオプティマイザ統計が必要です。ある問合せに対してクエリー・リライトが実行されるかどうかは、その実行計画を生成し検証することにより判断できます。

Oracle Databaseでは、次の2つの初期化パラメータを使用してクエリー・リライトが制御されます。

- QUERY_REWRITE_ENABLED: データベース全体を対象にクエリー・リライトを有効にするか無効にするかが指定されます。

- QUERY_REWRITE_INTEGRITY: クエリー・リライトによりマテリアライズド・ビューとソース・データとの整合性を監視する程度が指定されます。キューブ・マテリアライズド・ビューに対するクエリー・リライトを使用する場合は、trusted設定またはstale tolerated設定を使用することをお薦めします。

キューブ・マテリアライズド・ビューの管理は他のマテリアライズド・ビューの管理と同様に行います。ただし、キューブ・マテリアライズド・ビューはアナリティック・ワークスペースと同じスキーマ内にあることが必要です。ユーザーが自身のスキーマ以外のスキーマにあるマテリアライズド・ビューをリライトするには、GLOBAL QUERY REWRITE権限が必要となります。ただし、所有者の場合は、追加権限なしでどのスキーマからでもマテリアライズド・ビューにアクセスできます。

参照:

- オプティマイザ統計については、「キューブおよびディメンションの分析」を参照してください。

- 実行計画については、「実行計画の表示」を参照してください。

- 初期化パラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。

キューブ・マテリアライズド・ビューに関する追加情報の取得

Oracle Databaseには、マテリアライズド・ビューを管理するためのPL/SQLパッケージが数多く用意されています。ただし、キューブ・マテリアライズド・ビューは、パフォーマンスが最も高くなるよう最適化されているため、これらのパッケージの大部分は使用する必要がありません。また設計について、ユーザーが決定すべき事柄もほとんどありません。そのため、キューブ・マテリアライズド・ビューに対しては、DBMS_ADVISORのTUNE_MVIEWプロシージャは無効となっています。

ただし、状況によっては有用性を発揮するパッケージもあります（表7-8を参照）。

表7-8 キューブ・マテリアライズド・ビュー用のPL/SQLパッケージ

パッケージ

説明

DBMS_METADATA

オブジェクトに関するメタデータを返す。

DBMS_MVIEW

データ・リフレッシュを実行する。「データ・リフレッシュの開始」を参照。

EXPLAIN_REWRITEプロシージャおよびEXPLAIN_MVIEWプロシージャを使用すると、キューブ・マテリアライズド・ビューに関する情報を取得可能。EXPLAIN_MVIEWはキューブのFASTリフレッシュ機能を評価したり確認する際に特に役立ちます。

DBMS_XPLAN

実行計画を表示する。「実行計画の表示」を参照。

8 セキュリティ

Oracle OLAPでは、Oracle Databaseの標準セキュリティ・メカニズムによりデータが保護されます。

この章では、次の項目について説明します。

- Oracle Databaseにおける多次元データのセキュリティ

- オブジェクト・セキュリティの設定

- ディメンションおよびキューブに対するデータ・セキュリティ・ポリシーの作成

Oracle Databaseにおける多次元データのセキュリティ

企業が保持しているデータは、貴重な財産です。データが持つ情報は、機密性を確保し、保護する必要があります。中でも分析データは、十分に組織化され、ナビゲートが容易であり、明確な意味を持つ単位にまとめられているため、脆弱性が高くなっています。

Oracle OLAPを使用すると、データはデータベースに格納されます。Oracle OLAPでは、Oracle Databaseが持つセキュリティを利用できるため、企業の安全性が高まります。データをスタンドアロン・データベースに転送して、データを危険にさらす必要はありません。また、別のシステム上でセキュリティを管理する必要がないので、Oracle Databaseより安全性の低い環境にデータを格納して、データを危険にさらす必要もありません。

セキュリティ管理

管理すべきシステムは1つしかないため、次のような基本的なセキュリティ・タスクをレプリケートする必要はありません。

- ユーザー・アカウントの作成

- パスワード保護ルールの作成と管理

- ネットワーク接続の保護

- セキュリティ脆弱性の検出と除去

- 侵入者からのシステムの保護

データ・セキュリティの基礎となるのは、ユーザー・アカウントおよびユーザー・ロールの管理です。ユーザーは、ユーザー名とパスワードを使用してOracle Databaseとの接続を開始します。接続を開始したユーザーは、同一のセッション内で次元オブジェクトにもリレーショナル・オブジェクトにもアクセスできます。

セキュリティのタイプ

デフォルトでは、各ユーザーには、別ユーザーのスキーマにあるアナリティック・ワークスペースやその他のデータ型へのアクセス権は付与されていません。スキーマの所有者または管理者が、各ユーザーまたは各ユーザーが属するロールに対してアクセス権限を付与する必要があります。

Oracle OLAPは、オブジェクト・セキュリティおよびデータ・セキュリティという、2つのタイプのセキュリティを備えています。

- オブジェクト・セキュリティでは、次元オブジェクトへのアクセスを可能にします。他のユーザーが次元オブジェクトにアクセスできるようにするには、その前にオブジェクト・セキュリティを設定する必要があります。オブジェクト・セキュリティは、SQLのGRANTおよびREVOKEを使用して実装されます。

- データ・セキュリティでは、セル・レベルでデータのファイングレイン制御を行えます。このタイプのセキュリティはオプションです。データ・セキュリティ・ポリシーの定義が必要となるのは、キューブの特定の領域に対するアクセスを制限する場合のみです。データ・セキュリティは、Oracle DatabaseのXML DBセキュリティを使用して実装されます。

データ・セキュリティおよびオブジェクト・セキュリティはともに、Analytic Workspace Managerで管理できます。オブジェクト・セキュリティに対しては、SQLのGRANTおよびREVOKEも使用できます。

権限について

オブジェクト・セキュリティおよびデータ・セキュリティを使用すると、次の権限を付与したり取り消すことができます。

- 変更: キューブまたはディメンションの定義を変更します。次元モデルの作成や変更を行うにはこの権限が必要です。

- 削除: 古いディメンション・メンバーを削除します。ディメンションをリフレッシュするにはこの権限が必要です。

- 挿入: 新規のディメンション・メンバーを追加します。ディメンションをリフレッシュするにはこの権限が必要です。

- 選択: キューブまたはディメンションに対する問合せを行います。キューブまたはディメンションのビューに対して問合せを行う場合、またはCUBE_TABLE関数を使用する場合にはこの権限が必要です。CUBE_TABLEは、次元オブジェクトの値を戻すSQL関数です。

- 更新: キューブのデータ値やディメンション・メンバーの名前を変更します。ディメンションやキューブをリフレッシュするにはこの権限が必要です。

これらの権限は、Analytic Workspace Managerで次元オブジェクトの作成や管理を行う場合や、SQLを使用して次元オブジェクトに問合せを行う場合に使用します。SQLのINSERTやUPDATEなどのコマンドを、キューブやディメンションに対して直接発行することはありません。

階層化されたセキュリティ

次元オブジェクトの場合、次の各レベルでセキュリティを管理できます。

- ディメンション・メンバー

- ディメンション

- キューブ

- アナリティック・ワークスペース

- ビュー

- マテリアライズド・ビュー

権限が階層化されていることにより、たとえば、Software製品に対するSELECTデータ・セキュリティを持つユーザーは、同時に、PRODUCTディメンションおよびGlobalアナリティック・ワークスペースに対するSELECTオブジェクト・セキュリティも持っている必要があります。ユーザーには、次元オブジェクトのビューに対するSELECT権限も必要です。

次元オブジェクトのビューおよびマテリアライズド・ビューに対するセキュリティ管理は、データベース内のその他のビューやマテリアライズド・ビューの場合と同様に行います。

オブジェクト・セキュリティの設定

オブジェクト・セキュリティの設定は、SQLとAnalytic Workspace Managerのどちらを使用しても行えます。どれを使用しても結果は同じです。

SQLを使用したオブジェクト・セキュリティの設定

SQLのGRANTコマンドおよびREVOKEコマンドを使用して、次元オブジェクトに対するオブジェクト権限を付与したり取り消すことができます。

アナリティック・ワークスペースに対するオブジェクト・セキュリティの設定

アナリティック・ワークスペースに対するオブジェクト権限は、単にコンテナを開くためのものです。ユーザーがキューブやディメンションにアクセスできるようにするには、そのキューブやディメンションに対するオブジェクト権限を付与する必要があります。表の名前は、アナリティック・ワークスペースの名前に接頭辞「AW$」を付け加えたものになります。

次のコマンドを実行すると、ScottがGlobalアナリティック・ワークスペースAW$GLOBALをセッションにアタッチできるようになります。

GRANT SELECT ON aw$global TO scott;

ディメンションに対するオブジェクト・セキュリティの設定

個々のディメンションに対する権限を付与することにより、ユーザーはそのディメンションのメンバーや属性に問合せを行うことができるようになります。キューブに問合せを行うためには、そのキューブのすべてのディメンションについて権限が付与されている必要があります。

これらの権限はディメンション全体に適用されます。ただし、ディメンションに対してファイングレイン・アクセスを設定することにより、権限を制限できます（「ディメンションおよびキューブに対するデータ・セキュリティ・ポリシーの作成」を参照）。

例8-1に、ScottがProductディメンションに問合せを行えるようにするためのSQLコマンドを示します。このコマンドを実行すると、Productディメンション、Globalアナリティック・ワークスペースおよびProductビューに対するSELECT権限がScottに付与されます。

例8-1 Productディメンションへの問合せ権限

GRANT SELECT ON product TO scott;
GRANT SELECT ON aw$global TO scott;
GRANT SELECT ON product_view TO scott;

キューブに対するオブジェクト・セキュリティの設定

キューブに対する権限を付与すると、ユーザーは、ビジネス・メジャーへのアクセスや分析の実行が可能になります。キューブの各ディメンションに対する権限も付与する必要があります。

これらの権限はキューブ全体に適用されます。ただし、キューブまたはそのディメンションに対してデータ・セキュリティ・ポリシーを作成することにより、権限を制限できます（「ディメンションおよびキューブに対するデータ・セキュリティ・ポリシーの作成」を参照）。

例8-2に、ScottがUnitsキューブに問合せを行えるようにするためのSQLコマンドを示します。このコマンドを実行すると、Globalアナリティック・ワークスペース、キューブおよびそのすべてのディメンションに対するSELECT権限がScottに付与されます。またScottは、書式設定されたレポートに使用するディメンション属性の問合せを行えるように、ディメンション・ビューに対する権限も取得します。

例8-2 Unitsキューブへの問合せ権限

/* Grant privileges on the analytic workspace */
GRANT SELECT ON global.aw$global TO scott;

/* Grant privileges on the cube */
GRANT SELECT ON global.units_cube TO scott;

/* Grant privileges on the dimensions */
GRANT SELECT ON global.channel TO scott;
GRANT SELECT ON global.customer TO scott;
GRANT SELECT ON global.product TO scott;
GRANT SELECT ON global.time TO scott;

/* Grant privileges on the cube, dimension, and hierarchy views */
GRANT SELECT ON global.units_cube_view TO scott;
GRANT SELECT ON global.channel_view TO scott;
GRANT SELECT ON global.channel_primary_view TO scott;
GRANT SELECT ON global.customer_view TO scott;
GRANT SELECT ON global.customer_shipments_view TO scott;
GRANT SELECT ON global.customer_segments_view TO scott;
GRANT SELECT ON global.product_view TO scott;
GRANT SELECT ON global.product_primary_view TO scott;
GRANT SELECT ON global.time_view TO scott;
GRANT SELECT ON global.time_calendar_view TO scott;
GRANT SELECT ON global.time_fiscal_view TO scott;

例8-3に、SCOTTに対し、リレーショナル表のディテール・レベルのデータを問い合せる権限と、クエリー・リライトを使用してUnitsキューブからサマリー・データを取得する権限を付与するSQLコマンドを示します。

例8-3 クエリー・リライトでのキューブ・マテリアライズド・ビュー使用権限

/* Grant privileges on materialized views using query rewrite */
GRANT GLOBAL QUERY REWRITE TO scott;

/* Grant privileges on the relational source tables */
GRANT SELECT ON global.channel_dim TO scott;
GRANT SELECT ON global.customer_dim TO scott;
GRANT SELECT ON global.product_dim TO scott;
GRANT SELECT ON global.time_dim TO scott;
GRANT SELECT ON global.units_fact TO scott;

/* Grant privileges on the analytic workspace */
GRANT SELECT ON global.aw$global TO scott;

/* Grant privileges on the cube */
GRANT SELECT ON global.units_cube TO scott;

/* Grant privileges on the dimensions */
GRANT SELECT ON global.channel TO scott;
GRANT SELECT ON global.customer TO scott;
GRANT SELECT ON global.product TO scott;
GRANT SELECT ON global.time TO scott;

例8-4に、Analytic Workspace Managerを使用してGLOBALのすべての次元オブジェクトに対する変更および更新を行うための権限をSCOTTに付与するSQLコマンドを示します。

注意:
GRANT ALLコマンドを使用すると、この章で説明した権限以外にも様々な権限が付与されます。GRANT ALLを使用する場合は必ず、事前に権限のリストを確認してください。

例8-4 GLOBALの変更権限およびリフレッシュ権限

/* Grant privilege to use Analytic Workspace Manager */
GRANT OLAP_USER TO scott;

/* Grant privileges on the analytic workspace */
GRANT ALL ON global.aw$global TO scott;

/* Grant privileges on the cubes */
GRANT ALL ON global.units_cube TO scott;
GRANT ALL ON global.price_cost_cube TO scott;

/* Grant privileges on the dimensions */
GRANT ALL ON global.channel TO scott;
GRANT ALL ON global.customer TO scott;
GRANT ALL ON global.product TO scott;
GRANT ALL ON global.time TO scott;

Analytic Workspace Managerを使用したオブジェクト・セキュリティの設定

Analytic Workspace Managerでは、グラフィカル・ユーザー・インタフェースを使用してオブジェクト・セキュリティを設定できます。また、表示されるSQLコマンドを切り取ってスクリプトに貼り付けることも可能です。

アナリティック・ワークスペースに対するオブジェクト・セキュリティの設定

Analytic Workspace Managerでは、次の手順に従ってアナリティック・ワークスペースに対するオブジェクト・セキュリティの設定を行います。

1. ナビゲーション・ツリーでアナリティック・ワークスペースを右クリックし、「アナリティック・ワークスペースのオブジェクト・セキュリティの設定」を選択します。
「アナリティック・ワークスペースのオブジェクト・セキュリティの設定」ダイアログ・ボックスが表示されます。

2. ダイアログ・ボックスで必要な操作が完了したら、「OK」をクリックします。
各項目の詳細を参照する場合は「ヘルプ」をクリックします。

3. 1つ以上のキューブおよびそのディメンションに対する権限を付与します。
アナリティック・ワークスペースに対する権限を付与しても、アナリティック・ワークスペース内のキューブおよびディメンションにまで適用範囲が自動的に拡張されることはありません。

図8-1に、GLOBALに対するSELECT権限がPUBLICに付与されたところを示します。

図8-1 GLOBALに対するオブジェクト・セキュリティの設定

「図8-1 GLOBALに対するオブジェクト・セキュリティの設定」の説明

ディメンションに対するオブジェクト・セキュリティの設定

Analytic Workspace Managerでは、次の手順に従ってディメンションに対するオブジェクト・セキュリティの設定を行います。

1. ナビゲーション・ツリーでいずれかのディメンションを右クリックし、「ディメンションのオブジェクト・セキュリティの設定」を選択します。
「ディメンションのオブジェクト・セキュリティの設定」ダイアログ・ボックスが表示されます。

2. ダイアログ・ボックスで必要な操作が完了したら、「OK」をクリックします。
権限の設定は、すべてのディメンションに対して同時に行えます。各項目の詳細を参照する場合は「ヘルプ」をクリックします。

3. アナリティック・ワークスペースおよび1つ以上のキューブに対する権限を付与します。ビューに対する権限の付与にはSQLを使用します。

図8-2に、ディメンションに対するSELECT権限がPUBLICに付与されたところを示します。

図8-2 ディメンションに対するオブジェクト・セキュリティの設定

「図8-2 ディメンションに対するオブジェクト・セキュリティの設定」の説明

キューブに対するオブジェクト・セキュリティの設定

Analytic Workspace Managerでは、次の手順に従ってキューブに対するオブジェクト・セキュリティの設定を行います。

1. ナビゲーション・ツリーでいずれかのキューブを右クリックし、「キューブのオブジェクト・セキュリティの設定」を選択します。
「キューブのオブジェクト・セキュリティの設定」ダイアログ・ボックスが表示されます。

2. ダイアログ・ボックスで必要な操作が完了したら、「OK」をクリックします。
権限の設定は、すべてのキューブに対して同時に行えます。各項目の詳細を参照する場合は「ヘルプ」をクリックします。

3. キューブのディメンションおよびアナリティック・ワークスペースに対する権限を付与します。ビューに対する権限の付与にはSQLを使用します。

ディメンションおよびキューブに対するデータ・セキュリティ・ポリシーの作成

データ・セキュリティ・ポリシーを使用すると、選択したディメンション・メンバーに対する権限を、ユーザーおよびロールに付与できます。たとえば、地域担当販売部長の権限の適用範囲を、あらゆる地域のデータではなく、本人が担当する地域のデータに制限できます。データ・セキュリティ・ポリシーは、ディメンション、キューブまたはその双方に対して作成可能です。

- あるディメンションに対して作成されたデータ・セキュリティ・ポリシーは、そのディメンションが含まれるすべてのキューブにまで、適用範囲が拡張されます。キューブごとにポリシーを作成する必要はありません。

- あるキューブに対してデータ・セキュリティ・ポリシーを作成する場合は、そのキューブに含まれる各ディメンションについてメンバーを選択します。ポリシーは、対象となるキューブにのみ適用されます。

- ディメンションとキューブの双方に対してデータ・セキュリティ・ポリシーを作成した場合、どちらのポリシーにも定義されているデータにかぎり、その権限がユーザーに付与されます。

データ権限の付与

各ポリシーは、1つ以上のユーザー、ロールおよびデータ・セキュリティ・ロールに適用できます。データ・セキュリティ・ロールとは、Analytic Workspace Managerで管理可能なユーザーまたはデータベース・ロールのグループで、セキュリティ・ポリシーにのみ使用できます。データ・セキュリティ・ロールおよびデータ・セキュリティ・ポリシーは、Analytic Workspace Managerで作成します。

データ・セキュリティ・ポリシーを作成した時点で、その対象でないすべてのユーザーは、自動的にアクセスを拒否されます。Analytic Workspace Managerでは、所有者にすべての権限を付与するデフォルト・ポリシーが作成されます。デフォルト・ポリシーが作成されない場合は、所有者であってもアクセスは拒否されます。

注意:
デフォルト・ポリシーは削除しないようにしてください。自分自身のデータに対するアクセス権限は、デフォルト・ポリシーにより付与されます。

条件に基づくデータの選択

データ・セキュリティ・ポリシーを定義するとき、特定のディメンション・メンバー、またはディメンション階層に基づいた特定の条件を満たすディメンション・メンバーを選択できます。特定のディメンション・メンバーをハードコードするかわりに条件を使用することで、データをリフレッシュした後も選択内容が有効に保たれます。メンバーを追加した後も、選択内容を変更する必要はありません。たとえば、すべてのHardware製品にSELECT権限を付与するセキュリティ・ポリシーは、PRODUCTディメンションにおいて古い製品が削除され新規製品が追加された場合でも引き続き有効です。

注意:
Analytic Workspace Managerでデータ・セキュリティ・ポリシーを管理するには、OLAP_XS_ADMINロールが必要です。

Analytic Workspace Managerでのデータ・セキュリティ・ポリシーの作成手順:

1. ディメンションまたはキューブのフォルダを開きます。

2. 「データ・セキュリティ」を右クリックし、「データ・セキュリティ・ポリシーの作成」を選択します。
データ・セキュリティ・ポリシーの作成ダイアログ・ボックスが表示されます。

3. 「一般」タブの「データ・セキュリティ・ポリシー名」フィールドに、内容を表すような名前を入力します。

4. 「ユーザーまたはロールの追加」をクリックします。
「ユーザーまたはロールの追加」ダイアログ・ボックスが表示されます。

5. このポリシーを適用するユーザー、ロールまたはOLAPデータ・セキュリティ・ロールを選択します。選択したら、「OK」をクリックしてダイアログ・ボックスを閉じます。
選択したユーザーやロールはこの時点で、「一般」タブの表にリスト表示されます。

6. 各ユーザーまたはロールに付与する権限を選択します。

7. 「メンバーの選択」タブで、ディメンション・メンバーまたは条件を選択します。キューブの場合は、ディメンションごとに有効範囲を選択します。

8. 「OK」をクリックし、データ・セキュリティ・ポリシーを保存します。
ディメンションに対応する「データ・セキュリティ」フォルダのナビゲーション・ツリーに、データ・セキュリティ・ポリシーが表示されます。

9. これらのユーザーおよびロールに、ディメンションまたはキューブ、およびアナリティック・ワークスペースに対するオブジェクト権限を付与します。

参照:

- 「ディメンションに対するオブジェクト・セキュリティの設定」

- 「アナリティック・ワークスペースに対するオブジェクト・セキュリティの設定」

図8-3に、PRODUCTに対するデータ・セキュリティ・ポリシーの「メンバーの選択」タブを示します。このポリシーに基づいてPRODUCTディメンションに対する権限を付与されているユーザーは、すべてのHardware製品にアクセスできます。ただし、Software製品およびTotal Productにはアクセスできません。

図8-3 HardwareおよびDescendantsへのProductの制限

「図8-3 HardwawreおよびDescendantsへのProductの制限」の説明

参照:
データ・セキュリティ・ロールの作成については、Analytic Workspace Managerのヘルプを参照してください。

9 高度な集計

キューブでは常に、必要に応じてサマリー・データが問合せに戻されます。キューブでは、たとえば日レベルでデータが格納できる一方、問合せにおける計算を必要とせずに四半期または年レベルで結果を戻すことができます。この章では、Oracle OLAPのユニークな集計サブシステムを最適化し、データのメンテナンスと問合せの両方に対して最高のパフォーマンスを提供する方法について説明します。

この章では、次の項目について説明します。

- 集計とは

- 集計演算子

- 集計の順序によって結果が異なるケース

- 例: Unitsキューブの集計

集計とは

集計とは、複数の値を1つの値に集約するプロセスです。たとえば、データを日単位で収集し、週単位で1つの値に集計して、その週データを月単位で1つの値に集計するといったことが可能です。集計によって、データにおけるパターンが明らかになり、これらのパターンが分析および意思決定の基礎になります。階層ディメンションを持つデータ・モデルを定義すると、集計データを計算できるフレームワークを提供できます。

「集計」は「サマリー」、「集計データ」は「サマリー・データ」とも呼ばれます。最もよく使用される集計演算子は合計ですが、その他にも平均、最初、最後、最小および最大など、多くの演算子が存在します。Oracle OLAPでは、加重法および階層法もサポートしています。次に、基本的な種類の演算子の機能を表す簡単な図をいくつか示します。すべての演算子の説明は、「集計演算子」を参照してください。

図9-1では、4つの子と1つの親値を持つ単層階層を示します。3つの子は値を持ち、4つ目の子は空です。この空のセルはNULLまたはNA値を持ちます。合計演算子は、親値として値（2+4+6）=12を算出します。

図9-1 単層階層における合計による集計

「図9-1 単層階層における合計による集計」の説明

平均演算子は、すべての実データの平均を計算し、集計値として（（2+4+6）/3）=4を算出します（図9-2を参照）。

図9-2 単層階層における平均による集計

「図9-2 単層階層における平均による集計」の説明

階層演算子では、セルのカウントの際にNULL値が含まれます。図9-3では、階層の平均演算子は集計値（（2+4+6+NA）/4）=3を算出します。

図9-3 単層階層における階層の平均による集計

「図9-3 単層階層における階層の平均による集計」の説明

加重演算子では、別のメジャーにある値を使用して、集計を行う前に加重値を算出します。図9-4では、図9-1において単純に合計した値12が、加重（（3×2）+（2×4）+（NA×6）+（4×NA））を使用した場合どのように変更されるかを示します。

図9-4 単層階層における重み付け合計による集計

「図9-4 単層階層における重み付け合計による集計」の説明

集計演算子

アナリティック・ワークスペースでは、加重法、階層法、加重階層法など、様々な集計メソッドを使用できます。

基本演算子

次に、基本的な集計演算子について説明します。

- 平均: NULL以外のデータ値を加算してから、データ値の数で合計値を除算します。

- 最初のNA以外のデータ値: 最初の実際のデータ値を戻します。

- 最後のNA以外のデータ値: 最後の実際のデータ値を戻します。

- 最大: 各親の子全体における最大のデータ値を戻します。

- 最小: 各親の子全体における最小のデータ値を戻します。

- 非加算: データの集計は行われません。

- 合計: 複数のデータ値を加算します。

伸縮法および加重法の演算子

これらの演算子には、同一キューブ内で加重値またはスケール値を与えるメジャーが必要です。重み付けメジャーでは、NA（NULL）は1として計算されます。一方スケール・メジャーでは、NAは0として計算されます。

「集計の順序によって結果が異なるケース」で説明するように、重み付け演算子では外部結合が使用されます。

次に、伸縮法および加重法の演算子を示します。

- スケール合計: 加重オブジェクトの値を各データ値に追加してから、それらのデータ値を加算します。

- 重み付け平均: 加重因数で各データ値を乗算し、それらのデータ値を加算してから、加重因数の合計でその結果を除算します。

- 最初の重み付け: 最初の非NULLデータ値と、それに対応する加重値との乗算を行います。

- 最後の重み付け: 最後の非NULLデータ値と、それに対応する加重値との乗算を行います。

- 重み付け合計: 加重因数で各データ値を乗算してから、それらのデータ値を加算します。

階層演算子

次に、階層演算子について説明します。これらの演算子では、セルにデータが含まれているかどうかに関係なく、階層によって識別されるすべてのセルが計算に含まれます。

階層平均演算子および階層重み付け演算子では外部結合が使用されます。

- 階層の平均: データ値を加算してから、ディメンション階層の子の数でその合計値を除算します。NULL以外の子のみをカウントする「平均」とは異なり、階層の平均では、ある親に属するすべての子をカウントします。これは、それぞれの子が値を持っているかどうかに関係しません。

- 階層の最初のメンバー: 階層内の最初のデータ値（NULL値も含む）を戻します。

- 階層の最後のメンバー: 階層内の最後のデータ値（NULL値も含む）を戻します。

- 階層の重み付け平均: 非NULLの子データ値を対応する加重値で乗算してから、加重値の合計でその結果を除算します。「重み付け平均」とは異なり、「階層の重み付け平均」では、対応する子値がNULLの場合でも、分母の合計に加重値が含まれます。

- 階層内で最初に重み付けされた値: 階層内の最初のデータ値（NULL値も含む）と、それに対応する加重値との乗算を行います。

- 階層内で最後に重み付けされた値: 階層内の最後のデータ値（NULL値も含む）と、それに対応する加重値との乗算を行います。

集計の順序によって結果が異なるケース

OLAPエンジンでは、1回につき1つのディメンションについてキューブの集計が行われます。すべてのディメンションに対して同じ集計演算子が使用されるときは、その演算子の種類によって、計算される集計値が集計の順序によって異なる場合と集計の順序によらず一定になる場合とがあります。

1つのキューブに対して複数の集計メソッドを使用する場合は、集計の順序を指定する必要があります。ただ1つの例外として、同じディメンションについて単に重み付けメジャーの集計を行う場合は、「合計」と「重み付け合計」、または「平均」と「重み付け平均」を組み合せることができます。たとえば、Customerディメンションに対する重み付け平均の計算に使用する重み付けメジャーそのものを、単にCustomerディメンションについて集計する場合などです。

重み付け演算子は、指定したディメンションおよびそれに先行するすべてのディメンションに対して圧縮することはできません。圧縮キューブに対しては、できるだけ早く重み付け演算子をリスト表示して、外部結合の数を最小にする必要があります。たとえばあるキューブにおいて、Customerディメンションに対しては「重み付け合計」が使用され、それ以外のすべてのディメンションに対しては「合計」が使用されるとします。この場合、Customerが最初に集計されるとパフォーマンスが最も高くなります。

キューブのすべてのディメンションに対する同一演算子の使用

次に示すのは、キューブに対して集計規則を定義する際、ディメンションの順序を指定する必要がある場合のガイドラインです。

順序によらず集計結果が一定のもの

キューブのすべてのディメンションに対して次の演算子を使用した場合は、順序によって結果が異なることはありません。

- 最大

- 最小

- 合計

- 階層の最初のメンバー

- 階層の最後のメンバー

- 階層の平均

順序によって集計結果が異なるもの

キューブのすべてのディメンションに対して次の演算子を使用した場合も、順序によって結果が異なることがあります。

- 平均

- 最初のNA以外のデータ値

- 最後のNA以外のデータ値

- 最初の重み付け

- 最後の重み付け

- 階層内で最初に重み付けされた値

- 階層内で最後に重み付けされた値

- スケール合計

順序によって集計結果が異なる場合があるもの

キューブのすべてのディメンションに対して次の重み付け演算子を使用した場合は、複数のディメンションについて重み付けメジャーが集計されたときにかぎり、順序によって結果が異なります。

- 重み付け平均

- 重み付け合計

- 階層の重み付け平均

例: 異なる集計演算子の併用

合計演算子および最大演算子をそれぞれ単独で使用する場合はディメンションを順序付ける必要はありませんが、それらを併用する場合は順序を指定する必要があります。次の図で、集計の順序によって計算結果がどのように変わるかを説明します。図9-5に、2つのディメンションを持つ1つのキューブを示します。まずキューブの一方のディメンションに対して「合計」が計算され、次にもう一方のディメンションに対して「最大」が計算されます。

図9-5 合計メソッドの後に最大メソッドを実行

「図9-5 合計メソッドの後に最大メソッドを実行」の説明

図9-6も同じキューブを示したものですが、ここでは、最初にキューブの一方のディメンションに対して「最大」が計算され、次にもう一方のディメンションに対して「合計」が計算されます。図9-5では合計の最大値が15であるのに対して、図9-6では最大値の合計が19になっています。

図9-6 最大メソッドの後に合計メソッドを実行

「図9-6 最大メソッドの後に合計メソッドを実行」の説明

例: Unitsキューブの集計

この例では、GLOBALアナリティック・ワークスペースのUnitsキューブに対するデフォルト集計の変更について説明します。これらの変更は、次のデータ・リフレッシュ時に反映されます。

集計演算子および階層の選択

Analytic Workspace Managerでは、最初にすべてのディメンションに対して合計演算子を使用するよう設定した上で、すべてのディメンションのすべてのレベルを集計します。これらのデフォルト設定を変更する場合は、「集計」タブの「ルール」サブタブを使用します。

図9-7に、Unitsキューブに対する演算子を示します。Timeは、現在「最後のNA以外のデータ値」に設定されており、他のディメンションの後に集計されます。「最初」や「最後」などの演算子の場合、ディメンションの集計順序により、結果が異なる場合があります。

また、データ・メンテナンス時にCustomerディメンションのShipments階層のみ集計が行われるよう変更されています。Segment階層が問合せの対象となることはほとんどないため、グローバルDBAは、メンテナンスに要する時間や記憶域を節約するために、これらの集計値を計算しないように選択します。ただし、Segmentの集計を要求する問合せに対しては応答時間が長くなります。

図9-7 集計演算子の選択

「図9-7 集計演算子の選択」の説明

事前計算値の割合の選択

Analytic Workspace Managerでは最初に、最下位パーティションに対しては35%の事前計算値、最上位パーティションに対しては0%の事前計算値を使用するコストベース集計が選択されます。パーティション化されていないキューブも35%に設定されます。この設定の場合、集計値の35%についてはデータ・メンテナンス時に計算された上で格納され、残りの65%については問合せへの応答時に計算されます。こうした設定により、データ・メンテナンスが最適化されます。

最下位パーティションに対する事前計算の割合を増やすと、最下位パーティションおよび最上位パーティションの問合せが効率化されます。また、最上位パーティションに対する事前計算の割合を増やすと、パーティション化されたディメンションの最も集計されたデータおよびその他の階層に対する問合せが効率化されます。

図9-8に、Unitsキューブに関する設定を示します。ここでは、グローバルDBAにより、最上位パーティションにおける割合は0%に維持され、最下位パーティションにおける割合は35%から50%へ増加させるよう選択されています。この変更により、メンテナンスに要する時間や記憶域は増加しますが、すべてのパーティションで実行時のパフォーマンスは向上します。

図9-8 コストベースのプレサマリー作成の設定

「図9-8 コストベースのプレサマリー作成の設定」の説明

A 次元モデルの設計

このマニュアルでは、例としてGlobalスキーマを使用します。この付録では、Global Computing Companyという架空の会社を想定してそのビジネス要件を検討し、それらの要件からデータ・モデルを設計する方法について説明します。

この付録では、次の項目について説明します。

- 事例のシナリオ

- 必要とされるビジネス・ファクトの識別

- Global Computingのための次元モデルの設計

事例のシナリオ

Global Computing Companyという、1990年に設立された会社があるとします。Global Computingは、コンピュータのハードウェアおよびソフトウェアのコンポーネントを世界規模で顧客に供給しています。営業部門では、見積値を満たしていません。結果として、この部門では、成功を収める営業戦略の開発に挑戦してきました。

Global Computingは、きわめて競争の激しい市場で経営を行っています。競争相手は多数あり、顧客は価格に特に敏感で、利益幅は少なくなる傾向にあります。収益を高めて発展するために、Global Computingは最も利益を生む製品の売上を増やす必要があります。

Global Computingの現在のビジネスにおける次の様々な要素が、売上および収益における低下を示しています。

- Global Computingでは、従来、第3四半期（7月〜9月）に売上が低下します。しかし、最近は、他の四半期の売上も予測を下回っています。この会社は急速な成長を経験してきたのですが、過去2年間の第1四半期の売上が、その前までの年と比較して明確な理由もなく下がっています。

- Global社は、最新の販売チャネルであるインターネットでは成功を収めています。このチャネルにおける売上は伸びていますが、全体の収益は減少しています。

- 以前はGlobal Computingの収益の大半を占めていたパーソナル・コンピュータの利益が急速に減少していることが、最も重要な要因である可能性があります。

Global Computingは、これらの各要素がビジネスにどのように影響しているのかを理解する必要があります。

現在のレポート作成はIT部門が行っており、月単位の標準的なレポートが作成されています。非定形のレポートはすべて必要に応じて処理されますが、ITスタッフは限られているため時間的な制約があります。営業部門では、レポート作成要求への対応が遅いことに不満が広がっています。IT部門でも、方針を頻繁に変更し、より詳細な情報を求める分析者に対する不満が蓄積しています。

営業部門では、何が売れているのか、誰が購入しているのか、どのように購入しているのかといったタイムリな情報の不足に悩まされています。情報主任との打合せでは、営業部長が「情報は入手した時点でもう役に立たない。情報を入手できるのは月末で、それには仕事で必要な詳細情報が含まれていない」と報告しています。

要件のレポート

必要事項をより具体的にするよう求められると、営業部長は次の要件を特定しました。

- 特定の顧客、地域およびセグメントの売上データの傾向。

- 現地販売員に対する情報および一定の情報分析能力の提供。販売員は世界中に分散しているため、Webインタフェースが好ましい。

- 月単位および四半期単位の通信販売、電話販売および電子メール販売に関する詳細（過去の期間との比較も含める）。情報を使用して、各チャネルでいつ、何がどのように売れているのかを確認できる必要がある。

- 各売上のドル貢献を知るための、製品に関する利益情報。

- 売上、数量および利益の、前の期間および1年前の期間との変化率。

- 非定型のグルーピングによるデータ分析の実行。

情報主任はチーム内でこれらの要件について話し合い、生産受注システムに対する標準的なレポート・ソリューションは、必要とされる分析能力を提供するだけの柔軟性がないという結論に達しました。また、ビジネス分析のレポート要件があまりにも多様なので、開発の見積りコストや要求に対して期待される応答時間を考慮すると、このソリューションを容認することはできません。

そこで、情報主任のチームは、分析をサポートするためにアナリティック・ワークスペースを使用することを推奨しました。チームでは、営業部門のITグループがIT企業と連携し、彼らの要件を満たす情報分析用のアナリティック・ワークスペースを構築することを提案しました。

ビジネスの目標

開発チームは、このプロジェクトで満たす必要のある高水準のビジネス目標を特定しました。

- Global Computingの戦略上の目標として、より高い利益の製品の売上および全体の売上高を伸ばすことによって、会社の収益を増加させます。

- 営業部門の目標は次のとおりです。

- 業界の傾向を分析し、特定の市場セグメントを標的にする。

- 販売チャネルを分析し、収益を向上させる。

- 製品の傾向を識別し、適切なチャネルを開拓する戦略を作成する。

情報の要件

ビジネスの目標を確立したら、それらの目標の達成に役立つ情報のタイプを決定できます。エンド・ユーザーがアナリティック・ワークスペースのデータをどのように調べるかを理解するために、広範囲のヒアリングを実施することが重要です。キーとなるエンド・ユーザーのヒアリングから、ビジネスに対する調査方法および回答が欲しいビジネス分析の問合せのタイプを決定できます。

ビジネス分析の問合せ

Global Computingの営業部長、販売員および市場分析者からのヒアリングによって、次のビジネス分析の問合せが明らかになりました。

- どの製品が利益が高いか。

- 顧客は誰か、彼らは何をどのように購入するのか。

- どのアカウントが最も収益性が高いか。各流通チャネルの業績はどうか。

- ビジネスに季節的な分散はまだ存在するか。

次に、これらのビジネス分析の各問合せを詳細に調査します。

どの製品が利益が高いか

このビジネス分析の問合せは次の問合せから構成されます。

- 任意の月、四半期、年または任意の流通チャネルにおける任意の項目、製品ファミリ、製品クラスの総売上の比率はどれくらいか。この売上比率が1年前とどのように異なるか。

- 任意の特定月における任意の項目について、各単位の単位価格、単位原価および単位当たりの利益はいくらか。任意の月における任意の項目の価格、原価および利益の傾向はどうなっているか。

- 任意の流通チャネルおよび任意の地域または市場セグメントにおける、任意の月、四半期、年の最も利益の高かった項目は何か。収益性は前の期間からどのように変化したか。前の期間からの収益性の変化率はどれくらいか。

- 前の期間から収益性が最も変化した項目は何か。

- 任意の流通チャネルおよび任意の地域または市場セグメントにおける、任意の月、四半期、年の総収益に最も貢献した項目は何か。

- 任意の特定月において、単位当たりの利益が最も高い項目は何か。

- 要約すると、どのような傾向があるか。

顧客は誰か、彼らは何をどのように購入するのか

このビジネス分析の問合せは次の問合せから構成されます。

- 任意の月、四半期または年における任意の項目、製品ファミリ、製品クラスの売上はいくらだったか。

- 任意の流通チャネル、地域または市場セグメントにおける任意の項目、製品ファミリ、製品クラスの売上はいくらだったか。

- 売上は前の期間からどのように変化したか。前の期間からの売上の変化率はどれくらいか。

- 売上は1年前からどのように変化したか。1年前からの売上の変化率はどれくらいか。

- 要約すると、どのような傾向があるか。

どのアカウントが最も収益性が高いか

このビジネス分析の問合せは次の問合せから構成されます。

- 任意の項目、製品ファミリ、製品クラスについて、任意の流通チャネルにおける任意の月、四半期、年の最も利益の高いアカウントは何か。

- 任意の流通チャネルおよび任意の製品について、任意の月、四半期、年のアカウントの売上および総利益（粗利益）はいくらだったか。

- アカウントの収益性を前の期間とどのように比較するか。

- どのアカウントが前の期間と比較して最も売上が伸びたか。

- 前の期間からの売上の割合変化はどれくらいか。収益性の変化率が、売上の変化率と同じ比率で増加したか。

- 要約すると、どのような傾向があるか。

各流通チャネルの業績はどうか

このビジネス分析の問合せは次の問合せから構成されます。

- 任意の項目、製品ファミリ、製品クラスまたは任意の地域、市場セグメントの各流通チャネルの総売上に対する売上比率はどれくらいか。

- 各流通チャネル（直販、カタログ販売およびインターネット）の収益性はどうか。

- 最新の流通チャネルのインターネットがカタログ販売と共食いしていないか。顧客が注文方法を切り替えているだけなのか、インターネット流通チャネルがさらなる顧客を獲得しているのか。

- 要約すると、どのような傾向があるか。

ビジネスに季節的な分散はまだ存在するか

このビジネス分析の問合せは次の問合せから構成されます。

- 特定の項目または製品ファミリの季節的な売上パターンを識別できるか。

- 季節的な売上パターンは地域によってどのように異なるか。

- 季節的な売上パターンは市場セグメントによってどのように異なるか。

- 季節的な売上パターンは昨年と比較して違いはあるか。

情報の要件のまとめ

エンド・ユーザーが行いたい分析のタイプを調査することによって、分析のキーとなる次の要件を識別できます。

- Global Computingには、収益性の分析に対する強い要求がある。会社は、製品、アカウント、市場セグメントおよび流通チャネルごとの収益性を解釈する必要がある。また、収益性の傾向についても解釈する必要がある。

- Global Computingは、売上が時期によってどのように異なるのかについて解釈する必要がある。会社は、製品、地域、市場セグメントおよび流通チャネルごとのこれらの季節的な傾向について解釈する必要がある。

- Global Computingには、非定形の売上分析に対する強い要求がある。分析者は、どの製品が誰にいつ売れているのか、顧客はどのようにこれらの製品を購入しているのかを識別する必要がある。

- 傾向を分析できることがGlobal Computingにとって重要である。

必要とされるビジネス・ファクトの識別

分析のキーとなる要件によって、Global Computingにおける分析要件のサポートに必要なビジネス・ファクトが明らかになります。

次のファクトは、時間、製品、顧客への発送、市場セグメントおよび流通チャネルによって整理されます。

売上
数量
前の期間からの売上の変化
前の期間からの売上の変化率
前の年からの売上の変化
前の年からの売上の変化率
製品シェア
チャネル・シェア
市場シェア
総費用
総利益
前の期間からの総利益の変化
前の期間からの総利益の変化率
前の期間からの販売数量の変化
前の期間からの販売数量の変化率
前の年からの販売数量の変化
前の年からの販売数量の変化率

次のファクトは項目および月によって整理されます。

単位価格
単位原価
単位当たりの利益

Global Computingのための次元モデルの設計

Global Computingにおける分析要件をサポートするビジネス・ファクトは、「ビジネスの目標」に示したとおりです。次に、データ・モデル内のディメンション、レベルおよび属性を識別します。各ディメンション内の関係も識別します。結果としてできるデータ・モデルは、Globalスキーマ、次元モデルおよびアナリティック・ワークスペースの設計に使用します。

ディメンションの識別

次の4つのディメンションをデータベース内のファクトの構成に使用します。

- Product: 製品によってデータがどのように異なるかを示す。

- Customer: 顧客や地域によってデータがどのように異なるかを示す。

- Channel: 各流通チャネルによってデータがどのように異なるかを示す。

- Time: 時間によってデータがどのように異なるかを示す。

レベルの識別

ディメンションを識別したところで、各ディメンション内の集計のレベルを識別できます。Global Computingでの分析要件によって、次のことが明らかになっています。

- 流通チャネルには、Sales、CatalogおよびInternetの3つがあります。これらの3つの値は、データ・ウェアハウスにおける細目の最低レベルであり、Channelレベル内でグループ化されます。レベルは、集計の最高レベルから細目の最低レベルの順に、TotalおよびChannelとなります。

- Globalでは、顧客への発送取扱いに沿って、および市場セグメントごとに、顧客および地域の分析を行います。ShipmentsとSegmentが、Customerディメンションの2つの階層になります。それぞれの場合で、データ・モデルにおける細目の最低レベルはShip To位置です。

- 顧客への発送取扱いに沿って分析する場合、集計のレベルは（高い方から低い方の順に）、Total、Region、WarehouseおよびShip Toとなります。

- 市場セグメントによって分析する場合、集計のレベルは（高い方から低い方の順に）、Total、Market Segment、AccountおよびShip Toとなります。

- Productディメンションは（高い方から低い方の順に）、Total、Class、FamilyおよびItemの4つのレベルを持ちます。

- Timeディメンションは（高い方から低い方の順に）、Total、Year、QuarterおよびMonthの4つのレベルを持ちます。

すべてのディメンションは、集計の最高レベルとしてTotalレベルを持ちます。この最高レベルを追加することによって、アプリケーション・ユーザーはデータを柔軟に分析できるようになります。

階層の識別

各ディメンション内のレベルを構成する階層を識別します。階層を識別するには、集計の正しい順序で、および分析の識別したタイプをサポートする方法で、レベルをグループ化します。

Global Computingでは、ChannelディメンションとProductディメンションについて必要な階層はそれぞれ1つのみです。Customerディメンションについては、Global Computingでは2つの階層が必要です。Customerディメンションにおける分析は、地域または市場セグメントのいずれかによるものになります。したがって、ShipmentsおよびSegmentの2つの階層にレベルを構成します。長期にわたる分析には、CalendarとFiscalの2つの階層が必要です。

ストアド・メジャーの識別

「必要とされるビジネス・ファクトの識別」では、Global Computingの分析要件のサポートに必要な21のビジネス・ファクトを示しました。このうち、トランザクション・データベースから取得される必要があるファクトは次の4つのみです。

- 数量

- 売上

- 単位価格

- 単位原価

その他のすべてのファクトは、これらの基本ファクトから導出できます。導出されたファクトは、オンデマンドでアナリティック・ワークスペース内で計算できます。これらの導出ファクトの一部が頻繁に使用され、その計算がシステムに大きな負荷を与えていることが経験上明らかになれば、これらのファクトは、データのメンテナンス処理として、アナリティック・ワークスペース内で計算および格納できます。

B キーボードのショートカット

Analytic Workspace Managerでは、キーボードのショートカットによるアクセシビリティがサポートされています。ほとんどのショートカットはすべてのプラットフォームで機能しますが、中でもWindowsでの操作が最も安定した結果を示しています。キーボードのショートカットをアクセシビリティに使用する場合は、Analytic Workspace ManagerをWindowsプラットフォームにインストールするようにしてください。

キーボードのショートカットは、ユーザー・インタフェースの特定の領域内で有効になります。

- メニュー・バー

- ナビゲーション・ツリー

- プロパティ・シート

- 矢印のボタン

- マッピング・キャンバス

メニュー・バー

「ファイル」メニュー: [Alt]+[F]

「ツール」メニュー: [Alt]+[T]

「ヘルプ」メニュー: [Alt]+[H]

ナビゲーション・ツリー

選択したオブジェクトのメニューを表示するには、[Shift]+[F10]を押します。これはマウスの右ボタンをクリックするのと同じ操作です。

選択したオブジェクトのメニューを閉じるには、[Esc]を押します。

フォルダを開くには、[→]キーを押します。

フォルダを閉じるには、[←]キーを押します。

カーソルをツリーの下に移動するには、[↓]キーを押します。

カーソルをツリーの上に移動するには、[↑]キーを押します。

カーソルをナビゲーション・ツリーからプロパティ・シートに移動するには、[Tab]を押します。

カーソルをプロパティ・シートからナビゲーション・ツリーに移動するには、[Shift]+[Tab]を押します。

プロパティ・シート

カーソルをナビゲーション・ツリーからプロパティ・シートに移動するには、[Tab]を押します。

カーソルを次のタブに移動するには、[→]キーを押します。

カーソルを前のタブに移動するには、[←]キーを押します。

カーソルをプロパティ・シートからナビゲーション・ツリーに移動するには、[Shift]+[Tab]を押します。

ナビゲーション・ツリーとプロパティ・シートの間のスプリッタを移動するには、[F8]を押しながら[→]または[←]を押します。

表内のメニュー選択を変更するには、[F2]+[↓]を押します。

矢印のボタン

すべて移動: [Alt]+[L]

選択した項目の移動: [Alt]+[D]

選択した項目の削除: [Alt]+[R]

すべて削除: [Alt]+[O]

複数の項目を選択するには、[Ctrl]を押しながら矢印キーを押し、[Space]を押します。

マッピング・キャンバス

表マッピング表示: [Ctrl]+[T]

グラフィカル・マッピング表示: [Ctrl]+[G]

マッピングの自動配置: [Ctrl]+[Alt]+[K]

スター・スキーマの自動マッピング: [Ctrl]+[M]

すべてのマッピングの解除: [Ctrl]+[D]

スキーマ・ビューア・ナビゲータ:

ナビゲーション・ツリーのすべてのキーボード・ショートカットに加えて、表のビューに対する次のキーボード・ショートカットも使用できます。

ツリーから選択した列の名前をコピーするには、[Ctrl]+[C]を押し、選択したフィールドに列名を貼り付けるには、[Ctrl]+[V]を押します。

列の幅を広げるには、ヘッダーを選択してから[Alt]+[→]を押します。

列の幅を狭くするには、ヘッダーを選択してから[Alt]+[←]を押します。

用語集

加算的（additive）

SUMファンクションなど、加算で集計可能なメジャーまたはファクトを指す。加算的なメジャーが最も一般的。例としては、売上、費用、利益などがある。

「非加算的」と対比。

集計（aggregation）

複数のデータ値を1つの値に集約するプロセス。たとえば、売上データを毎日収集して、これを週レベルに集計したり、週データを月レベルに集計したりできる。この結果のデータは、集計データとして参照できる。

「集計」は「サマリー」と同じ意味で使用されることが多く、「集計データ」は「サマリー・データ」と同じ意味で使用される。ただし、SUMの他にも多様な集計メソッドが使用可能。

アナリティック・ワークスペース（analytic workspace）

ディメンションやキューブなど、関連する次元オブジェクトを格納するコンテナ。アナリティック・ワークスペースは、リレーショナル表に格納される。

「キューブ」、「キューブ・ディメンション」も参照。

祖先（ancestor）

集計で、特定のメンバーより上位のレベルにあるディメンション・メンバー。たとえば、Timeディメンションでは、年の値2007は日の値06-July-07の祖先である。すぐ上のレベルにあるメンバーが親。ディメンション階層においては、祖先のデータ値はその子孫のデータ値を集計した値である。

「子孫」と対比。「階層」、「レベル」、「親」も参照。

属性（attribute）

OLAPキューブ・ディメンションに関連するデータベース・オブジェクト。属性は、すべてのディメンション・メンバー、特定の階層のメンバー、または階層の特定レベルのメンバーのみについて、説明的な特性を格納する。

属性の値が一意である場合、表示や分析に使用できる補足的な情報（説明的な名前、期間における日数など）を提供する。属性の値をディメンション・メンバーのグループに割り当てると、同じような特性に基づいてデータを選択できるようになる。たとえば、履物のデータベースでは、色の属性を使用することにより、同じ色のブーツ、スニーカーおよびスリッパをすべて選択できる。

「キューブ・ディメンション」も参照。

ベース・レベル・データ（base level data）

「ディテール・データ」を参照。

ベース・メジャー（base measure）

「メジャー」を参照。

計算済メジャー（calculated measure）

問合せに対して実行する保存済の式。たとえば、計算済メジャーは、COSTSメジャーに対してLAG_VARIANCEファンクションを実行して前の期間からの費用の変化を算出できる。また、SALESメジャーからCOSTSメジャーを減算して利益を計算することもできる。式は、問合せで要求された値のみを解決する。

「式」、「メジャー」も参照。

セル（cell）

式の単一のデータ値。ディメンション化された式の場合、セルは、式の各ディメンションの値によって識別される。たとえば、MONTHディメンションとCUSTOMERディメンションを持つメジャーの場合、ある月とある顧客の各組合せによって、そのメジャーの個々のセルが識別される。

「キューブ・ディメンション」も参照。

子（child）

階層内で、上位のレベルにある集計メンバーの一部であるディメンション・メンバー。たとえば、Timeディメンションでは、月の値Jan-06は四半期の値Q1-2006の子である。ディメンション・メンバーは、各階層で異なる親の子になることができる。

「親」と対比。「子孫」、「階層」も参照。

コンポジット（composite）

スパースな多次元データを格納するための圧縮形式。Oracle OLAPでは、圧縮コンポジット（極端にスパースなデータ用）と通常のコンポジット（ややスパースなデータ用）という2つのタイプのコンポジットを使用できる。

「ディメンション」、「スパース性」も参照。

圧縮キューブ（compressed cube）

圧縮コンポジットに格納される、非常にスパースなデータを持つキューブ。

「コンポジット」も参照。

圧縮（compression）

「圧縮キューブ」を参照。

一貫した解決の仕様（consistent solve specification）

「解決の仕様」を参照。

キューブ（cube）

同一のディメンションなど共通の特性を持つメジャーの編成。キューブのエッジにはディメンション・メンバーが格納され、キューブの本体にはデータ値が格納される。たとえば、売上データをキューブに編成する場合、エッジにはTime、ProductおよびCustomerの各ディメンションの値が格納され、本体には売上数量および売上高のデータが格納される。

キューブ・ディメンション（cube dimension）

値のリストを格納する次元オブジェクト。メジャーの値を識別する索引である。たとえば、売上データが月ごとの売上高を個別に持っている場合、そのデータは月の値を含むTimeディメンションを持ち、データは月別に編成される。

多次元分析において、キューブ・ディメンションはディメンションと呼ばれる。

「ディメンション」も参照。

キューブ・マテリアライズド・ビュー（cube materialized view）

マテリアライズド・ビュー機能で強化されたキューブ。Oracle Databaseのマテリアライズド・ビュー・サブシステムで段階的にリフレッシュでき、ソース表に対する問合せの透過的なリライトのターゲットとして働くことができる。

キューブ編成のマテリアライズド・ビューとも呼ばれる。

キューブ・スクリプト（cube script）

データのロードや集計など、問合せ用のデータを準備するための一連の手順。

キューブ・ビュー（cube view）

キューブに格納されたデータのリレーショナル・ビュー。SQLによる問合せが可能。キューブのディメンション、メジャーおよび計算済メジャーの列が含まれる。

カスタム・メジャー（custom measure）

「計算済メジャー」を参照。

カスタム・メンバー（custom member）

モデルで定義された規則を使用して、同じディメンションの他メンバーの値からデータが計算されるディメンション・メンバー。

「モデル」を参照。

データ・セキュリティ・ロール（data security role）

OLAPセキュリティ・ポリシーの管理で使用するために定義する、ユーザーおよびデータベースのロールのグループ。

データソース（data source）

キューブやキューブ・ディメンションのディテール・データを提供する、リレーショナル表、ビュー、シノニムなどのデータベース・オブジェクト。

データ・ウェアハウス（data warehouse）

トランザクション処理用ではなく、問合せおよび分析用に設計されたデータベース。通常、データ・ウェアハウスには、トランザクション・データから導出された履歴データが格納されるが、別のソースのデータが格納される場合もある。データ・ウェアハウスにより、分析ワークロードとトランザクション・ワークロードを分離できる。また企業は、複数のソースのデータを統合できるようになる。

非正規化（denormalized）

表の中に冗長性を許容すること。「正規化」と対比。

導出メジャー（derived measure）

「計算済メジャー」を参照。

子孫（descendant）

集計で、特定のメンバーより下位のレベルにあるディメンション・メンバー。たとえば、Timeディメンションでは、日の値06-July-07は年の値2007の子孫である。すぐ下のレベルにあるメンバーが子。ディメンション階層においては、子孫のデータ値は祖先のデータ値にロールアップされる。

「祖先」と対比。「集計」、「子」、「階層」、「レベル」も参照。

ディテール・データ（detail data）

別のソースから取得される、最低レベルのデータ。

「集計」と対比。

ディメンション（dimension）

データを分類する構造。売上に関するデータで最も一般的なディメンションは、Time、GeographyおよびProductである。ほとんどのディメンションは階層とレベルを持つ。

キューブでは、ディメンションは全レベルの集計の値のリストである。

リレーショナル表では、ディメンションは列セットの組の階層関係（親子関係）を定義する一種のオブジェクトである。

「キューブ・ディメンション」、「階層」も参照。

ディメンション・キー（dimension key）

「ディメンション・メンバー」を参照。

ディメンション・メンバー（dimension member）

キューブ・ディメンションを構成するリストの一要素。たとえば、Timeディメンションには、日、月、四半期および年のディメンション・メンバーが含まれる。

ディメンション表（dimension table）

スター・スキーマまたはスノーフレーク・スキーマのディメンションのすべての値またはその一部を格納するリレーショナル表。通常、ディメンション・キー、レベルおよび属性の列が含まれる。

ディメンション値（dimension value）

「ディメンション・メンバー」を参照。

ディメンション・ビュー（dimension view）

すべての階層の全メンバーに関する情報を提供するキューブ・ディメンションのリレーショナル・ビュー。ディメンション・キー、レベルおよび属性の列が含まれる。

「キューブ・ディメンション」、「階層ビュー」も参照。

ドリル（drill）

1つの項目から一連の関連項目にナビゲートすること。通常、ドリル操作では、階層内のレベルを上方向または下方向にナビゲートする。

ドリルダウンは、ビューを開いて、階層内の親値に関連付けられている子値を表示する。

ドリルアップは、階層内の親値に関連付けられている子孫の値のリストを閉じる。

EIFファイル（EIF file）

アナリティック・ワークスペース間でデータを転送すること、またはデータベース外でアナリティック・ワークスペース（すべてまたは選択したオブジェクト）のバージョンを保存することを目的とした、特別な形式のファイル。

埋込み合計（embedded total）

階層の全レベルのディメンション・メンバーのリスト。集計メンバー（合計および小計）にはディテール・メンバーが散在している。たとえば、Timeディメンションには、日、月、四半期および年のディメンション・メンバーが含まれる。

式（expression）

1つ以上の値（通常、メジャーまたは計算済メジャーで提供される）、演算子および関数の組合せ。値に評価される。式は通常、そのコンポーネントのデータ・タイプを前提とする。

たとえば、SALESがメジャーである場合、式はSALES、SALES*1.05、TRUNC(SALES)となる。

ファクト（fact）

「メジャー」を参照。

ファクト表（fact table）

実際のデータを格納する、スター・スキーマ内の表。多くの場合、ファクト表には、ファクトを格納する列と、ディメンション表への外部キーとなる列の2種類の列がある。通常、ファクト表の主キーは、その表のすべての外部キーで構成されるコンポジット・キーである。

ファクト表は、ディテール・ファクトと集計済ファクトのどちらでも格納できる。集計済のファクトを格納するファクト表は通常、集計表またはマテリアライズド・ビューと呼ばれる。通常、ファクト表には同じ集計レベルのファクトが格納される。

「マテリアライズド・ビュー」も参照。

階層（hierarchy）

集計の様々なレベルでデータを構成するための方法。データ集計の定義に使用する。たとえば、Timeディメンションでは、階層を使用して日から月、四半期、年へとデータを集計できる。ナビゲーション・ドリル・パスの定義にも使用される。

リレーショナル表では、階層はディメンション・オブジェクトの一部として定義できる。

「レベルベース階層」、「不規則階層」、「スキップレベル階層」、「値ベース階層」も参照。

階層ビュー（hierarchy view）

特定の階層に属するメンバーに関する情報を提供するキューブ・ディメンションのリレーショナル・ビュー。ディメンション・キー、親、階層レベルおよび属性の列が含まれる。

「キューブ・ディメンション」、「ディメンション・ビュー」も参照。

キー（key）

特定のタイプの整合性制約の定義に含まれる、列または列のセット。リレーショナル・データベースの様々な表および列の関係を表す。

「ディメンション・メンバー」も参照。

リーフ・データ（leaf data）

「ディテール・データ」を参照。

レベル（level）

階層内における名前付きの位置。たとえば、Timeディメンションは、月レベル、四半期レベルおよび年レベルのデータを表す階層を持つ。各レベルの名前は、Month、QuarterおよびYearとなる。こうした名前により、ベース・レベルから同一距離にあるディメンション・メンバーのグループを簡単に参照できる。

レベルベース階層（level-based hierarchy）

レベルで構成される階層。たとえば、Timeは常に、Month、QuarterおよびYearなどのレベルを持つレベルベース。ほとんどの階層はレベルベースである。

「値ベース階層」も参照。

マッピング（mapping）

ソース・オブジェクトとターゲット・オブジェクト間の関係およびデータ・フローの定義。たとえば、キューブのメタデータには、ファクト表またはビューの列と各メジャー間のマッピングが含まれる。

マテリアライズド・ビュー（materialized view）

集計データにアクセスできるようにするデータベース・オブジェクト。自動リフレッシュおよびクエリー・リライト・サブシステムで認識可能。

「キューブ・マテリアライズド・ビュー」も参照。

メジャー（measure）

売上データや費用データなど、ビジネス・メジャーを表すデータ。メジャー内のデータは、選択、表示および分析が可能。メジャーとファクトは同義語である。一般的に、メジャーは多次元環境で使用され、ファクトはリレーショナル環境で使用される。

メジャーは、売上数量や売上高などのデータを格納する次元オブジェクト。キューブに属している。

「計算済メジャー」、「ファクト」、「キューブ」も参照。

メジャー・フォルダ（measure folder）

メジャーのグループを編成してラベル付けする、データベース・オブジェクト。SalesやCostsといった名前のメジャーを含む複数のスキーマにアクセスする際に、メジャー・フォルダによってメジャーを区別できる。

モデル（model）

特定のディメンションのメンバーを使用して指定した、相互に関連する一連の方程式。明細項目ディメンションでは多くの場合、モデルを使用してディメンション・メンバーの値を計算する。

「カスタム・メンバー」も参照。「計算済メジャー」と対比。

NA値（NA value）

データが「使用不可（NA）」またはNULLであることを示す特殊なデータ値。特定のデータ値が割り当てられていないセル、またはデータを計算できないセルの値はNA値となる。

「セル」、「スパース性」も参照。

非加算的（nonadditive）

単位価格など、加算で集計できないメジャーまたはファクトを指す。最大は、非加算的な集計メソッドの一例。

「加算的」と対比。

正規化（normalize）

リレーショナル・データベースにおいて、データを複数の表に分離することによりデータの冗長性を取り除くプロセス。「非正規化」と対比。

OLAP

オンライン分析処理。履歴データを動的に次元分析する機能。次のような処理がサポートされる。

- ディメンションおよび階層にまたがる計算

- 傾向の分析

- 階層内のドリルアップおよびドリルダウン

- ディメンションの向きを変更するためのキューブの回転

「OLTP」と対比。

OLAP DML

Oracle Database内のアナリティック・ワークスペースに格納された次元データの管理に使用する一連のコマンド、ファンクションおよびオプション。

Analytic Workspace Manager、OLAP式の構文、OLAP Java API、各種アプリケーションおよびPL/SQLパッケージでは、ユーザーはOLAP DMLを直接使用することなく次元データにアクセスできますが、これらのツールは目的のタスクを完了するためにOLAP DMLを使用しています。

OLAPデータ操作言語（DML）は、次元、変数、計算式、リレーションおよび値セットで主にデータが構成されるアナリティック・ワークスペース内で排他的に機能します。アナリティック・ワークスペース内の次元オブジェクトは、データベースの高レベルな次元オブジェクト（キューブ、キューブ・ディメンション、メジャー、属性、階層など）をサポートします。

「OLAP式の構文」と対比。

OLAP式の構文

SQLの拡張構文。データベースの次元オブジェクト（キューブ、キューブ・ディメンション、属性、メジャーなど）に格納されたデータの操作に使用します。

「OLAP DML」と対比。

OLTP

オンライン・トランザクション処理。高速かつ信頼性の高いトランザクション処理を行うために最適化されたシステム。ほとんどのOLTP操作では、データ分析システムと比較して、扱う行の数は少なく、表のグループは大規模になる。

「OLAP」と対比。

即時計算（on the fly）

特定の問合せに対する応答において、必要に応じて実行時に計算を行うこと。キューブでは通常、計算済メジャーおよびカスタム・メンバーは必要に応じて計算されます。集計データは、事前に計算するか、必要に応じて計算するか、またはその両方を組み合せて計算できます。

「事前計算」と対比。

解決の仕様の上書き（override solve specification）

「解決の仕様」を参照。

ページ（page）

メモリー・データのスワッピング単位。

ブロックとも呼ばれる。

ページ領域（page space）

関連するデータ・ページのグループ。

親（parent）

階層内で、特定のメンバーの直上のレベルにあるディメンション・メンバー。ディメンション階層においては、親のデータ値は、その子のデータ値の集計された合計である。

「子」と対比。「階層」、「レベル」も参照。

親子リレーション（parent-child relation）

階層ディメンションにおける、1つの親と1つ以上の子の間の1対多関係。たとえば、New York（州レベル）は、Albany、Buffalo、PoughkeepsieおよびRochester（都市レベル）の親である。

「子」、「親」も参照。

事前計算（precalculate）

「事前計算」を参照。

事前計算（precompute）

データ・メンテナンス手順としてデータを計算および格納すること。キューブでは、集計データは、事前に計算するか、必要に応じて計算するか、またはその両方を組み合せて計算できます。

「即時計算」と対比。

不規則階層（ragged hierarchy）

異なるベース・レベルを持ち、階層の「不規則な」ベース・レベルを形成するメンバーが1つ以上含まれる階層。多くの場合、Organizationディメンションは不規則である。

リフレッシュ（refresh）

ソース表から新しい値や変更済の値をロードし、集計値を再計算すること。

セキュリティ・ロール（security role）

「データ・セキュリティ・ロール」を参照。

スキップレベル階層（skip-level hierarchy）

複数の高いレベルに親を持ち、階層に欠落部分を作成するメンバーが1つ以上含まれる階層。たとえば、City、StateおよびCountryのレベルを持つGeographyディメンションでは、Washington D.C.はState値を持たない都市であり、その親はCountryレベルのUnited Statesである。

スノーフレーク・スキーマ（snowflake schema）

ディメンション表が部分的または完全に正規化された、スター・スキーマの一種。

「正規化」、「スター・スキーマ」も参照。

解決の仕様（solve specification）

キューブの各ディメンションの集計メソッド。

解決済データ（solved data）

導出データがすべて計算済である結果セット。結果セットのすべてのデータはSQLベースのアプリケーションに戻される前に計算されているので、キューブからフェッチしたデータは常に完全に解決済である。キューブから取得した結果セットは、そのデータが事前計算されたものであるか、必要に応じて計算されたものであるかに関係なく同一です。

「即時計算」、「事前計算」も参照。

ソース（source）

「データソース」を参照。

スパース性（sparsity）

実際のデータを持たないディメンション値の組合せが比較的高い割合で存在するような多次元データを指す概念。

スパース性には、次の2つの種類がある。

- 制御されたスパース性は、1つ以上のディメンションの一定範囲の値がデータを持たない場合に発生する。たとえば、新しいメジャーをMonthでディメンション化したが、過去の月のデータは存在しない、という場合がこれに該当する。Monthディメンションには過去の月があるのでセルは存在するが、そのセルは空である。

- ランダムなスパース性は、NULLがメジャー全体に点在している場合に発生する。通常、ディメンション・メンバーの組合せの一部が常にデータを持たないことが原因で発生する。たとえば、ある地区では特定の製品のみを販売しており、販売していない製品についての売上データは持っていない、という場合がこれに該当する。

一部のディメンションがスパースであるのに対し、他のディメンションが稠密である場合がある。たとえば、あらゆる期間において、他のディメンションにまたがる1つ以上のデータ値があり、Timeディメンションが稠密になっているが、その一方で、一部の製品について、販売されていない地域があったり、一定期間まったく販売されていなかったりするため、ProductディメンションとGeographyディメンションがスパースになっている、という場合がこれに該当する。

「コンポジット」も参照。

スター・クエリー（star query）

1つのファクト表と複数のディメンション表との結合。各ディメンション表は、主キーから外部キーへの結合を使用してファクト表に結合される。ただし、ディメンション表同士は結合されない。

スター・スキーマ（star schema）

次元データ・モデルを表すように設計されたリレーショナル・スキーマ。スター・スキーマは、1つ以上のファクト表と、外部キーを通じて関連付けられた1つ以上のディメンション表で構成される。

「スノーフレーク・スキーマ」も参照。

ステータス（status）

特定のディメンションに関する、現在アクセス可能な値のリスト。ディメンションのステータスは特定のセッションを通じて維持され、明示的に変更しないかぎりは変更されない。アナリティック・ワークスペースが最初にセッションにアタッチされたときは、すべてのメンバーにステータスが設定される。

「キューブ・ディメンション」、「ディメンション・メンバー」も参照。

サマリー（summary）

「集計」を参照。

更新ウィンドウ（update window）

データベースにデータをロードするために費やすことのできる時間の長さ。

値ベース階層（value-based hierarchy）

ディメンション・メンバー間の親子関係によってのみ定義される階層。ベース・レベルから特定の距離にあるディメンション・メンバーは、分析にとって意味のあるグループを形成しないため、レベルに名前が付かない。たとえば、従業員ディメンションが、各従業員の上司を識別する親子関係を含む場合があります。ただし、第1レベルの上司、第2レベルの上司、第3レベルの上司などをグループ化するレベルは、分析の役に立つとはかぎりません。

「階層」、「レベルベース階層」も参照。

索引

A  B  C  D  E  F  G  H  I  J  L  M  N  O  P  Q  R  S  T  U  V  W  X

A

ADVISOR権限, 2.3, 2.3

集計

平均演算子, 9.1

計算済メジャー, 4.5.2

定義, 9.1

階層の平均演算子, 9.1

属性での, 4.5

合計演算子, 9.1

加重演算子, 9.1

集計演算子, 3.5, 4.5, 9.2 集計の順序, 9.3 集計の割合, 9.4.2 集計手順（キューブ・スクリプト）, 3.6.1 ALL_AW_OBJビュー, 7.3.1 ALL_AW_PROPビュー, 7.3.1 ALL_AW_PSビュー, 7.3.1 ALL_AWSビュー, 7.3.1 ALL_CUBESビュー, 7.4.1 分析ツール, 1.2 分析関数, 5.2.2, 5.5.4 Analytic Workspace Manager

インストール, 2.4.1

開く, 2.4.2

使用, 3.2

アナリティック・ワークスペースのセキュリティ, 8.2.1.1, 8.2.2.1 アナリティック・ワークスペース

作成, 3.3

データベース記憶域, 7.3.3

ディスク領域使用量, 7.6.5

機能の拡張, 3.3.1

所有者の確認, 7.6.2.2

リスト表示, 7.6.2.2

サイズ, 7.6.2.3

分析手順（キューブ・スクリプト）, 3.6.1 Application Express, 1.2, 6.3 算術演算, 5.2.1 属性集計, 4.5 属性

作成, 3.4.3.2

定義, 1.3.5, 3.4.3

認証, 2.3 自動データベース診断モニター, 7.6 自動ストレージ管理, 7.2.4 自動ワークロード・リポジトリ, 7.6 平均

累積, 5.4.9

移動, 5.4.8

平均演算子（集計）, 9.1 平均ランク, 5.4.6 AVERAGE_RANKファンクション, 5.5.4 AVGファンクション, 5.5.4 AW$表, 7.3.2 AW$AWCREATE10G表, 7.3.2 AW$AWMD表, 7.3.2

B

バックアップとリカバリ, 7.7

バックアップ・オプション, 7.8

一括処理, 7.4.3

BI Publisher, 6.2

BI Suite, 1.3

バインド変数, 6.1, 6.2.4.3, 6.3.2.4, 6.3.3.2

ブランチ（Application Express）, 6.3.2.3

作成ログ, 3.4.5

BusinessObjects Enterprise, 1.3

C

計算済メジャー

作成, 5.3

定義, 5.1

ジェネレータ, 5.3

計算テンプレート, 5.3.1, 5.4 計算

非定型, 5.5

問合せでの, 4.4

ネストした, 5.4.10

期間の範囲, 5.3.2

変更、保存, 3.3.2 文字関数, 4.2.3 データ・クリア手順（キューブ・スクリプト）, 3.6.1 CLEAR LEAVESコマンド, 7.9.3.2 Cognos ReportNet, 1.3 列リンク, 6.3.3.3 接続文字列、Analytic Workspace Managerで使用, 2.4.4 接続、定義, 2.4.3 CREATE ANY DIMENSION権限, 2.3 CREATE ANY MATERIALIZED VIEW権限, 2.3 CREATE DIMENSION権限, 2.3 CREATE MATERIALIZED VIEW権限, 2.3 CREATE SESSION権限, 2.3, 2.3 アナリティック・ワークスペースの作成, 7.6.2.4 キューブ・マテリアライズド・ビュー, 3.6.3, 7.9 キューブ・パーティショニング・アドバイザ, 3.5.3 CUBE SCAN操作, 4.6.2 キューブ・スクリプト, 3.6.1 キューブのセキュリティ, 8.2.1.3 キューブ・ビュー, 3.5.6, 4.1.1 キューブ

作成, 3.5

定義, 1.3.1, 3.5

マッピング, 3.5.2

マテリアライズド・ビューの要件, 3.6.3

累積計算, 5.4.9 カーソル, 1.1.5

D

ダッシュボード, 1.2

データ・ディクショナリ・ビュー, 4.7, 7.3.1

データ表示, 3.4.7, 3.5.5

データ・ロード, 3.4.5, 3.5.4

データ・メンテナンス, 3.6

データ・モデル

次元データ・モデルの説明, 1.3

設計, 3.1

保存, 3.9

データ・ポンプ, 7.8 データ・セキュリティ, 8.1.2 データ・セキュリティ・ポリシー, 8.3 データソース

データベース・オブジェクト, 3.2

マッピング, 3.4.4

データベース接続、定義, 2.4.3 Database Control, 7.6 データベース統合, 1.1.1 データベース・セキュリティ, 2.3 DBAスクリプトのダウンロード, 7.6.3 DBA_AW_OBJビュー, 7.3.1 DBA_AW_PROPビュー, 7.3.1 DBA_AW_PSビュー, 7.3.1 DBA_AWSビュー, 7.3.1, 7.6.2.2 DBA_OBJECTSビュー, 7.6.2.4 DBA_REGISTRYビュー, 7.6.2.1 DBMS_AW_STATS PL/SQLパッケージ, 7.5 DBMS_CUBE PL/SQLパッケージ, 3.6, 7.9.2.1 DBMS_LOB PL/SQLパッケージ, 7.6.2.3 DBMS_METADATA PL/SQLパッケージ, 7.9.5 DBMS_MVIEW PL/SQLパッケージ, 7.9.2.2, 7.9.5 DBMS_SCHEDULER PL/SQLパッケージ, 3.6 DBMS_XPLAN PL/SQLパッケージ, 7.9.5 稠密ランク, 5.4.6 DENSE_RANKファンクション, 5.5.4 ディメンション階層

「階層」を参照

ディメンションのオブジェクト・セキュリティ, 8.2.2.2 ディメンションの順序、集計に影響する, 9.3.1 ディメンションのセキュリティ, 8.2.1.2 ディメンション・ビュー, 4.1.2 ディメンション

作成, 3.4

定義, 1.3.3, 3.4

メンバーの表示, 3.4.7

Discoverer Plus OLAP, 1.3 ディスク領域使用量, 7.6.5 ディスク、データの分散, 7.2.4 データの表示, 3.5.5 ドリル可能なレポート, 6.2 ドリル操作, 4.2.3, 6.3.3.3 ドリル操作（Application Express）, 6.3.3 ダンプ・ファイル, 7.8 動的パフォーマンス表, 7.6.1

E

編集、保存, 3.3.2

終了日属性, 3.4.3.1

Enterprise Manager Database Control, 7.6

実行計画, 4.6

EXP_FULL_DATABASE権限, 7.8

EXPLAIN PLANコマンド, 4.6

プラグインによる拡張性, 2.4.5

EXTENT MANAGEMENT LOCAL, 7.2

F

FAST SOLVEメソッド, 7.9.3.2

問合せのフィルタリング, 4.2.1

非定型の計算, 5.5

将来の期間, 5.4.3

G

ジェネレータ、計算済メジャー, 5.3

Global Computing Company

データ要件, A.1.1

GLOBAL QUERY REWRITE権限, 7.9.4 Globalスキーマのダウンロード, 2.1 グレゴリオ暦, 5.3.2

H

非表示項目（Application Express）, 6.3.3.1

HIER_ANCESTORファンクション, 5.5.4

HIER_CHILD_COUNTファンクション, 5.5.4

HIER_DEPTHファンクション, 5.5.4

HIER_LEVELファンクション, 5.5.4

HIER_PARENTファンクション, 5.5.4

HIER_TOPファンクション, 5.5.4

階層の平均演算子（集計）, 9.1

階層演算子, 9.2.3

階層問合せ, 4.2.3

階層

作成, 3.4.2

定義, 1.3.4, 3.4.2

レベルベース, 3.4.1

サポートされるタイプ, 3.4.2

階層ビュー, 4.1.2

I

指数, 5.4.2

初期化パラメータ, 7.1

init.oraファイル, 7.1

Analytic Workspace Managerのインストール, 2.4.1

OLAPオプションのインストール、確認, 7.6.2.1

データベースへの統合, 1.1.1

J

JOB_QUEUE_PROCESSESパラメータ, 7.1, 7.4.3

L

LAGファンクション, 5.4.3, 5.5.4

LAG_VARIANCEファンクション, 5.5.4

LAG_VARIANCE_PERCENTファンクション, 5.5.4

言語のサポート, 3.7

レイアウト・テンプレート（BI Publisher）, 6.2.1

LEADファンクション, 5.4.3, 5.5.4

LEAD_VARIANCEファンクション, 5.5.4

LEAD_VARIANCE_PERCENTファンクション, 5.5.4

レベルベース・ディメンション, 3.4

レベルベース階層, 3.4.1

レベル

作成, 3.4.1

定義, 1.3.4.1

ロード手順（キューブ・スクリプト）, 3.6.1 データのロード, 3.4.5, 3.5.4 ローカライゼーション, 3.7 ログイン名, 2.3 LOV（値リスト）, 6.2.4, 6.3.2.2

M

メンテナンス方法, 3.6

メンテナンス・スクリプト, 3.6.2

メンテナンス・ウィザード, 3.4.5, 3.5.4

マッピング、作成, 3.4.4

マテリアライズド・ビュー

アクセス権限, 7.9.4

キューブの作成, 3.6.3

リフレッシュ・ログ, 7.9.1.2

MAXファンクション, 5.5.4 最大

累積, 5.4.9

移動, 5.4.8

メジャー・フォルダ、作成, 3.8 メジャー

作成, 3.5.1

定義, 1.3.2

MINファンクション, 5.5.4 最小

累積, 5.4.9

移動, 5.4.8

移動計算, 5.4.8

N

自然キー, 3.4

ネストした計算, 5.4.10

通常階層, 3.4.2

O

オブジェクト・セキュリティ, 8.1.2, 8.2.1, 8.2.2.1

オブジェクト、マッピング, 3.4.4

OLAP DML

計算済メジャー, 5.6

OLAP DML手順（キューブ・スクリプト）, 3.6.1 OLAPオプション、インストールの確認, 7.6.2.1 OLAP_DBAロール, 2.3 OLAP_USERロール, 2.3, 2.3 OLAP_XS_ADMINロール, 2.3, 8.3 オプティマイザ統計, 7.5 Oracle Application Express, 1.2 Oracle Business Intelligence, 1.3 Oracle Real Application Clusters, 1.1.5, 7.4.3 Oracle Recovery Manager, 7.7 OracleBI Discoverer Plus OLAP, 1.3 OracleBI Spreadsheet Add-In, 1.3 OracleBI Suite Enterprise Edition, 1.3 OUTER計画オプション, 4.6.2 アナリティック・ワークスペースの所有者、確認, 7.6.2.2

P

ページ定義（Application Express）, 6.3.2

平行期間, 5.4.7

パラレル処理, 7.4.3

パラメータ・ファイル, 7.1

親子リレーション, 1.3.4.1

PARTIAL OUTER計画オプション, 4.6.2

パーティション化

メリット, 3.5.3

説明, 3.5.3.2

詳細, 7.4.1

パーティショニング・アドバイザ（キューブ用）, 3.5.3 パーティション化方法, 3.5.3.1 パフォーマンス・カウンタ, 7.6.1 現在までの期間, 5.4.4 pfile設定, 7.1 PLAN_TABLE表, 4.6 PL/SQL手順（キューブ・スクリプト）, 3.6.1 プラグイン, 2.4.5 前の期間, 5.4.3 権限, 8.1.3 PS$表, 7.3.2

Q

問合せ、フィルタリング, 4.2.1

クエリー・リライト, 7.9.4

問合せツール, 1.2

QUERY_REWRITE_ENABLEDパラメータ, 7.9.4

QUERY_REWRITE_INTEGRITYパラメータ, 7.9.4

ディメンションとキューブの問合せ, 4

R

RAC

「Oracle Real Application Clusters」を参照

不規則階層, 3.4.2 ランク, 5.4.6 RANKファンクション, 5.5.4 Real Application Clusters

「Oracle Real Application Clusters」を参照

リフレッシュ・ログ, 7.9.1.2 リフレッシュ・メソッド, 7.9.2, 7.9.3.1 レポート・エントリ（BI Publisher）, 6.2.1 レポート・レイアウト（BI Publisher）, 6.2.3 レポート, 6.2 RMAN, 7.7 ROW_NUMBERファンクション, 5.5.4

S

サンプル・スキーマのダウンロード, 2.1

伸縮演算子, 9.2.2

メンテナンスのスケジュール, 7.4.3

セキュリティ, 8.2.2.1

マテリアライズド・ビュー, 7.9.4

セキュリティ・ポリシー, 8.3 サーバー・パラメータ・ファイル, 7.1 SESSIONSパラメータ, 7.1 シェア, 5.4.5 SHAREファンクション, 5.5.4 単一行関数, 5.2.3 アナリティック・ワークスペースのサイズ, 7.6.2.3 スキップレベル階層, 3.4.2 ソース・データ, 3.2 Spreadsheet Add-In, 1.3 静的データ・ディクショナリ・ビュー, 4.7, 7.3.1 手順タイプ, 3.6.1 SUMファンクション, 5.5.4 合計演算子（集計）, 9.1 サロゲート・キー, 3.4 システム表, 7.3.2

T

表領域, 7.2

テンプレート

BI Publisher, 6.2.2

計算, 5.3.1

作成, 3.9

Timeディメンション, 3.4 計算に含める期間, 5.3.2 期間属性, 3.4.3.1 合計

累積, 5.4.9

移動, 5.4.8

トランスポータブル表領域, 7.8, 7.8

U

UNDO_MANAGEMENTパラメータ, 7.1

UNDO_TABLESPACEパラメータ, 7.1

一意キー属性, 3.4.3.3

ユーザー名, 2.3

USER_AW_OBJビュー, 7.3.1

USER_AW_PROPビュー, 7.3.1

USER_AW_PSビュー, 7.3.1

USER_AWSビュー, 7.3.1

USER_CUBE_DIM_VIEW_COLUMNSビュー, 4.1.2.2

USER_CUBE_DIM_VIEWSビュー, 4.1.2.1

USER_CUBE_HIER_LEVELSビュー, 4.2.1

USER_CUBE_HIER_VIEWSビュー, 4.1.2.1

USER_CUBE_VIEW_COLUMNSビュー, 4.1.1.2

USER_MVIEWSビュー, 7.9.1.1

V

V$AW_AGGREGATE_OPビュー, 7.6.1

V$AW_ALLOCATE_OPビュー, 7.6.1

V$AW_CALCビュー, 7.6.1

V$AW_LONGOPSビュー, 7.6.1

V$AW_OLAPビュー, 7.6.1

V$AW_SESSION_INFOビュー, 7.6.1

値ベース・ディメンション, 3.4

値ベース階層, 3.4.2

W

加重演算子, 9.2.2

重み付け合計（集計）, 9.1

WHERE句演算, 4.2.3

X

XMLテンプレート, 7.8

Copyright © 2003, 2010, Oracle and/or its affiliates. All rights reserved.