24 分析ビューの概要

分析ビューは、メタデータ・オブジェクトであり、ユーザーがデータベースの表およびビューのデータに対する複雑な階層およびディメンションの問合せをすばやく簡単に作成できます。

次の項では、分析ビューの一般的な考慮事項について説明します。

24.1 分析ビューとは

分析ビューは、既存のデータベース表およびビューに格納されているデータの分析問合せを迅速に効率的に作成する方法を提供します。

分析ビューは、ディメンション・モデルを使用してデータを編成します。これらを使用すると、集計および計算をデータ・セットに簡単に追加でき、比較的単純なSQLで問い合せることができるデータをビューに表示できます。

標準のリレーショナル・ビューと同様、分析ビューには次の特徴があります。

  • メタデータ・オブジェクトです(データを格納しません)。

  • SQLを使用して問い合せることができます。

  • 表、ビュー、外部表などの他のデータベース・オブジェクトからデータにアクセスできます。

  • 複数の表を単一のビューに結合できます。

分析ビューには、次の特徴もあります。

  • ディメンションおよび階層概念を持つリッチ・ビジネス・モデルを使用してデータを編成します。

  • 階層データを使用したシステム生成列を含みます。

  • データを自動的に集計します。

  • ビジネス・モデルに基づいた構文を使用して簡単に定義される埋込みメジャー計算を含みます。

  • プレゼンテーション・メタデータを含みます。

分析ビューの定義には、ナビゲーション、結合、集計および計算のルールが含まれるため、これらのルールを問合せに含める必要がありません。結合、集計およびメジャー計算を表す単純な表や複雑なSELECT文を含めるのではなく、単純SQLを使用してスマート分析ビューを問い合せることができます。この方法には、次のようないくつかの利点があります。

  • 簡略でより高速なアプリケーション開発。複雑なSELECT文を記述または生成するよりも、分析ビュー内で計算を定義する方が簡単です。

  • データベースで1回定義すると、多数のアプリケーションで再使用できる計算ルール。これにより、エンド・ユーザーは、一貫性のない結果を考慮することなくレポート作成ツールを自由に選択できます。

分析ビューは、特に次のユーザーに役立ちます。

  • データ・ウェアハウスのアーキテクトまたは設計者

  • ビジネス・インテリジェンス・アプリケーションの開発者

  • データベース・アナリスト

データ・ウェアハウス・アーキテクトにとって、分析ビューは、データ・ウェアハウスのデータをアプリケーション開発者およびビジネス・ユーザーに表示するためのツールです。BIアプリケーションで提供されるツールでは、問合せの生成、データの取得および結果の表示を行います。

分析ビューのコンポーネント

分析ビューのコンポーネント・オブジェクトの構成内容は次のとおりです。

  • 属性ディメンション。これは、表またはビューを参照し、列を属性レベルなどの高レベルのオブジェクトに編成するメタデータ・オブジェクトです。ディメンションおよび階層に関連するメタデータの多くは、属性ディメンション・オブジェクトで定義されます。

  • 階層。これは、属性ディメンション・オブジェクトを参照するビューおよび階層関係を使用してデータを編成するビューのタイプです。ディメンションおよび階層に関連するデータは、階層から選択されます。

  • 分析ビュー・オブジェクト。これは、ファクト・データを表示するビューのタイプです。分析ビューは、ファクト表と階層の両方を参照します。階層とメジャー・データはどちらも分析ビューから選択できます。

  • 導出分析ビューは、SELECT文のWITHおよびFROM句で定義され、既存の分析ビューに基づきます。

データ・ディクショナリ・ビュー(ALL_ANALYTIC_VIEW_COLUMNSなど)には、分析ビューのコンポーネント・オブジェクトのメタデータおよび他の情報が含まれます。

DBMS_HIERARCHY PL/SQLパッケージには、分析ビューおよび階層オブジェクトを検証するための関数、および検証関数によって生成されたメッセージの記録に使用できる表を作成するプロシージャが含まれます。

分析ビューのデータ・ソース

属性ディメンションおよび分析ビューは、通常、スター・スキーマ・ディメンション表およびファクト表をデータ・ソースとして使用します。大きいデータ・セットの場合、インメモリー列ストアの表により、分析ビューは最適な問合せパフォーマンスが得られます。分析ビューは、スノーフレーク・スキーマ、非正規化表、外部表およびリモート表とともに使用することもできます。

データ・ソースは、属性ディメンションまたは分析ビュー定義でusing_clauseを使用して指定します。データ・ソースの別名を指定できます。

データ・ソースへのアクセスに必要な権限を持つデータベース・ユーザーは、分析ビュー・オブジェクトを作成できます。作成者はビジネス・モデルを定義し、属性ディメンション、階層および分析ビューを作成して、データの問合せ方法およびこのモデルの実装方法を指定します。

マテリアライズド・ビューと分析ビュー

分析ビューまたは階層の問合せにまたがるマテリアライズド・ビューの作成は、サポートされていません。マテリアライズド・ビューは、分析ビューのcache_clauseMEASURE_GROUP句で使用できます。

分析ビュー・オブジェクトの制約

