CREATE SEMANTIC VIEW¶
現在のスキーマ/指定されたスキーマで、新しい セマンティックビュー を作成します。
- こちらもご覧ください:
DESCRIBE SEMANTIC VIEW、 DROP SEMANTIC VIEW、 SHOW SEMANTIC VIEWS
構文¶
CREATE [ OR REPLACE ] SEMANTIC VIEW [ IF NOT EXISTS ] <name>
TABLES ( logicalTable [ , ... ] )
[ RELATIONSHIPS ( relationshipDef [ , ... ] ) ]
[ FACTS ( semanticExpression [ , ... ] ) ]
[ DIMENSIONS ( semanticExpression [ , ... ] ) ]
[ METRICS ( semanticExpression [ , ... ] ) ]
[ COMMENT = '<comment_about_semantic_view>' ]
[ COPY GRANTS ]
条件:
logicalTable ::=
[ <table_alias> AS ] <table_name>
[ PRIMARY KEY ( <primary_key_column_name> [ , ... ] ) ]
[
UNIQUE ( <unique_column_name> [ , ... ] )
[ ... ]
]
[ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ]
[ COMMENT = '<comment_about_table>' ]
relationshipDef ::=
[ <relationship_identifier> AS ]
<table_alias> ( <column_name> [ , ... ] )
REFERENCES
<ref_table_alias> [ ( <ref_column_name> [ , ... ] ) ]
semanticExpression ::=
<table_alias>.<dim_fact_or_metric> AS <sql_expr>
[ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ]
[ COMMENT = '<comment_about_dim_fact_or_metric>' ]
注釈
句の順番は重要です。例えば、 DIMENSIONS 句の前に FACTS 句を指定する必要があります。
後の句で定義されているセマンティック式を参照できます。例えば、 fact_1
の後に fact_2
が定義されていても、 fact_1
の定義で fact_2
を使うことができます。
必須パラメーター¶
name
セマンティックビューの名前を指定します。この名前は、テーブルが作成されるスキーマで一意でなければなりません。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object"
)。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
オプションのパラメーター¶
COMMENT = 'comment_about_semantic_view'
セマンティックビューについてのコメントを指定します。
COPY GRANTS
既存のセマンティックビューを新しいセマンティックビューに置き換えるために OR REPLACE を指定する場合、このパラメーターを設定することで、既存のセマンティックビューに対して付与された権限を新しいセマンティックビューにコピーすることができます。
コマンドは、既存のセマンティックビューから新しいセマンティックビューに、 OWNERSHIP を 除く をすべての権限をコピーします。CREATE SEMANTIC VIEW ステートメントを実行するロールが新しいビューを所有します。
新しいセマンティックビューは、スキーマのオブジェクトタイプに対して定義された将来の付与を継承 しません。
付与をコピーする操作は、 CREATE SEMANTIC VIEW ステートメントでアトミックに発生します(言い換えると、同じトランザクション内)。
COPY GRANTS を省略した場合、新しいセマンティックビューは既存のセマンティックビューに付与された明示的なアクセス権限を継承 しませんが、スキーマ内のオブジェクトタイプに対して定義された将来の付与は継承します。
論理テーブルのパラメーター(logicalTable
)¶
table_alias AS
論理テーブルのオプションのエイリアスを指定します。
エイリアスを指定した場合は、関係、ファクト、ディメンション、およびメトリックで論理テーブルを参照するときに、このエイリアスを使用する必要があります。
エイリアスを指定しない場合は、非修飾論理テーブル名を使用してテーブルを参照します。
table_name
論理テーブルの名前を指定します。
PRIMARY KEY ( primary_key_column_name [ , ... ] )
論理テーブルの主キーとなる1つ以上の列の名前を指定します。
UNIQUE ( unique_column_name [ , ... ] )
一意な値を含む列の名前、または一意な値の組み合わせを含む列の名前を指定します。
例えば、
service_id
列に一意な値が含まれる場合、次のように指定します。TABLES( ... product_table UNIQUE (service_id)
product_area_id
、product_id
列の値の組み合わせが一意である場合、次のように指定します。TABLES( ... product_table UNIQUE (product_area_id, product_id) ...
指定された論理テーブルにおいて、複数の列や複数の列の組み合わせを一意なものとして識別子できます。
TABLES( ... product_table UNIQUE (product_area_id, product_id) UNIQUE (service_id) ...
注釈
既に(PRIMARY KEY を使用して)列を主キー列として識別している場合は、その列に UNIQUE 句を追加しないでください。
WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )
論理テーブルの同義語を1つ以上指定します。エイリアスとは異なり、同義語は情報提供のみを目的として使用されます。関係、ディメンション、メトリック、およびファクトでは、論理テーブルを参照するために同義語を使用しません。
COMMENT = 'comment_about_table'
論理テーブルについてのコメントを指定します。
関係のパラメーター(relationshipDef
)¶
relationship_identifier AS
関係のオプションの識別子を指定します。
table_alias ( column_name [ , ... ] )
別の論理テーブルの列を参照する、1つの論理テーブルとその1つ以上の列を指定します。
ref_table_alias [ ( ref_column_name [ , ... ] ) ]
最初の論理テーブルによって参照されるもう1つの論理テーブルとその1つ以上の列を指定します。
列は、 論理テーブルの定義 において、 PRIMARY KEY または UNIQUE として識別される必要があります。
ファクト、ディメンション、メトリクスのパラメーター(semanticExpression
)¶
セマンティックビューでは、少なくとも1つのディメンションまたはメトリックを定義する必要があります。これは、少なくとも1つの DIMENSIONS 句または METRICS 句を指定する必要があることを意味します。
以下のパラメーターを使用して、ファクト、ディメンション、またはメトリックを定義します。
table_alias.semantic_expression_name AS sql_expr
ディメンション、ファクト、またはメトリックの名前と、そのディメンション、ファクト、またはメトリックを計算する SQL 式を指定します。
WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )
ディメンション、ファクト、またはメトリックのオプションの同義語を1つ以上指定します。なお、同義語は情報提供のみを目的としています。同義語を使用して、別のディメンション、ファクト、またはメトリックを参照することはできません。
COMMENT = 'comment_about_dim_fact_or_metric'
ディメンション、ファクト、またはメトリックに関するオプションのコメントを指定します。
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
注意 |
---|---|---|
CREATE SEMANTIC VIEW |
スキーマ |
新しいセマンティックビューを作成するために必要です。 |
SELECT |
テーブル、ビュー |
セマンティックビューの定義で使用されるすべてのテーブルおよび/またはビューで必要です。 |
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
例¶
セマンティックビューの作成 をご参照ください。