CREATE DYNAMIC TABLE

指定されたクエリに基づいて、 動的テーブル を作成します。

こちらもご参照ください。

ALTER DYNAMIC TABLEDESCRIBE DYNAMIC TABLEDROP DYNAMIC TABLESHOW DYNAMIC TABLES

このトピックの内容:

構文

CREATE [ OR REPLACE ] DYNAMIC TABLE <name>
  TARGET_LAG = { '<num> { seconds | minutes | hours | days }' | DOWNSTREAM }
  WAREHOUSE = <warehouse_name>
  AS <query>
  [ COMMENT = '<string_literal>' ]
Copy

必須パラメーター

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;
Copy

この例では、

  • 動的テーブルは、 staging_table テーブルの product_idproduct_name 列のクエリの結果を具体化します。

  • つまり、動的テーブルのデータは、 staging_table のデータより20分以上古くならないことが理想的です。

  • 自動リフレッシュプロセスは、ウェアハウス mywh のコンピューティングリソースを使用して、動的テーブルのデータをリフレッシュします。