動的テーブルの管理について

動的テーブルの管理には通常、次のタスクが含まれます。

タスク

説明

動的テーブルのリストと動的テーブルの情報の表示

動的テーブルのリストと表示。

動的テーブルをドロップする

動的テーブルのドロップ。

動的テーブルのウェアハウスまたはターゲットラグの変更

動的テーブルの変更。

動的テーブルのリストと動的テーブルの情報の表示

データベース内の動的テーブルをリストし、それらの動的テーブルに関する情報を表示するには、 Snowsight または SQL コマンドのいずれかを使用します。

Snowsightを使用した動的テーブルのリストと詳細表示

スキーマ内の動的テーブルをリストし、動的テーブルの情報を表示します。

  1. Snowsight にサインインします。

  2. Data » Databases を選択します。

  3. ナビゲーションペインの横にある データベースオブジェクトエクスプローラー で、データベーススキーマを選択します。

  4. スキーマの詳細ページ で、 Dynamic Tables タブを選択します。

    Dynamic Tables を展開すると、データベースオブジェクトエクスプローラーで動的テーブルのリストを表示することもできます。

  5. 特定の動的テーブルに関する情報を表示するには、動的テーブルをデータベースオブジェクトエクスプローラーで選択するか、 Dynamic Tables タブにある動的テーブルのリストで選択します。

    このページのタブには、以下を含む テーブルの詳細ページ と同じ情報が表示されます。

    • 動的テーブルの定義と、動的テーブルを操作するために付与された権限

    • 動的テーブルの列に関する情報

    • 動的テーブルにあるデータの最大100行のプレビュー

    さらに、動的テーブルの詳細ページには、動的テーブルの情報を表示するためのタブがあります。

SQL コマンドを使用した動的テーブルのリストと詳細表示

  • 現在のデータベース(現在データベースが使用されていない場合はアカウント)内の動的テーブルをリストするには、 SHOW DYNAMIC TABLES コマンドを使用します。

    たとえば、データベース mydb 内とスキーマ myschema 内にある product_ で始まる名前の動的テーブルをリストするには、次の SQL ステートメントを実行します。

    SHOW DYNAMIC TABLES LIKE 'product_%' IN SCHEMA mydb.myschema;
    
    Copy

    コマンドの完全な構文については、 SHOW DYNAMIC TABLES をご参照ください。

  • 動的テーブルの列に関する情報を出力するには、 DESCRIBE DYNAMIC TABLE コマンドを使用します。

    たとえば、 product という名前の動的テーブルの列をリストアップするには、

    DESC DYNAMIC TABLE product;
    
    Copy

TABLES ビュー の結果には動的テーブルも含まれています。

動的テーブルをドロップする

動的テーブルをドロップするには、 Snowsight または SQL コマンドのいずれかを使用します。

Snowsight:
  1. Snowsightで、動的テーブルの詳細ページを開きます(手順)。

  2. ページの右上隅にある More メニューで、 Drop を選択します。

SQL:
  • DROP DYNAMIC TABLE コマンドを使用します。

    たとえば、 product という名前の動的テーブルをドロップするには、

DROP DYNAMIC TABLE product;
Copy

動的テーブルのデータ共有

動的テーブルは共有可能なオブジェクトです。動的テーブルを共有するには、データ共有プロバイダーが動的テーブルに対する権限を共有に付与します。これにより、データ共有コンシューマーがその権限を使用できるようになります。

動的テーブルとデータを共有する方法

プロバイダーは、直接共有またはリストを使用して、選択した動的テーブルを他のSnowflakeアカウントと共有できます。これにより、物理的に移動することなくアカウント間でデータを共有できます。このプロセスでは、プロバイダーのアカウント内にデータベースの 共有 を作成し、プロバイダーのアカウント内にデータベースアクセス権限を付与し、アクセス権限を付与して、共有に他のオブジェクトを追加します。詳細については、 Secure Data Sharingの紹介 および Snowflakeでのデータ共有の概要 をご参照ください。

