24 分析ビューの概要
分析ビューは、メタデータ・オブジェクトであり、ユーザーがデータベースの表およびビューのデータに対する複雑な階層およびディメンションの問合せをすばやく簡単に作成できます。
次の項では、分析ビューの一般的な考慮事項について説明します。
24.1 分析ビューとは
分析ビューは、既存のデータベース表およびビューに格納されているデータの分析問合せを迅速に効率的に作成する方法を提供します。
分析ビューは、ディメンション・モデルを使用してデータを編成します。これらを使用すると、集計および計算をデータ・セットに簡単に追加でき、比較的単純なSQLで問い合せることができるデータをビューに表示できます。
標準のリレーショナル・ビューと同様、分析ビューには次の特徴があります。
-
メタデータ・オブジェクトです(データを格納しません)。
-
SQLを使用して問い合せることができます。
-
表、ビュー、外部表などの他のデータベース・オブジェクトからデータにアクセスできます。
-
複数の表を単一のビューに結合できます。
分析ビューには、次の特徴もあります。
-
ディメンションおよび階層概念を持つリッチ・ビジネス・モデルを使用してデータを編成します。
-
階層データを使用したシステム生成列を含みます。
-
データを自動的に集計します。
-
ビジネス・モデルに基づいた構文を使用して簡単に定義される埋込みメジャー計算を含みます。
-
プレゼンテーション・メタデータを含みます。
分析ビューの定義には、ナビゲーション、結合、集計および計算のルールが含まれるため、これらのルールを問合せに含める必要がありません。結合、集計およびメジャー計算を表す単純な表や複雑なSELECT
文を含めるのではなく、単純SQLを使用してスマート分析ビューを問い合せることができます。この方法には、次のようないくつかの利点があります。
-
簡略でより高速なアプリケーション開発。複雑な
SELECT
文を記述または生成するよりも、分析ビュー内で計算を定義する方が簡単です。 -
データベースで1回定義すると、多数のアプリケーションで再使用できる計算ルール。これにより、エンド・ユーザーは、一貫性のない結果を考慮することなくレポート作成ツールを自由に選択できます。
分析ビューは、特に次のユーザーに役立ちます。
-
データ・ウェアハウスのアーキテクトまたは設計者
-
ビジネス・インテリジェンス・アプリケーションの開発者
-
データベース・アナリスト
データ・ウェアハウス・アーキテクトにとって、分析ビューは、データ・ウェアハウスのデータをアプリケーション開発者およびビジネス・ユーザーに表示するためのツールです。BIアプリケーションで提供されるツールでは、問合せの生成、データの取得および結果の表示を行います。
分析ビューのコンポーネント
分析ビューのコンポーネント・オブジェクトの構成内容は次のとおりです。
-
属性ディメンション。これは、表またはビューを参照し、列を属性やレベルなどの高レベルのオブジェクトに編成するメタデータ・オブジェクトです。ディメンションおよび階層に関連するメタデータの多くは、属性ディメンション・オブジェクトで定義されます。
-
階層。これは、属性ディメンション・オブジェクトを参照するビューおよび階層関係を使用してデータを編成するビューのタイプです。ディメンションおよび階層に関連するデータは、階層から選択されます。
-
分析ビュー・オブジェクト。これは、ファクト・データを表示するビューのタイプです。分析ビューは、ファクト表と階層の両方を参照します。階層とメジャー・データはどちらも分析ビューから選択できます。
-
導出分析ビューは、SELECT文の
WITH
およびFROM
句で定義され、既存の分析ビューに基づきます。
データ・ディクショナリ・ビュー(ALL_ANALYTIC_VIEW_COLUMNS
など)には、分析ビューのコンポーネント・オブジェクトのメタデータおよび他の情報が含まれます。
DBMS_HIERARCHY
PL/SQLパッケージには、分析ビューおよび階層オブジェクトを検証するための関数、および検証関数によって生成されたメッセージの記録に使用できる表を作成するプロシージャが含まれます。
分析ビューのデータ・ソース
属性ディメンションおよび分析ビューは、通常、スター・スキーマ・ディメンション表およびファクト表をデータ・ソースとして使用します。大きいデータ・セットの場合、インメモリー列ストアの表により、分析ビューは最適な問合せパフォーマンスが得られます。分析ビューは、スノーフレーク・スキーマ、非正規化表、外部表およびリモート表とともに使用することもできます。
データ・ソースは、属性ディメンションまたは分析ビュー定義でusing_clause
を使用して指定します。データ・ソースの別名を指定できます。
データ・ソースへのアクセスに必要な権限を持つデータベース・ユーザーは、分析ビュー・オブジェクトを作成できます。作成者はビジネス・モデルを定義し、属性ディメンション、階層および分析ビューを作成して、データの問合せ方法およびこのモデルの実装方法を指定します。
マテリアライズド・ビューと分析ビュー
分析ビューまたは階層の問合せにまたがるマテリアライズド・ビューの作成は、サポートされていません。マテリアライズド・ビューは、分析ビューのcache_clause
のMEASURE_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_DIMENSIONS
、ALL_HIERARCHIES
およびALL_ANALYTIC_VIEWS
データ・ディクショナリ・ビュー(および対応するDBA
およびUSER
ビュー)のCOMPILE_STATE
列に記録されます。状態は次のいずれかです。
値 | 説明 |
---|---|
|
オブジェクトがエラーなしでコンパイルされました。 |
|
一部の変更に再コンパイルが必要か、オブジェクトはコンパイルされたがエラーが発生しました。 |
分析ビュー・オブジェクトに対するSQL DDL操作により、依存オブジェクトの状態がINVALID
に変更されます。たとえば、属性ディメンションに対する変更により、属性ディメンション、および属性ディメンションによってディメンション化される分析ビューを使用するすべての階層の状態がINVALID
に変更されます。また、属性ディメンションおよび分析ビューによって使用される表またはビューに対するDDL変更によって、これらのオブジェクトの状態がINVALID
に変更されます。
ALL_OBJECTS
データ・ディクショナリ・ビューには、VALID
またはINVALID
のSTATUS
列があります。属性ディメンション、階層および分析ビューの場合、STATUS
値はCOMPILE_STATE
に関連付けられています。COMPILE_STATE
がVALID
の場合、STATUS
値はVALID
です。COMPILE_STATE
がINVALID
の場合、STATUS
はINVALID
です。
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_STATE
はVALID
に設定されません。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_NAME
、MEMBER_CAPTION
およびMEMBER_DESCRIPTION
を使用します。
24.7 アプリケーション・コンテナとの分析ビューの共有
分析ビューをアプリケーション・コンテナと共有できます。
分析ビュー・オブジェクトの定義では、SHARING
句を使用して、属性ディメンション、階層、分析ビュー・メタデータまたはオブジェクトを、アプリケーション・コンテナと共有できます。この句の値は、次のとおりです。
値 | 説明 |
---|---|
|
共有しません。これがデフォルト値です。 |
|
メタデータのみ共有します。 |
|
オブジェクト(データを含む)を共有します。 |
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)で表示および実行できます。
データは、次の図に示すスター・スキーマ表にあります。
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;