CREATE ATTRIBUTE DIMENSION
目的
CREATE
ATTRIBUTE
DIMENSION
文を使用して、属性ディメンションを作成します。属性ディメンションは、1つ以上の分析ビュー階層のディメンション・メンバーを指定します。使用しているデータ・ソースおよび含まれるメンバーを指定します。メンバーのレベルを指定して、レベル間の属性リレーションシップを決定します。
前提条件
自分のスキーマ内に属性ディメンションを作成する場合は、CREATE
ATTRIBUTE
DIMENSION
システム権限が必要です。他のユーザーのスキーマ内に属性ディメンションを作成するには、CREATE
ANY
ATTRIBUTE
DIMENSION
システム権限が必要です。
構文
create_attribute_dimension::=
classification_clause::=
attr_dim_using_clause::=
source_clause::=
attributes_clause::=
attr_dim_attributes_clause::=
attr_dim_level_clause::=
key_clause::=
alternate_key_clause::=
dim_order_clause::=
all_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
属性ディメンションを作成するスキーマを指定します。スキーマを指定しない場合、自分のスキーマに属性ディメンションが作成されます。
attr_dimension
属性ディメンションの名前を指定します。
SHARING
SHARING句は、アプリケーションのメンテナンスの際に、アプリケーション・ルートにオブジェクトを作成する場合に使用します。このタイプのオブジェクトはアプリケーション共通オブジェクトと呼ばれ、アプリケーション・ルートに属するアプリケーションPDBと共有できます。
次の共有属性のいずれかを使用して、オブジェクトを共有する方法を指定できます。
-
METADATA
- メタデータ・リンクはメタデータを共有しますが、そのデータは各コンテナに固有です。このタイプのオブジェクトは、メタデータリンク・アプリケーション共通オブジェクトと呼ばれます。 -
NONE
- オブジェクトは共有されず、アプリケーション・ルートでのみアクセスできます。
classification_clause
classification句を使用して、CAPTION
またはDESCRIPTION
分類の値を指定し、ユーザー定義分類を指定します。分類では、分析ビューとそのコンポーネントの情報を提供するためにアプリケーションで使用される、説明的なメタデータを提供します。
同じオブジェクトに、任意の数の分類を指定できます。分類の最大長は4000バイトです。
CAPTION
とDESCRIPTION
分類では、DDLショートカットCAPTION
'
caption
'
およびDESCRIPTION
'
description
'
または完全な分類構文を使用できます。
言語別に分類値を変更できます。CAPTION
またはDESCRIPTION
分類に言語を指定するには、完全な構文を使用する必要があります。言語を指定しない場合、分類の言語の値はNULL
です。言語の値は、NULL
または有効なNLS_LANGUAGE
値である必要があります。
DIMENSION TYPE
属性ディメンションのタイプとして、STANDARD
またはTIME
のいずれかを選択できます。STANDARD
タイプの属性ディメンションのタイプ・レベルは、STANDARD
となります。TIME
タイプの属性ディメンションの各レベルは、いずれかの時間タイプとなります。デフォルトのDIMENSION TYPE
はSTANDARD
です。
attr_dim_using_clause
この句を使用して、属性ディメンションの作成に使用するソースを宣言します。
source_clause
次のソースを指定できます。
-
表またはビュー。
-
AS
キーワードを使用した表またはビューの別名。 -
結合パス。結合パスを使用して、属性ディメンションにスノーフレーク・スキーマ編成の表を使用する場合に結合を指定します。
REMOTE
特定のソースにREMOTE
を指定して、ソースがリモート・データによってバックアップされ、リモート・データとして最適化する必要があることを示します。
join_path_clause
結合パス句では、異なる表の列間の結合条件を指定します。join_path_name引数で指定される結合パスの名前は、USING
句に含まれる結合パスごとに一意である必要があります。
join_condition
結合条件は1つ以上の結合条件要素で構成され、追加の各結合条件要素はAND
演算子を使用して追加されます。
join_condition_element
結合条件要素では、左側の列参照は、右側の列参照とは異なる表から取得される必要があります。
attributes_clause
1つ以上のattr_dim_attribute_clause
句を指定します。
attr_dim_attribute_clause
attr_dim_using_clause
ソースから列を指定します。AS
キーワードを使用して別名を指定した場合を除き、属性の名前は列名です。各属性の分類を指定できます。
attr_dim_level_clause
属性ディメンションのレベルを指定します。レベルは、レベルのメンバーを指定するキー属性およびオプションの代替キー属性を指定します。
キー属性にNULL
値がない場合、デフォルトであるNOT
NULL
を指定できます。NULL
値が1つ以上ある場合は、SKIP
WHEN
NULL
を指定します。
LEVEL TYPE
STANDARD
タイプの属性ディメンションのタイプ・レベルは、STANDARD
となります。STANDARD
タイプの属性ディメンションにLEVEL TYPE
を指定する必要はありません。
TIME
タイプの属性ディメンションでは、レベル・タイプを指定する必要があります。レベルのタイプには、時間タイプのいずれかを選択できます。レベル・メンバーの値が時間タイプではない場合でも、時間タイプを指定する必要があります。たとえば、SEASONレベルには、季節名の値を指定できます。レベルを定義する場合は、QUARTERS
など、いずれかの時間レベル・タイプを指定する必要があります。アプリケーションでは、その目的に応じて、レベル・タイプの指定を使用できます。
DETERMINES
DETERMINES
キーワードを使用すると、このレベルによって決定される属性ディメンションの他の属性を指定できます。属性に、別の属性の各値について1つの値のみが含まれる場合、最初の属性の値によってもう一方の属性の値が決まります。たとえば、QUARTER_ID属性には、MONTH_ID属性の各値について1つの値のみが含まれるため、MONTHSレベルのDETERMINES
句にQUARTER_ID属性を含めることができます。
key_clause
レベルのキーとして1つ以上の属性を指定します。
alternate_key_clause
レベルの代替キーとして1つ以上の属性を指定します。
dim_order_clause
レベルのメンバーの順序を指定します。
all_clause
オプションで、MEMBER
NAME
、MEMBER
CAPTION
およびMEMBER
DESCRIPTION
の値を暗黙的なすべてのレベルに指定します。デフォルトでは、MEMBER
NAME
値はALLです。
例
次の例では、TIME_DIM表について説明します。
desc TIME_DIM
Name Null? Type
----------------- ----- -------------
MONTH_ID VARCHAR2(10)
CATEGORY_ID NUMBER(6)
STATE_PROVINCE_ID VARCHAR2(120)
UNITS NUMBER(6)
SALES NUMBER(12,2)
YEAR_ID NOT NULL VARCHAR2(30)
YEAR_NAME NOT NULL VARCHAR2(40)
YEAR_END_DATE DATE
QUARTER_ID NOT NULL VARCHAR2(30)
QUARTER_NAME NOT NULL VARCHAR2(40)
QUARTER_END_DATE DATE
QUARTER_OF_YEAR NUMBER
MONTH_ID NOT NULL VARCHAR2(30)
MONTH_NAME NOT NULL VARCHAR2(40)
MONTH_END_DATE DATE
MONTH_OF_YEAR NUMBER
MONTH_LONG_NAME VARCHAR2(30)
SEASON VARCHAR2(10)
SEASON_ORDER NUMBER(38)
MONTH_OF_QUARTER NUMBER(38)
次の例では、TIME_DIM表からの列を使用して、TIME
タイプの属性ディメンションを作成します。
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_DIM表について説明します。
desc PRODUCT_DIM
Name Null? Type
--------------- -------- -------------
DEPARTMENT_ID NOT NULL NUMBER
DEPARTMENT_NAME NOT NULL VARCHAR2(100)
CATEGORY_ID NOT NULL NUMBER
CATEGORY_NAME NOT NULL VARCHAR2(100)
次の例では、PRODUCT_DIM表からの列を使用して、STANDARD
タイプの属性ディメンションを作成します。
CREATE OR REPLACE ATTRIBUTE DIMENSION product_attr_dim
USING product_dim
ATTRIBUTES
(department_id,
department_name,
category_id,
category_name)
LEVEL DEPARTMENT
KEY department_id
ALTERNATE KEY department_name
MEMBER NAME department_name
MEMBER CAPTION department_name
ORDER BY department_name
LEVEL CATEGORY
KEY category_id
ALTERNATE KEY category_name
MEMBER NAME category_name
MEMBER CAPTION category_name
ORDER BY category_name
DETERMINES(department_id)
ALL MEMBER NAME 'ALL PRODUCTS';
次の例では、GEOGRAPHY_DIM表について説明します。
desc GEOGRAPHY_DIM
Name Null? Type
--------------- -------- -------------
DEPARTMENT_ID NOT NULL NUMBER
DEPARTMENT_NAME NOT NULL VARCHAR2(100)
CATEGORY_ID NOT NULL NUMBER
CATEGORY_NAME NOT NULL VARCHAR2(100)
REGION_ID NOT NULL VARCHAR2(120)
REGION_NAME NOT NULL VARCHAR2(100)
COUNTRY_ID NOT NULL VARCHAR2(2)
COUNTRY_NAME NOT NULL VARCHAR2(120)
STATE_PROVINCE_ID NOT NULL VARCHAR2(120)
STATE_PROVINCE_NAME NOT NULL VARCHAR2(400)
次の例では、GEOGRAPHY_DIM表からの列を使用して、STANDARD
タイプの属性ディメンションを作成します。
CREATE OR REPLACE ATTRIBUTE DIMENSION geography_attr_dim
USING geography_dim
ATTRIBUTES
(region_id,
region_name,
country_id,
country_name,
state_province_id,
state_province_name)
LEVEL REGION
KEY region_id
ALTERNATE KEY region_name
MEMBER NAME region_name
MEMBER CAPTION region_name
ORDER BY region_name
LEVEL COUNTRY
KEY country_id
ALTERNATE KEY country_name
MEMBER NAME country_name
MEMBER CAPTION country_name
ORDER BY country_name
DETERMINES(region_id)
LEVEL STATE_PROVINCE
KEY state_province_id
ALTERNATE KEY state_province_name
MEMBER NAME state_province_name
MEMBER CAPTION state_province_name
ORDER BY state_province_name
DETERMINES(country_id)
ALL MEMBER NAME 'ALL CUSTOMERS';