データ共有プロバイダーは、次の例に示すように、単一の動的テーブルに SELECT 権限を付与するか、データベース内のすべての動的テーブルに SELECT 権限を付与するかを選択できます。

GRANT SELECT ON ALL DYNAMIC TABLES IN SCHEMA mydb.public TO SHARE share1;

GRANT SELECT ON DYNAMIC TABLE mydb.public TO SHARE share1;
Copy

詳細については、 GRANT <権限> ... TO SHARE をご参照ください。

共有データをインジェストするための動的テーブルの作成

共有データをインジェストするための動的テーブルを作成するには、次を実行します。

  1. 正しい権限 を持っていることを確認し、共有からデータベースを作成して権限を付与します。

    CREATE DATABASE shared_db FROM SHARE provider_account.share1;
    
    Copy
  2. 共有データベースに 権限を付与 します。

  3. 共有動的テーブルを作成します。

    CREATE OR REPLACE DYNAMIC TABLE <dt_name>
      TARGET_LAG = '1 day'
      WAREHOUSE = <warehouse_name>
      AS
        SELECT * FROM shared_db.public.mydb;
    
    Copy

    注釈

    変更追跡は、動的テーブルで使用される基になるオブジェクトすべてで有効にする必要があります。共有データをインジェストするために動的テーブルを使用するには、データ共有プロバイダーは共有オブジェクトで change_tracking を有効にする必要があります。 変更の追跡を有効にする をご参照ください。

動的テーブルを使用して共有データをインジェストする場合、クエリは共有動的テーブルまたは上流の動的テーブルを参照する共有セキュアビューから選択できません。

動的テーブルのウェアハウスまたはターゲットラグの変更

  • 動的テーブルのウェアハウスまたはターゲットラグを変更するには、 ALTER DYNAMIC TABLE コマンドを使用します。

    たとえば、動的テーブル product のウェアハウスを my_other_wh に変更するには、次を実行します。

    ALTER DYNAMIC TABLE product SET
      WAREHOUSE = my_other_wh;
    
    Copy

ALTER DYNAMIC TABLE コマンドの完全な構文については、 ALTER DYNAMIC TABLE をご参照ください。

動的テーブルの最適ターゲットラグの決定

動的テーブルの最適なターゲットラグタイムを決定するには、 Snowsight または SQL コマンドのいずれかを使用します。

Snowsight:
  1. 動的テーブルの詳細ページ で、 Refresh History タブをクリックします。

  2. タブの上部に表示されている、実際の最大ラグタイムを確認します。このメトリックは、各リフレッシュの実際のラグタイムに基づいています。

SQL:
  • INFORMATION_SCHEMA の DYNAMIC_TABLE_REFRESH_HISTORY テーブル関数を使用します。この関数は、リフレッシュにかかった時間やスキップされたリフレッシュなど、動的テーブルの各リフレッシュに関する情報を返します。

選択したラグタイムは、自動リフレッシュプロセスによって決定されるリフレッシュスケジュールに影響します。自動リフレッシュプロセスは、動的テーブルのタイムラグに最適なスケジュールを選択します。

増分リフレッシュまたはフルリフレッシュのいずれが使用されているかの判断

動的テーブルのリフレッシュに増分リフレッシュとフルリフレッシュのどちらが使用されているかを判断するには、 Snowsight または SQL コマンドを使用します。

Snowsight:
  • 動的テーブルの詳細ページ に移動します。

    ページ上部の基本詳細には、そのテーブルで増分リフレッシュが使用されているか、フルリフレッシュが使用されているかが示されます。

SQL:
  • SHOW DYNAMIC TABLES を使用し、出力の REFRESH_MODE の値を確認します。

    REFRESH_MODE = FULL の場合、 REFRESH_MODE_REASON には、フルリフレッシュが実行された理由の詳細が含まれます。