分析ビューの問合せで最適な問合せパフォーマンスを得るには、スター・スキーマの問合せに通常使用する制約と同じ制約を使用する必要があります。属性ディメンションまたは分析ビューでは、ソース表またはビューで特定の制約を定義または有効化する必要はありません。また、属性ディメンションまたは分析ビューの定義により、これらの表またはビューに追加の制約は導入されません。階層の属性ディメンションまたは分析ビューで使用される表またはビューのデータが、メタデータ定義に固有の論理制約に準拠していることを検証するために、PL/SQL関数VALIDATE_HIERARCHYおよびVALIDATE_ANALYTIC_VIEWを使用できます。

分析ビューの命名規則

属性ディメンション、階層および分析ビューの命名規則、およびこれらのコンポーネント(属性、レベル、メジャーなど)の命名規則は、標準のデータベース識別子ルールに従います。識別子を囲むには、二重引用符を使用できます(拡張文字および大文字小文字混在など)。それ以外の場合は、標準の大文字および限られた文字ルールが適用されます。

24.2 分析ビューの権限

分析ビュー、属性ディメンションおよび階層で使用可能なシステム権限およびオブジェクト権限について説明します。

システム権限

次のシステム権限により、ユーザーは分析ビューのコンポーネント・オブジェクトを作成、変更または削除できます。

システム権限 説明
CREATE ANALYTIC VIEW

権限を付与したスキーマ内での分析ビューの作成。

CREATE ANY ANALYTIC VIEW

SYSを除く任意のスキーマ内での分析ビューの作成。

CREATE ATTRIBUTE DIMENSION

権限を付与したスキーマ内での属性ディメンションの作成。

CREATE ANY ATTRIBUTE DIMENSION

SYSを除く任意のスキーマ内での属性ディメンションの作成。

CREATE HIERARCHY

権限を付与したスキーマ内での階層の作成。

CREATE ANY HIERARCHY

SYSを除く任意のスキーマ内での階層の作成。

ALTER ANY ANALYTIC VIEW

SYSを除く任意のスキーマ内での分析ビューの名前の変更。

ALTER ANY ATTRIBUTE DIMENSION

SYSを除く任意のスキーマ内での属性ディメンションの名前の変更。

ALTER ANY HIERARCHY

SYSを除く任意のスキーマ内での階層の名前の変更。

DROP ANY ANALYTIC VIEW

SYSを除く任意のスキーマ内での分析ビューの削除。

DROP ANY ATTRIBUTE DIMENSION

SYSを除く任意のスキーマ内での属性ディメンションの削除。

DROP ANY HIERARCHY

SYSを除く任意のスキーマ内での階層の削除。

SELECT ANY TABLE

任意のスキーマ内での任意の分析ビューまたは階層の問合せまたは表示。

オブジェクト権限

次のオブジェクト権限により、ユーザーは分析ビューのコンポーネント・オブジェクトを問い合せたり、名前を変更できます。

オブジェクト権限 許可される操作
ALTER 分析ビュー、属性ディメンションまたは階層の名前の変更。
READ SELECT文でのオブジェクトの問合せ。
SELECT SELECT文でのオブジェクトの問合せ。

例24-1 システム権限の付与

次の文は、CREATEシステム権限をユーザーav_userに付与します。

GRANT CREATE ATTRIBUTE DIMENSION TO av_user;
GRANT CREATE HIERARCHY TO av_user;
GRANT CREATE ANALYTIC VIEW TO av_user;
GRANT SELECT ANY TABLE TO av_user;

例24-2 オブジェクト権限の付与

次の文は、すべてのオブジェクト権限をユーザーav_user2に付与し、ALTER権限を取り消します。

GRANT ALL ON "AV_USER".SALES_AV TO "AV_USER2";
REVOKE ALTER ON "AV_USER".SALES_AV FROM "AV_USER2";

24.3 分析ビューのアプリケーション・プログラミング・インタフェース

分析ビューのアプリケーション・プログラミング・インタフェースは、SQL DDL文、PL/SQLプロシージャと関数およびデータ・ディクショナリ・ビューで構成されています。

これらのインタフェースは、次の項に示されています。

分析ビューを作成および管理するためのSQL DDL文

分析ビュー・オブジェクトは、次のSQL DDL文を使用して作成および管理できます。

  • CREATE ANALYTIC VIEW

  • CREATE ATTRIBUTE DIMENSION

  • CREATE HIERARCHY

  • ALTER ANALYTIC VIEW

  • ALTER ATTRIBUTE DIMENSION

  • ALTER HIERARCHY

  • DROP ANALYTIC VIEW

  • DROP ATTRIBUTE DIMENSION

  • DROP HIERARCHY

これらの文の詳細は、Oracle Database SQL言語リファレンスCREATE ANALYTIC VIEWおよびその他の文を参照してください。

フィルタ処理されたファクトおよび追加メジャーのSQL SELECT文の句

SELECT文のWITHおよびFROM句では、階層のメジャー値の集計前に階層メンバーをフィルタ処理する1つ以上の一時分析ビューを定義できます。問合せで使用される追加のメジャーを定義することもできます。フィルタ処理されたファクトおよび追加メジャーは既存の永続分析ビューに基づいていますが、これらは永続分析ビューの定義そのものを変更するわけではありません。

