CREATE EVENT TABLE¶
関数やプロシージャからのログされたメッセージなどのイベントをキャプチャする イベントテーブル を作成します。
- こちらもご参照ください。
ALTER TABLE (イベントテーブル)、 DESCRIBE EVENT TABLE、 DROP TABLE、 SHOW EVENT TABLES
構文¶
CREATE [ OR REPLACE ] EVENT TABLE [ IF NOT EXISTS ] <name>
[ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ CHANGE_TRACKING = { TRUE | FALSE } ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ COPY GRANTS ]
[ [ WITH ] COMMENT = '<string_literal>' ]
[ [ WITH ] ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , <col_name> ... ] ) ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ WITH CONTACT ( <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ) ]
バリアント構文¶
CREATE EVENT TABLE ... CLONE¶
同じ 事前定義済み列定義 を持つ新しいイベントテーブルを作成し、実際にデータをコピーすることなく、ソーステーブルの既存のデータをすべて含みます。また、このバリアントを使用して、過去の特定の時間/時点のイベントテーブルをクローンすることもできます(Time Travel を使用)。
CREATE [ OR REPLACE ] EVENT TABLE [ IF NOT EXISTS ] <name>
CLONE <source_table>
[ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ) ]
[ COPY GRANTS ]
[ ... ]
注釈
ステートメントが同じ名前のイベントテーブルを置き換える場合、付与は置き換えられるイベントテーブルからコピーされます。それ以外では、付与はクローン元のイベントテーブルからコピーされます。
COPY GRANTS の詳細については、このドキュメント内の COPY GRANTS をご参照ください。
クローンの詳細については、 CREATE <オブジェクト> ... CLONE をご参照ください。
必須パラメーター¶
nameイベントテーブルの識別子(名前)を指定します。イベントテーブルが作成されるスキーマに対して一意である必要があります。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれている場合を除き、スペースや特殊文字を含めることはできません(例:
"My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
source_tableCLONE に必須です。
クローンのソースとして使用するイベントテーブルを指定します。
オプションのパラメーター¶
CLUSTER BY ( expr [ , expr , ... ] )テーブル内の1つ以上の列または列式をクラスタリングキーとして指定します。詳細については、 クラスタリングキーとクラスタ化されたテーブル をご参照ください。
デフォルト:値なし(テーブルにクラスタリングキーが定義されていない)
重要
クラスタリングキーは、すべてのテーブルに対して意図または推奨されて いません 。通常、非常に大きな(つまり、マルチテラバイト)テーブルに役立ちます。
テーブルのクラスタリングキーを指定する前に、 Snowflakeテーブル構造について をお読みください。
DATA_RETENTION_TIME_IN_DAYS = integerテーブルの履歴データに対してTime Travelアクション(SELECT、CLONE、UNDROP)を実行できるように、テーブルの保持期間を指定します。詳細については、 Time Travelの理解と使用 をご参照ください。
このオブジェクトレベルパラメーターの詳細な説明、およびオブジェクトパラメーターの詳細については、 パラメーター をご参照ください。
値:
Standard Edition:
0または1Enterprise Edition:
永続テーブルの場合は
0~90
デフォルト:
Standard Edition:
1Enterprise Edition(またはそれ以上):
1(スキーマ、データベースまたはアカウントレベルで別のデフォルト値が指定されていない場合)
注釈
0の値は、テーブルのTime Travelを効果的に無効化します。MAX_DATA_EXTENSION_TIME_IN_DAYS = integerSnowflakeがテーブルのデータ保持期間を延長してテーブル上のストリームが古くなるのを防ぐことができる最大日数を指定するオブジェクトパラメーター。
このパラメーターの詳細については、 MAX_DATA_EXTENSION_TIME_IN_DAYS をご参照ください。
CHANGE_TRACKING = TRUE | FALSEテーブルで変更追跡を有効にするかどうかを指定します。
TRUEテーブルの変更追跡を有効にします。この設定により、非表示の列のペアがソーステーブルに追加され、変更追跡メタデータの列への保存が開始されます。これらの列は少量のストレージを消費します。変更追跡メタデータのクエリには、 SELECT ステートメントの CHANGES 句を使用するか、テーブルで1つ以上のストリームを作成し、クエリします。
FALSEは、テーブルの変更追跡を有効にしません。
デフォルト: FALSE
DEFAULT_DDL_COLLATION = 'collation_specification'テーブル内にある列のデフォルトの 照合仕様 を指定します。
パラメーターの詳細については、 DEFAULT_DDL_COLLATION をご参照ください。
COPY GRANTS次の CREATE TABLE バリアントのいずれかを使用して新しいテーブルが作成されるときに、元のテーブルからのアクセス権限を保持することを指定します。
CREATE OR REPLACE EVENT TABLE
CREATE EVENT TABLE ... CLONE
このパラメーターは、既存のテーブルから新しいテーブルに OWNERSHIP を 除く すべての権限をコピーします。新しいテーブルは、スキーマ内のオブジェクトタイプに定義された将来の許可を継承 しません 。デフォルトでは、 CREATE EVENT TABLE ステートメントを実行するロールが新しいテーブルを所有します。
パラメーターが CREATE EVENT TABLE ステートメントに含まれていない場合、新しいテーブルは元のテーブルに付与された明示的なアクセス権限を継承 しません が、スキーマ内のオブジェクトタイプに定義された将来の権限は継承します。
注意:
置換テーブルの SHOW GRANTS 出力には、コピーされた権限の被付与者が、ステートメントが実行されたときの現在のタイムスタンプとともに、 CREATE EVENT TABLE ステートメントを実行したロールとしてリストされます。
付与をコピーする操作は、CREATE EVENTTABLE コマンドで(つまり、同じトランザクション内で)アトミックに発生します。
ROW ACCESS POLICY policy_name ON ( col_name [ , col_name ... ] )テーブルに設定する 行アクセスポリシー を指定します。
COMMENT = 'string_literal'テーブルのコメントを指定します。
デフォルト: 値なし
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )タグ の名前とタグ文字列の値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。
ステートメントでのタグの指定に関する情報については、 Tag quotas をご参照ください。
WITH CONTACT ( purpose = contact [ , purpose = contact ...] )新しいオブジェクトを1つ以上の 連絡先 に関連付けます。
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
注意 |
|---|---|---|
CREATE EVENT TABLE |
イベントテーブルの作成を予定のスキーマ。 |
Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
スキーマに同じ名前のイベントテーブルやビューを含めることはできません。イベントテーブル作成時に、
同じ名前のテーブルまたはビューがスキーマにすでに存在する場合は、エラーが返され、イベントテーブルは作成されません。
同じ名前のイベントテーブルがスキーマにすでに存在する場合は、オプションの
OR REPLACEキーワードがコマンドに含まれている場合を除き、エラーが返され、イベントテーブルは作成されません。
重要
OR REPLACEを使用することは、既存のイベントテーブルで DROP TABLE を使用してから、同じ名前で新しイベントいテーブルを作成することと同等です。ただし、ドロップされたテーブルは、システムから完全には削除 されません 。代わりに、Time Travel内で保持されます。Time Travelでドロップされたテーブルは復元できますが、アカウントのデータストレージにも寄与するため、これは重要です。詳細については、 Time TravelおよびFail-safeのストレージコスト をご参照ください。CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
これは、 CREATE OR REPLACE EVENT TABLE 操作と同時に実行されるクエリが、古いテーブルバージョンまたは新しいテーブルバージョンのいずれかを使用することを意味します。
テーブルを再作成すると(オプションの
OR REPLACEキーワードを使用)、その履歴が削除され、テーブル上のストリームが古くなります。古いストリームは読み取れません。メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
CREATE EVENT TABLE ... CLONE:
ソースイベントテーブルにクラスタリングキーがある場合は、新しいイベントテーブルにもクラスタリングキーがあります。デフォルトでは、自動クラスタリングは新しいイベントテーブルに対して中断されます(ソーステーブルに対して自動クラスタリングが中断されていなくても)。
OR REPLACEとIF NOT EXISTS句は互いに排他的です。両方を同じステートメントで使うことはできません。
例¶
my_events という名前のイベントテーブルを作成します。
CREATE EVENT TABLE my_events;