CREATE ANALYTIC VIEW
目的
CREATE
ANALYTIC
VIEW
文を使用すると、分析ビューを作成できます。分析ビューでは、ファクト・データのソースを指定して、計算またはデータに対して実行する他の分析操作を説明するメジャーを定義します。分析ビューでは、分析ビューの行を定義する属性ディメンションおよび属性階層も指定します。
前提条件
自分のスキーマ内に分析ビューを作成する場合は、CREATE
ANALYTIC
VIEW
システム権限が必要です。他のユーザーのスキーマ内に分析ビューを作成する場合は、CREATE
ANY
ANALYTIC
VIEW
システム権限が必要です。
構文
create_analytic_view::=
classification_clause::=
using_clause::=
source_clause::=
dim_by_clause::=
dim_key::=
dim_ref::=
hier_ref::=
measures_clause::=
av_measure::=
base_meas_clause::=
calc_meas_clause::=
meas_aggregate_clause::=
default_measure_clause::=
default_aggregate_clause::=
cache_clause::=
cache_specification::=
levels_clause::=
level_specification::=
level_group_type::=
fact_columns_clause::=
qry_transform_clause::=
セマンティクス
OR REPLACE
分析ビューの既存の定義を異なる定義で置換するには、OR
REPLACE
を指定します。
FORCEおよびNOFORCE
正常にコンパイルされない場合でも強制的に分析ビューを作成するには、FORCE
を指定します。NOFORCE
を指定した場合、分析ビューを正常にコンパイルする必要があり、そうでない場合はエラーが発生します。デフォルトは、NOFORCE
です。
IF NOT EXISTS
IF NOT EXISTS
を指定すると、次の効果が得られます。
-
分析ビューが存在していない場合は、文の最後に新しい分析ビューが作成されます。
-
分析ビューが存在している場合、これは文の最後の時点にある分析ビューになります。古いものが検出されるため、新しいものは作成されません。
単一の文には、一度に1つのOR REPLACE
またはIF NOT EXISTS
を指定できます。同じ文でOR REPLACE
とIF NOT EXISTS
の両方を使用すると、ORA-11541: REPLACE and IF NOT EXISTS cannot coexist in the same DDL statement
というエラーが発生します。
IF EXISTS
はCREATE
とともに使用すると、ORA-11543: Incorrect IF NOT EXISTS clause for CREATE statement
が発生します。
schema
分析ビューを作成するスキーマを指定します。スキーマを指定しない場合、自分のスキーマに分析ビューが作成されます。
analytic_view_name
分析ビューの名前を指定します。
SHARING
SHARING句は、アプリケーションのメンテナンスの際に、アプリケーション・ルートにオブジェクトを作成する場合に使用します。このタイプのオブジェクトはアプリケーション共通オブジェクトと呼ばれ、アプリケーション・ルートに属するアプリケーションPDBと共有できます。
次の共有属性のいずれかを使用して、オブジェクトを共有する方法を指定できます。
-
METADATA
- メタデータ・リンクはメタデータを共有しますが、そのデータは各コンテナに固有です。このタイプのオブジェクトは、メタデータリンク・アプリケーション共通オブジェクトと呼ばれます。 -
NONE
- オブジェクトは共有されず、アプリケーション・ルートでのみアクセスできます。
classification_clause
classification句を使用して、CAPTION
またはDESCRIPTION
分類の値を指定し、ユーザー定義分類を指定します。分類では、分析ビューとそのコンポーネントの情報を提供するためにアプリケーションで使用される、説明的なメタデータを提供します。
同じオブジェクトに、任意の数の分類を指定できます。分類の最大長は4000バイトです。
CAPTION
とDESCRIPTION
分類では、DDLショートカットCAPTION
'
caption
'
およびDESCRIPTION
'
description
'
または完全な分類構文を使用できます。
言語別に分類値を変更できます。CAPTION
またはDESCRIPTION
分類に言語を指定するには、完全な構文を使用する必要があります。言語を指定しない場合、分類の言語の値はNULL
です。言語の値は、NULL
または有効なNLS_LANGUAGE
値である必要があります。
using_clause
この句を使用して、分析ビューの構築に使用するソースを宣言します。
source_clause
次のソースのいずれかを指定して、分析ビューを作成できます。
-
ファクト表またはビュー。
-
外部表およびリモート表。
-
別のスキーマ内の表またはビュー。表またはビューに別名を指定できます。
REMOTE
特定のソースにREMOTE
を指定して、特定のソースがリモート・データによってバックアップされ、リモート・データとして最適化する必要があることを分析ビューに示します。
dim_by_clause
分析ビューの属性ディメンションを指定します。
dim_key
分析ビューで関連付けられている属性ディメンション、ファクト表の列、属性ディメンションの列および階層を指定します。
KEY
キーワードを使用して、ファクト表に1つ以上の列を指定します。
REFERENCES
キーワードを使用して、分析ビューをディメンション化する属性ディメンションの属性を指定します。各属性はレベル・キーである必要があります。DISTINCT
キーワードでは、非正規化ファクト表(属性ディメンションとファクト・データが同じ表に含まれている)の使用がサポートされています。ファクト・テーブルを使用して属性ディメンションが定義されている場合は、REFERENCES
DISTINCT
を使用します。
HIERARCHIES
キーワードを使用して、属性ディメンションを使用する分析ビューの階層を指定します。
dim_ref
属性ディメンションを指定します。属性ディメンションの別名を指定できます。これは、同じディメンションを複数回使用する場合や、異なるスキーマからの同じ名前の複数のディメンションを使用する場合に必要になります。
hier_ref
階層を指定します。階層の別名を指定できます。リストのいずれかの階層をデフォルトとして指定できます。デフォルトを指定しない場合、リストの最初の階層がデフォルトになります。
measures_clause
分析ビューのメジャーを指定します。
av_measure
この分析ビュー内のメジャー全体について、単一のファクト列または式のいずれかを使用してメジャーを定義します。メジャーは、ベース・メジャーまたは計算済メジャーのいずれかになります。
base_measure_clause
オプションでファクト列またはmeas_aggregate_clause
あるいはその両方を指定して、ベース・メジャーを定義します。ファクト列を指定しない場合、分析ビューではメジャーと同じ名前のファクト表の列が使用されます。同じ名前の列が存在しない場合、エラーが発生します。
calc_measure_clause
分析ビュー式を指定して、計算済メジャーを定義します。式は分析ビューの他のメジャーを参照することもありますが、ファクト列を参照しないこともあります。計算済メジャーは集計されたベース・メジャーに対して計算されるため、aggregate句はありません。
分析ビュー式の構文と説明については、「分析ビュー式」を参照してください。
default_measure_clause
分析ビューのデフォルト・メジャーとして使用するメジャーを指定します。メジャーを指定しない場合、最初に定義されたメジャーがデフォルトになります。
meas_aggregate_clausè
ベース・メジャーのデフォルト集計フアンクションを指定します。集計ファンクションを指定しない場合は、default_aggregate_clause
によって指定されたファンクションが使用されます。
aggr_function
meas_aggregate_clause
およびdefault_aggregate_clause
で集計に使用できるファンクションは次のとおりです: APPROX_COUNT_DISTINCT
、APPROX_COUNT_DISTINCT_AGG
、AVG
、COUNT
、MAX
、MIN
、STDDEV
、STDDEV_POP
、STDDEV_SAMP
、SUM
、VAR_POP
、VAR_SAMP
およびVARIANCE
。
default_aggregate_clause
分析ビュー内のベース・メジャーのすべてにデフォルト集計ファンクションを指定します。デフォルト集計ファンクションを指定しない場合、デフォルト値はSUM
です。
cache_clause
適切なマテリアライズド・ビューが使用可能な場合に問合せの応答時間を改善するには、cache句を指定します。1つ以上のキャッシュ仕様を指定できます。
cache_specification
cache句に、1つ以上のメジャー・グループを指定します。すべてのメジャー・グループを含めるには、ALL
を指定します。各メジャー・グループに、1つ以上のメジャーおよび1つ以上のレベルのグループ化を含めることができます。レベルのグループ化には、1つ以上のレベルを指定できます。
level_specification
キャッシュ仕様のメジャー・グループのレベルのグループ化のために、1つ以上のレベルを指定します。階層ごとに1つのレベルのみを指定します。階層レベルには、集計値を含むマテリアライズド・ビューが存在する必要があります。
level_group_type
USING
句を指定すると、分析ビューによってこれが問合せに使用する最適のキャッシュであると判断された場合、指定した表が問合せ時に直接使用されます。キャッシュの一般的な形状は、MEASURE GROUP
の各メジャーの列に、キャッシュの各レベルのレベル・キーごとの列を加えたものです。指定されたすべてのレベルにわたって、メンバーの組合せごとに1つの行があり、ファクト表から寄与している行が少なくとも1つあります。指定された表の列名は、どの列がどのメジャーおよびレベル・キーと並んでいるかを分析ビューが識別できるように、特定の書式と一致する必要があります。列の名前は、GET_MV_SQL_FOR_AV_CACHE
メソッドを使用してDBMS_HIERARCHY
パッケージから取得できます。
このメソッドはキャッシュを取り込んでSQLを生成し、キャッシュのSQLテキストを返します。このSQLテキストを使用して、キャッシュのマテリアライズド・ビューを作成できます。CREATE TABLE AS
を使用して集計表を作成するためにも使用できます。
分析ビューのコンパイル時に、マテリアライズド表に関して次のチェックが行われます。
- 表が存在し、分析ビューの所有者がアクセスできる必要があります
- 表の列には、予想されるキャッシュ列が含まれている必要があります
fact_columns_clause
この句を指定して、導出分析ビューによってアクセス可能なファクト列を明示的に記述します。問合せ時にfact_columns_clause
に表示されるファクト表の任意の列を、導出分析ビューで指定された集計演算子を使用して集計できます
ファクト列に別名が指定されている場合、導出分析ビューでその別名を使用する必要があります。指定されていない場合、別名はデフォルトでファクト列名になります。
2つ以上のファクト列が同じ名前で指定されている場合、これはセマンティック分析エラーです。
この句を指定しない場合、導出分析ビューによる集計のためにファクト列にアクセスすることはできません。これはデフォルトです。
qry_transform_clause
分析ビューにこの句を指定するのは、ビューをセマンティック・モデルに一致する問合せの検出に使用し、必要に応じて同等の分析ビュー問合せに変換する場合です。
制限事項
次の場合、分析ビューでqry_transform_clause
を使用することはできません。
-
複数のディメンション表(スノーフレーク・スキーマまたはスターフレーク・スキーマ)を持つ属性ディメンションが分析ビューに含まれている場合
-
ディメンション表が、ディメンションのリーフ・レベル(
REFERENCES DISTINCT
結合)を超えるレベルでファクト表に結合する場合 -
NORELY
が指定され、1つ以上の実表がリモート表である場合
new句では、オプションのRELY
またはNORELY
キーワードを使用できます。デフォルトはNORELY
です。
分析ビュー・メタデータは、基礎となるデータに対する一連の制約として表示できます。これらの制約はデータベースによって強制されませんが、DBMS_HIERARCHY.VALIDATE_ANALYTIC_VIEW
プロシージャを使用してチェックできます。
RELY
キーワードは、実表変換を考慮するときに、分析ビュー・メタデータによってデータに適用される制約を検証せずに信頼できることを示します。NORELY
が指定されている場合、実表変換を実行するには、データをメタデータに関連して有効な状態にする必要があります。
例
次に、SALES_FACT
表の説明を示します。
desc SALES_FACT
Name Null? Type
----------------- ----- -------------
MONTH_ID VARCHAR2(10)
CATEGORY_ID NUMBER(6)
STATE_PROVINCE_ID VARCHAR2(120)
UNITS NUMBER(6)
SALES NUMBER(12,2)
次の例では、SALES_FACT
表を使用してSALES_AV
分析ビューを作成します。
CREATE OR REPLACE ANALYTIC VIEW sales_av
USING sales_fact
DIMENSION BY
(time_attr_dim -- An attribute dimension of time data
KEY month_id REFERENCES month_id
HIERARCHIES (
time_hier DEFAULT),
product_attr_dim -- An attribute dimension of product data
KEY category_id REFERENCES category_id
HIERARCHIES (
product_hier DEFAULT),
geography_attr_dim -- An attribute dimension of store data
KEY state_province_id
REFERENCES state_province_id HIERARCHIES (
geography_hier DEFAULT)
)
MEASURES
(sales FACT sales, -- A base measure
units FACT units, -- A base measure
sales_prior_period AS -- Calculated measures
(LAG(sales) OVER (HIERARCHY time_hier OFFSET 1)),
sales_year_ago AS
(LAG(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL year)),
chg_sales_year_ago AS
(LAG_DIFF(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL year)),
pct_chg_sales_year_ago AS
(LAG_DIFF_PERCENT(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL year)),
sales_qtr_ago AS
(LAG(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL quarter)),
chg_sales_qtr_ago AS
(LAG_DIFF(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL quarter)),
pct_chg_sales_qtr_ago AS
(LAG_DIFF_PERCENT(sales) OVER (HIERARCHY time_hier OFFSET 1
ACROSS ANCESTOR AT LEVEL quarter))
)
DEFAULT MEASURE SALES;