分析ビュー用のPL/SQLパッケージ

分析ビュー・オブジェクトおよび階層オブジェクトのデータは、DBMS_HIERARCHYパッケージの次のプロシージャを使用して検証できます。

  • CREATE_VALIDATE_LOG_TABLEプロシージャ

  • VALIDATE_ANALYTIC_VIEW関数

  • VALIDATE_CHECK_SUCCESS関数

  • VALIDATE_HIERARCHY関数

このパッケージの詳細は、Oracle Database PL/SQLパッケージおよびタイプ・リファレンスDBMS_HIERARCHYに関する項を参照してください。

分析ビューのデータ・ディクショナリ・ビュー

次のデータ・ディクショナリ・ビューには、分析ビュー・オブジェクトに関する情報が含まれています。接頭辞ALLが付いたビューのみが表示されます。また、各ビューには、対応するDBAバージョンとUSERバージョンがあります。

分析ビューのビュー

  • ALL_ANALYTIC_VIEW_ATTR_CLASS

  • ALL_ANALYTIC_VIEW_BASE_MEAS

  • ALL_ANALYTIC_VIEW_CALC_MEAS

  • ALL_ANALYTIC_VIEW_CLASS

  • ALL_ANALYTIC_VIEW_COLUMNS

  • ALL_ANALYTIC_VIEW_DIM_CLASS

  • ALL_ANALYTIC_VIEW_DIMENSIONS

  • ALL_ANALYTIC_VIEW_HIER_CLASS

  • ALL_ANALYTIC_VIEW_HIERS

  • ALL_ANALYTIC_VIEW_KEYS

  • ALL_ANALYTIC_VIEW_LEVEL_CLASS

  • ALL_ANALYTIC_VIEW_LEVELS

  • ALL_ANALYTIC_VIEW_LVLGRPS

  • ALL_ANALYTIC_VIEW_MEAS_CLASS

  • ALL_ANALYTIC_VIEWS

属性ディメンションのビュー

  • ALL_ATTRIBUTE_DIM_ATTR_CLASS

  • ALL_ATTRIBUTE_DIM_ATTRS

  • ALL_ATTRIBUTE_DIM_CLASS

  • ALL_ATTRIBUTE_DIM_JOIN_PATHS

  • ALL_ATTRIBUTE_DIM_KEYS

  • ALL_ATTRIBUTE_DIM_LEVEL_ATTRS

  • ALL_ATTRIBUTE_DIM_LEVELS

  • ALL_ATTRIBUTE_DIM_LVL_CLASS

  • ALL_ATTRIBUTE_DIM_ORDER_ATTRS

  • ALL_ATTRIBUTE_DIM_TABLES

  • ALL_ATTRIBUTE_DIMENSIONS

階層のビュー

  • ALL_HIER_CLASS

  • ALL_HIER_COLUMNS

  • ALL_HIER_HIER_ATTR_CLASS

  • ALL_HIER_HIER_ATTRIBUTES

  • ALL_HIER_JOIN_PATHS

  • ALL_HIER_LEVEL_ID_ATTRS

  • ALL_HIER_LEVELS

  • ALL_HIERARCHIES

これらのビューの詳細は、Oracle DatabaseリファレンスALL_ANALYTIC_VIEWSおよびその他のビューを参照してください。

24.4 分析ビューのコンパイル状態

属性ディメンション、階層または分析ビューを作成または変更すると、Oracle Databaseで、オブジェクトのメタデータの内部の妥当性が確認されます。

分析ビューのSQL DDL CREATEおよびALTER文には、FORCEおよびNOFORCEオプションがあり、デフォルトではNOFORCEが使用されます。別のオブジェクトに依存するメタデータの検証はオプションで、FORCEおよびNOFORCEオプションによって決定されます。

NOFORCEを指定してコンパイルに失敗すると、CREATEまたはALTER操作が失敗し、エラーが発生します。FORCEを指定すると、コンパイルに失敗してもCREATEまたはALTERは成功します。

COMPILEキーワードを指定すると、コンパイルを明示的に起動できます。コンパイルは、問合せ中に必要に応じて暗黙的に起動されます。オブジェクトがコンパイルされない場合は、問合せによってエラーが返され、暗黙的にコンパイルできません。

コンパイル状態は、ALL_ATTRIBUTE_DIMENSIONSALL_HIERARCHIESおよびALL_ANALYTIC_VIEWSデータ・ディクショナリ・ビュー(および対応するDBAおよびUSERビュー)のCOMPILE_STATE列に記録されます。状態は次のいずれかです。

説明

VALID

オブジェクトがエラーなしでコンパイルされました。

INVALID

一部の変更に再コンパイルが必要か、オブジェクトはコンパイルされたがエラーが発生しました。

分析ビュー・オブジェクトに対するSQL DDL操作により、依存オブジェクトの状態がINVALIDに変更されます。たとえば、属性ディメンションに対する変更により、属性ディメンション、および属性ディメンションによってディメンション化される分析ビューを使用するすべての階層の状態がINVALIDに変更されます。また、属性ディメンションおよび分析ビューによって使用される表またはビューに対するDDL変更によって、これらのオブジェクトの状態がINVALIDに変更されます。

