CREATE DYNAMIC TABLE¶
指定されたクエリに基づいて、 動的テーブル を作成します。
このトピックの内容:
構文¶
CREATE [ OR REPLACE ] DYNAMIC TABLE <name>
TARGET_LAG = { '<num> { seconds | minutes | hours | days }' | DOWNSTREAM }
WAREHOUSE = <warehouse_name>
AS <query>
[ COMMENT = '<string_literal>' ]
必須パラメーター¶
name
動的テーブルの識別子(つまり、名前)を指定します。動的テーブルが作成されるスキーマに対して一意である必要があります。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれている場合を除き、スペースや特殊文字を含めることはできません(例:
"My object"
)。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
TARGET_LAG = { num { seconds | minutes | hours | days } | DOWNSTREAM }
動的テーブルのラグを指定します。
'num seconds | minutes | hours | days'
動的テーブルのコンテンツがベーステーブルの更新から遅れる最大時間を指定します。
例:
動的テーブルのデータが5分以上遅れないようにするには、
5 minutes
を指定します。動的テーブルのデータが5時間以上遅れないようにするには、
5 hours
を指定します。
最小値は1分です。動的テーブルAが別の動的テーブルBに依存している場合、Aの最小ラグはBのラグ以上にする必要があります。
DOWNSTREAM
動的テーブルが依存する動的テーブルのリフレッシュ時にのみ、動的テーブルをリフレッシュするように指定します。
WAREHOUSE = warehouse_name
動的テーブルをリフレッシュするためのコンピューティングリソースを提供するウェアハウスの名前を指定します。
動的テーブルを作成するには、このウェアハウスに対する USAGE 権限が必要です。
AS query
動的テーブルの結果を含むクエリを指定します。
オプションのパラメーター¶
COMMENT = 'string_literal'
動的テーブルのコメントを指定します。
デフォルト:値なし。
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
CREATE DYNAMIC TABLE |
動的テーブルの作成を予定のスキーマ。 |
|
SELECT |
新しい動的テーブルをクエリする予定のテーブル、ビュー、動的テーブル。 |
|
USAGE |
テーブルのリフレッシュに使用する予定のウェアハウス。 |
スキーマ内の任意のオブジェクトを操作するには、親データベースとスキーマに対する USAGE 権限も必要であることに注意してください。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
CREATE DYNAMIC TABLE コマンドを実行すると、現在使用中のロールが動的テーブルの所有者になります。このロールは、動的テーブルのリフレッシュをバックグラウンドで実行するために使用されます。
動的テーブルは、基になるデータベースオブジェクトが変更されると更新されます。変更追跡は、動的テーブルで使用される基になるオブジェクトすべてで有効にする必要があります。 動的テーブルおよび変更追跡 をご参照ください。
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
product
という名前の動的テーブルを作成します。
CREATE OR REPLACE DYNAMIC TABLE product TARGET_LAG = '20 minutes' WAREHOUSE = mywh AS SELECT product_id, product_name FROM staging_table;
この例では、
動的テーブルは、
staging_table
テーブルのproduct_id
とproduct_name
列のクエリの結果を具体化します。つまり、動的テーブルのデータは、
staging_table
のデータより20分以上古くならないことが理想的です。自動リフレッシュプロセスは、ウェアハウス
mywh
のコンピューティングリソースを使用して、動的テーブルのデータをリフレッシュします。