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

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

タスク

説明

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

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

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

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

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

動的テーブルの変更。

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

To list the dynamic tables in a database and view information about those dynamic tables, you can use either Snowsight or SQL commands:

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

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

  1. Sign in to Snowsight.

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

  3. In the database object explorer next to the navigation pane, select a database schema.

  4. In the schema details page, select the Dynamic Tables tab.

    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

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

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

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

Providers can share selected dynamic tables with other Snowflake accounts using Direct Sharing or Listings, which allow data to be shared between accounts without physically moving it. The process involves creating a share of a database within the provider's account, granting database access within the provider's account, granting access privileges, and adding other objects to the share. To learn more, see Secure Data Sharingの紹介 and Overview of data sharing at 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

For the full syntax of the ALTER DYNAMIC TABLE command, see ALTER DYNAMIC TABLE.

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

To determine the optimal target lag time for a dynamic table, you can use either Snowsight or SQL commands.

Snowsight:
  1. On the dynamic table details page, click the Refresh History tab.

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

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

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

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

To determine whether an incremental or full refresh is used to update a dynamic table, you can use either Snowsight or SQL commands.

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

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

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

    If the REFRESH_MODE = FULL, REFRESH_MODE_REASON includes additional details on why a full refresh was executed.