ALL_OBJECTSデータ・ディクショナリ・ビューには、VALIDまたはINVALIDSTATUS列があります。属性ディメンション、階層および分析ビューの場合、STATUS値はCOMPILE_STATEに関連付けられています。COMPILE_STATEVALIDの場合、STATUS値はVALIDです。COMPILE_STATEINVALIDの場合、STATUSINVALIDです。

24.5 データの検証

問合せ結果の正確さを保証するには、階層およびアナリティックのデータを検証する必要があります。

階層または分析ビューのデータを検証するには、PL/SQLパッケージDBMS_HIERARCHYの関数を使用します。VALIDATE_HIERARCHY関数およびVALIDATE_ANALYTIC_VIEW関数は、データを検証して結果を表に格納します。これらの関数のオプションの引数は表の名前です。CREATE_VALIDATE_LOG_TABLEプロシージャは、この目的のために使用できる表を作成します。表を指定しない場合は、VALIDATE_HIERARCHY関数およびVALIDATE_ANALYTIC_VIEW関数によって表が作成されます。

関連付けられている属性ディメンションまたは分析ビューで使用される表に対するSQL DDLまたはDMLによる変更、または属性ディメンション、階層または分析ビュー自体へのDDLによる変更を行うと、階層の状態がINVALIDに変更されます。

データ・セキュリティ・ポリシーが階層、分析ビュー、または関連付けられている属性ディメンションによって使用される表やビューに適用されている場合は、検証の状態を判別できず、VALIDATE_STATEVALIDに設定されません。VALIDATE_HIERARCHY関数またはVALIDATE_ANALYTIC_VIEW関数を実行すると、その時点のそのユーザーにおいて階層または分析ビューが有効であるかどうかが示されます。

属性ディメンションによって使用される表またはビューに対するSQL DMLによる変更が、データ・ディクショナリへの問合せまたはVALIDATE_HIERARCHY関数の実行と階層または分析ビューへの問合せの実行の間に行われた場合、階層は無効になることがあります。問合せで階層が有効であるようにするには、読取り専用トランザクションの作成(たとえば、SET TRANSACTION READ ONLY)、検証関数の実行、検証の成功の確認、問合せの実行、およびCOMMIT文やROLLBACK文によるトランザクションの終了を行います。

24.6 分析ビューの分類

分類により、属性ディメンション、階層および分析ビュー・オブジェクトに対して、さらにはこれらのコンポーネント(属性ディメンション・キー、属性、レベル、メジャーなど)に説明的なメタデータが提供されます。

アプリケーションは、分類を使用して、階層および分析ビューに関する情報を表示できます。分類は、表および列に関するコメントに似ていますが、コメントは単一の値です。同じオブジェクトに、任意の数の分類を指定できます。言語別に値を変更できます。分類値は常にテキスト・リテラルで、その最大長は4000バイトです。

分類は、SQL問合せには関係ありませんが、ツールまたはアプリケーションで使用するデータ・ディクショナリ・ビューで使用できます。CAPTIONおよびDESCRIPTION分類には、分類をサポートするすべてのオブジェクトに対するDDLショートカットがあります。

分類値の言語を指定できます。言語を指定する場合は、有効なNLS_LANGUAGE値である必要があります。言語を指定しない場合、分類の言語値はNULLで、デフォルトのデータベース言語が使用されます。

CAPTIONおよびDESCRIPTIONのDDLショートカットは、NULL言語にのみ適用されます。特定の言語のCAPTIONおよびDESCRIPTION分類を指定するには、完全なCLASSIFICATION構文を使用する必要があります。

SQLツールでは、NULL言語の値はデフォルトとして解釈されます。たとえば、ツールで属性ディメンションのCAPTIONを検索しているとします。ツールは、最初に現在のNLS_LANGUAGEに一致する言語を持つCAPTIONを検索します。見つかった場合、そのCAPTION値を使用します。見つからない場合、NULL言語の値を持つCAPTIONを検索して、それを使用します。SQLロジックは、ユーザー、ツールまたはアプリケーションによって決まります。

言語によって異なる説明的なメタデータを階層のメンバーに提供するには、階層属性MEMBER_NAMEMEMBER_CAPTIONおよびMEMBER_DESCRIPTIONを使用します。

24.7 アプリケーション・コンテナとの分析ビューの共有

分析ビューをアプリケーション・コンテナと共有できます。

分析ビュー・オブジェクトの定義では、SHARING句を使用して、属性ディメンション、階層、分析ビュー・メタデータまたはオブジェクトを、アプリケーション・コンテナと共有できます。この句の値は、次のとおりです。

説明

NONE

共有しません。これがデフォルト値です。

METADATA

メタデータのみ共有します。

OBJECT

オブジェクト(データを含む)を共有します。

METADATAを指定すると、オブジェクトの定義のみがアプリケーション・コンテナと共有されます。

OBJECTを指定すると、属性ディメンション、階層または分析ビュー・オブジェクト(オブジェクトのデータ・ソースを含む)がアプリケーション・コンテナと共有されます。

