CREATE ANALYTIC VIEW

目的

CREATE ANALYTIC VIEW文を使用すると、分析ビューを作成できます。分析ビューでは、ファクト・データのソースを指定して、計算またはデータに対して実行する他の分析操作を説明するメジャーを定義します。分析ビューでは、分析ビューの行を定義する属性ディメンションおよび属性階層も指定します。

前提条件

自分のスキーマ内に分析ビューを作成する場合は、CREATE ANALYTIC VIEWシステム権限が必要です。他のユーザーのスキーマ内に分析ビューを作成する場合は、CREATE ANY ANALYTIC VIEWシステム権限が必要です。

構文

create_analytic_view::=

classification_clause::=

measures_clause::=

base_meas_clause::=

calc_meas_clause::=

meas_aggregate_clause::=

default_measure_clause::=

default_aggregate_clause::=

cache_specification::=

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 REPLACEIF NOT EXISTSの両方を使用すると、ORA-11541: REPLACE and IF NOT EXISTS cannot coexist in the same DDL statementというエラーが発生します。

IF EXISTSCREATEとともに使用すると、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バイトです。

CAPTIONDESCRIPTION分類では、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_DISTINCTAPPROX_COUNT_DISTINCT_AGGAVGCOUNTMAXMINSTDDEVSTDDEV_POPSTDDEV_SAMPSUMVAR_POPVAR_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;