24.8 分析ビュー・オブジェクトの変更または削除

SQL DDL文を使用すると、オブジェクトの名前変更またはオブジェクトの削除を行うことができます。

名前以外の分析ビュー・オブジェクトの特性を変更するには、CREATE OR REPLACE文を使用して、目的の変更が適用されたオブジェクトに置き換えます。

例24-3 属性ディメンションの名前変更

次の例は、属性ディメンションを名前変更します。

ALTER ATTRIBUTE DIMENSION product_attr_dim RENAME TO myproduct_attr_dim;

例24-4 属性ディメンションの削除

次の例は、属性ディメンションを削除します。

DROP ATTRIBUTE DIMENSION myproduct_attr_dim;

24.9 例のデータとスクリプト

この項では、分析ビューの例が基にしているデータについて説明します。分析ビュー・コンポーネント・オブジェクトを作成するためのSQL文も含まれています。

データおよび分析ビュー・コンポーネントについては、次のトピックで説明しています。

24.9.1 例のデータとスクリプトについて

例で使用されるデータは、単一のファクト表の売上データ、および3つのディメンション表(期間、製品および地理的データ)で構成されています。

例に使用されている表、分析ビュー・コンポーネント・オブジェクトおよび問合せを作成するSQLスクリプトは、Oracle Live SQL Webサイト(https://livesql.oracle.com/apex/livesql/file/index.html)で表示および実行できます。

データは、次の図に示すスター・スキーマ表にあります。

図24-1 分析ビューの例の表

図24-1の説明が続きます
「図24-1 分析ビューの例の表」の説明

SALES_FACT表のMONTH_ID、DEPARTMENT_IDおよびSTATE_PROVINCE_ID列は、それぞれTIME_DIM、PRODUCT_DIMおよびGEOGRAPHY_DIMディメンション表の外部キーです。

各ディメンション表で、_ID列はキーとして使用され、_NAME列は記述子として使用されます。他の列は、ソートまたはレポートのための属性として使用できます。

_ID列および_NAME列のデータには1対1の関係があります。期間でソートするには、TIME_DIM表の_END_DATE列を使用します。

24.9.2 Create Attribute Dimension文

このトピックには、例の属性ディメンションを作成するためのSQL文が含まれています。

time_attr_dim属性ディメンションの作成

time_attr_dim属性ディメンションは、TIME_DIMディメンション表に基づいています。次の文は属性ディメンションを作成します。

CREATE OR REPLACE ATTRIBUTE DIMENSION time_attr_dim
DIMENSION TYPE TIME
USING time_dim
ATTRIBUTES
 (year_id
   CLASSIFICATION caption VALUE 'YEAR_ID'
   CLASSIFICATION description VALUE 'YEAR ID',
  year_name
    CLASSIFICATION caption VALUE 'YEAR_NAME'
    CLASSIFICATION description VALUE 'Year',
  year_end_date
    CLASSIFICATION caption VALUE 'YEAR_END_DATE'
    CLASSIFICATION description VALUE 'Year End Date',
  quarter_id
    CLASSIFICATION caption VALUE 'QUARTER_ID'
    CLASSIFICATION description VALUE 'QUARTER ID',
  quarter_name
    CLASSIFICATION caption VALUE 'QUARTER_NAME'
    CLASSIFICATION description VALUE 'Quarter',
  quarter_end_date
    CLASSIFICATION caption VALUE 'QUARTER_END_DATE'
    CLASSIFICATION description VALUE 'Quarter End Date',
  quarter_of_year
    CLASSIFICATION caption VALUE 'QUARTER_OF_YEAR'
    CLASSIFICATION description VALUE 'Quarter of Year',    
  month_id
    CLASSIFICATION caption VALUE 'MONTH_ID'
    CLASSIFICATION description VALUE 'MONTH ID',
  month_name
    CLASSIFICATION caption VALUE 'MONTH_NAME'
    CLASSIFICATION description VALUE 'Month',
  month_long_name
    CLASSIFICATION caption VALUE 'MONTH_LONG_NAME'
    CLASSIFICATION description VALUE 'Month Long Name',
  month_end_date
    CLASSIFICATION caption VALUE 'MONTH_END_DATE'
    CLASSIFICATION description VALUE 'Month End Date',
  month_of_quarter
    CLASSIFICATION caption VALUE 'MONTH_OF_QUARTER'
    CLASSIFICATION description VALUE 'Month of Quarter',
  month_of_year
    CLASSIFICATION caption VALUE 'MONTH_OF_YEAR'
    CLASSIFICATION description VALUE 'Month of Year',
  season
    CLASSIFICATION caption VALUE 'SEASON'
    CLASSIFICATION description VALUE 'Season',
  season_order
    CLASSIFICATION caption VALUE 'SEASON_ORDER'
    CLASSIFICATION description VALUE 'Season Order')
LEVEL month
  LEVEL TYPE MONTHS
  CLASSIFICATION caption VALUE 'MONTH'
  CLASSIFICATION description VALUE 'Month'
  KEY month_id
  MEMBER NAME month_name
  MEMBER CAPTION month_name
  MEMBER DESCRIPTION month_long_name
  ORDER BY month_end_date
  DETERMINES (month_end_date,
    quarter_id,
    season,
    season_order,
    month_of_year,
    month_of_quarter)
LEVEL quarter
  LEVEL TYPE QUARTERS
  CLASSIFICATION caption VALUE 'QUARTER'
  CLASSIFICATION description VALUE 'Quarter'
  KEY quarter_id
  MEMBER NAME quarter_name
  MEMBER CAPTION quarter_name
  MEMBER DESCRIPTION quarter_name
  ORDER BY quarter_end_date
  DETERMINES (quarter_end_date,
    quarter_of_year,
    year_id)
LEVEL year
  LEVEL TYPE YEARS
  CLASSIFICATION caption VALUE 'YEAR'
  CLASSIFICATION description VALUE 'Year'
  KEY year_id
  MEMBER NAME year_name
  MEMBER CAPTION year_name
  MEMBER DESCRIPTION year_name
  ORDER BY year_end_date
  DETERMINES (year_end_date)
LEVEL season
  LEVEL TYPE QUARTERS
  CLASSIFICATION caption VALUE 'SEASON'
  CLASSIFICATION description VALUE 'Season'
  KEY season
  MEMBER NAME season
  MEMBER CAPTION season
  MEMBER DESCRIPTION season
LEVEL month_of_quarter
  LEVEL TYPE MONTHS
  CLASSIFICATION caption VALUE 'MONTH_OF_QUARTER'
  CLASSIFICATION description VALUE 'Month of Quarter'
  KEY month_of_quarter;

product_attr_dim属性ディメンションの作成

product_attr_dim属性ディメンションは、PRODUCT_DIMディメンション表に基づいています。次の文は属性ディメンションを作成します。

CREATE OR REPLACE ATTRIBUTE DIMENSION product_attr_dim
USING product_dim 
ATTRIBUTES
 (department_id
    CLASSIFICATION caption VALUE 'DEPARTMENT_ID'
    CLASSIFICATION description VALUE 'DEPARTMENT ID',
  department_name
    CLASSIFICATION caption VALUE 'DEPARTMENT_NAME'
    CLASSIFICATION description VALUE 'Department',
  category_id
    CLASSIFICATION caption VALUE 'CATEGORY_ID'
    CLASSIFICATION description VALUE 'CATEGORY ID',
  category_name
    CLASSIFICATION caption VALUE 'CATEGORY_NAME'
    CLASSIFICATION description VALUE 'Category')
LEVEL DEPARTMENT
  CLASSIFICATION caption VALUE 'DEPARTMENT'
  CLASSIFICATION description VALUE 'Department'
  KEY department_id
  MEMBER NAME department_name
  MEMBER CAPTION department_name
  ORDER BY department_name
LEVEL CATEGORY
  CLASSIFICATION caption VALUE 'CATEGORY'
  CLASSIFICATION description VALUE 'Category'
  KEY category_id
  MEMBER NAME category_name
  MEMBER CAPTION category_name
  ORDER BY category_name
  DETERMINES(department_id)
ALL MEMBER NAME 'ALL PRODUCTS';

geography_attr_dim属性ディメンションの作成

geography_attr_dim属性ディメンションは、GEOGRAPHY_DIMディメンション表に基づいています。次の文は属性ディメンションを作成します。

CREATE OR REPLACE ATTRIBUTE DIMENSION geography_attr_dim
USING geography_dim
ATTRIBUTES
 (region_id
    CLASSIFICATION caption VALUE 'REGION_ID'
    CLASSIFICATION description VALUE 'REGION ID',
  region_name
    CLASSIFICATION caption VALUE 'REGION_NAME'
    CLASSIFICATION description VALUE 'Region',
  country_id
    CLASSIFICATION caption VALUE 'COUNTRY_ID'
    CLASSIFICATION description VALUE 'COUNTRY ID',
  country_name
    CLASSIFICATION caption VALUE 'COUNTRY_NAME'
    CLASSIFICATION description VALUE 'Country',
  state_province_id
    CLASSIFICATION caption VALUE 'STATE_PROVINCE_ID'
    CLASSIFICATION description VALUE 'STATE-PROVINCE ID',
  state_province_name
    CLASSIFICATION caption VALUE 'STATE_PROVINCE_NAME'
    CLASSIFICATION description VALUE 'State-Province')
LEVEL REGION
  CLASSIFICATION caption VALUE 'REGION'
  CLASSIFICATION description VALUE 'Region'
  KEY region_id
  MEMBER NAME region_name
  MEMBER CAPTION region_name
  ORDER BY region_name
LEVEL COUNTRY
  CLASSIFICATION caption VALUE 'COUNTRY'
  CLASSIFICATION description VALUE 'Country'
  KEY country_id
  MEMBER NAME country_name
  MEMBER CAPTION country_name
  ORDER BY country_name
  DETERMINES(region_id)
LEVEL STATE_PROVINCE
  CLASSIFICATION caption VALUE 'STATE_PROVINCE'
  CLASSIFICATION description VALUE 'State-Province'
  KEY state_province_id
  MEMBER NAME state_province_name
  MEMBER CAPTION state_province_name
  ORDER BY state_province_name
  DETERMINES(country_id)
ALL MEMBER NAME 'ALL CUSTOMERS';

24.9.3 Create Hierarchy文

このトピックには、例の階層を作成するためのSQL文が含まれています。

time_attr_dimを使用した階層の作成

次の文は、time_attr_dim属性ディメンションを使用する階層を作成します。

CREATE OR REPLACE HIERARCHY time_hier
  CLASSIFICATION caption VALUE 'CALENDAR'
  CLASSIFICATION description VALUE 'CALENDAR'
USING time_attr_dim
  (month CHILD OF
   quarter CHILD OF
   year);
--
CREATE OR REPLACE HIERARCHY time_season_hier
  CLASSIFICATION caption VALUE 'SEASONS'
  CLASSIFICATION description VALUE 'Seasons'
USING time_attr_dim 
  (month CHILD OF
   season);
--
CREATE OR REPLACE HIERARCHY time_year_season_hier
USING time_attr_dim
  (month CHILD OF
   season CHILD OF
   year);
--
CREATE OR REPLACE HIERARCHY time_month_of_qtr_hier
  CLASSIFICATION caption VALUE 'MONTH_OF_QUARTER'
  CLASSIFICATION description VALUE 'Month of Quarter'
USING time_attr_dim
  (month CHILD OF
   month_of_quarter);

product_attr_dimを使用した階層の作成

次の文は、product_attr_dim属性ディメンションを使用する階層を作成します。

CREATE OR REPLACE HIERARCHY product_hier
  CLASSIFICATION caption VALUE 'PRODUCT'
  CLASSIFICATION description VALUE 'Product'
USING product_attr_dim
  (CATEGORY
   CHILD OF department);

geography_attr_dimを使用した階層の作成

次の文は、geography_attr_dim属性ディメンションを使用する階層を作成します。

CREATE OR REPLACE HIERARCHY geography_hier
  CLASSIFICATION caption VALUE 'GEOGRAPHY'
  CLASSIFICATION description VALUE 'Geography'
USING geography_attr_dim
  (state_province
   CHILD OF country
   CHILD OF region);

24.9.4 Create Analytic View文

このトピックには、例の分析ビューを作成するためのSQL文が含まれています。

sales_av分析ビューの作成

次の文は、SALES_FACTファクト表を使用する分析ビューを作成します。

CREATE OR REPLACE ANALYTIC VIEW sales_av
  CLASSIFICATION caption VALUE 'Sales AV'
  CLASSIFICATION description VALUE 'Sales Analytic View'
  CLASSIFICATION created_by VALUE 'Harold C. Ehrlicher'
USING sales_fact
DIMENSION BY
  (time_attr_dim
    KEY month_id REFERENCES month_id
    HIERARCHIES (
      time_hier DEFAULT,
      time_season_hier,
      time_year_season_hier,
      time_month_of_qtr_hier),
   product_attr_dim
    KEY category_id REFERENCES category_id
    HIERARCHIES (
      product_hier DEFAULT),
   geography_attr_dim
    KEY state_province_id 
    REFERENCES state_province_id
    HIERARCHIES (
      geography_hier DEFAULT)
   )
MEASURES
 (sales FACT sales
    CLASSIFICATION caption VALUE 'Sales'
    CLASSIFICATION description VALUE 'Sales'
    CLASSIFICATION format_string VALUE '$9,999.99',
  units FACT units
    CLASSIFICATION caption VALUE 'Units'
    CLASSIFICATION description VALUE 'Units Sold'
    CLASSIFICATION format_string VALUE '9,999',
  sales_prior_period AS
    (LAG(SALES) OVER (HIERARCHY time_hier OFFSET 1))
      CLASSIFICATION caption VALUE 'Sales Prior Period'
      CLASSIFICATION description VALUE 'Sales Prior_Period'
      CLASSIFICATION format_string VALUE '$9,999.99',
  sales_chg_prior_period AS
    (LAG_DIFF(SALES) OVER (HIERARCHY time_hier OFFSET 1))
      CLASSIFICATION caption VALUE 'Sales Change Prior Period'
      CLASSIFICATION description VALUE 'Sales Change Prior Period'
      CLASSIFICATION format_string VALUE '$9,999.99',
  sales_qtr_ago AS
    (LAG(SALES) OVER (HIERARCHY time_hier OFFSET 1
      ACROSS ANCESTOR AT LEVEL quarter))
        CLASSIFICATION caption VALUE 'Sales Qtr Ago'
        CLASSIFICATION description VALUE 'Sales Qtr Ago'
        CLASSIFICATION format_string VALUE '$9,999.99',
  sales_chg_qtr_ago AS 
    (LAG_DIFF(SALES) OVER (HIERARCHY time_hier OFFSET 1
      ACROSS ANCESTOR AT LEVEL quarter))
        CLASSIFICATION caption VALUE 'Sales Change Qtr Ago'
        CLASSIFICATION description VALUE 'Sales Change Qtr Ago'
        CLASSIFICATION format_string VALUE '$9,999.99',
  sales_pct_chg_qtr_ago AS
    (LAG_DIFF_PERCENT(SALES) OVER (HIERARCHY time_hier OFFSET 1
      ACROSS ANCESTOR AT LEVEL quarter))
        CLASSIFICATION caption VALUE 'Sales Percent Change Qtr Ago'
        CLASSIFICATION description VALUE 'Sales Percent Change Qtr Ago'
        CLASSIFICATION format_string VALUE '999.99',
  sales_yr_ago AS
    (LAG(SALES) OVER (HIERARCHY time_hier OFFSET 1
      ACROSS ANCESTOR AT LEVEL year))
        CLASSIFICATION caption VALUE 'Sales Year Ago'
        CLASSIFICATION description VALUE 'Sales Year Ago'
        CLASSIFICATION format_string VALUE '$9,999.99',
  sales_chg_yr_ago AS
    (LAG_DIFF(SALES) OVER (HIERARCHY time_hier OFFSET 1
      ACROSS ANCESTOR AT LEVEL year))
        CLASSIFICATION caption VALUE 'Sales Change Year Ago'
        CLASSIFICATION description VALUE 'Sales Change Year Ago'
        CLASSIFICATION format_string VALUE '$9,999.99',
  sales_pct_chg_yr_ago AS
    (LAG_DIFF_PERCENT(SALES) OVER (HIERARCHY time_hier OFFSET 1
      ACROSS ANCESTOR AT LEVEL year))
        CLASSIFICATION caption VALUE 'Sales Percent Change Year Ago'
        CLASSIFICATION description VALUE 'Sales Percent Change Year Ago'
        CLASSIFICATION format_string VALUE '999.99',
  sales_qtd AS
    (SUM(sales) OVER (HIERARCHY time_hier
      BETWEEN UNBOUNDED PRECEDING AND CURRENT MEMBER
      WITHIN ANCESTOR AT LEVEL quarter))
        CLASSIFICATION caption VALUE 'Sales Quarter to Date'
        CLASSIFICATION description VALUE 'Sales Quarter to Date'
        CLASSIFICATION format_string VALUE '$9,999.99',
  sales_ytd AS
    (SUM(sales) OVER (HIERARCHY time_hier
      BETWEEN UNBOUNDED PRECEDING AND CURRENT MEMBER
      WITHIN ANCESTOR AT LEVEL year))
        CLASSIFICATION caption VALUE 'Sales Year to Date'
        CLASSIFICATION description VALUE 'Sales Year to Date'
        CLASSIFICATION format_string VALUE '$9,999.99',
  sales_2011 AS
    (QUALIFY (sales, time_hier = year['11']))
      CLASSIFICATION caption VALUE 'Sales CY2011'
      CLASSIFICATION description VALUE 'Sales CY2011'
      CLASSIFICATION format_string VALUE '$9,999.99',
  sales_pct_chg_2011 AS
    ((sales - (QUALIFY (sales, time_hier = year['11']))) /
    (QUALIFY (sales, time_hier = year['11'])))
      CLASSIFICATION caption VALUE 'Sales Pct Change CY2011'
      CLASSIFICATION description VALUE 'Sales Pct Change CY2011'
      CLASSIFICATION format_string VALUE '999.99',
  sales_share_time_parent AS
    (SHARE_OF(sales HIERARCHY time_hier PARENT))
      CLASSIFICATION caption VALUE 'Sales Share of Time Parent'
      CLASSIFICATION description VALUE 'Sales Share of Time Parent'
      CLASSIFICATION format_string VALUE '999.99',
  sales_share_season_parent AS
    (SHARE_OF(sales HIERARCHY time_season_hier PARENT))
      CLASSIFICATION caption VALUE 'Sales Share of Season Parent'
      CLASSIFICATION description VALUE 'Sales Share of Season Parent'
     CLASSIFICATION format_string VALUE '999.99',
  sales_share_prod_parent AS
    (SHARE_OF(sales HIERARCHY product_hier PARENT))
      CLASSIFICATION caption VALUE 'Sales Share of Product Parent'
      CLASSIFICATION description VALUE 'Sales Share of Product Parent'
      CLASSIFICATION format_string VALUE '999.99',
  sales_share_dept AS
    (SHARE_OF(sales HIERARCHY product_hier LEVEL department))
      CLASSIFICATION caption VALUE 'Sales Share of Product Parent'
      CLASSIFICATION description VALUE 'Sales Share of Product Parent'
      CLASSIFICATION format_string VALUE '999.99',
  sales_share_geog_parent AS
   (SHARE_OF(sales HIERARCHY geography_hier PARENT))
      CLASSIFICATION caption VALUE 'Sales Share of Geography Parent'
      CLASSIFICATION description VALUE 'Sales Share of Geography Parent'
      CLASSIFICATION format_string VALUE '999.99',
  sales_share_region AS
    (SHARE_OF(sales HIERARCHY geography_hier LEVEL region))
      CLASSIFICATION caption VALUE 'Sales Share of Geography Parent'
      CLASSIFICATION description VALUE 'Sales Share of Geography Parent'
      CLASSIFICATION format_string VALUE '999.99'   
  )
DEFAULT MEASURE SALES;