動的テーブルの管理について¶
動的テーブルの管理には通常、次のタスクが含まれます。
タスク |
説明 |
---|---|
動的テーブルのリストと表示。 |
|
動的テーブルのドロップ。 |
|
動的テーブルの変更。 |
動的テーブルのリストと動的テーブルの情報の表示¶
データベース内の動的テーブルをリストし、それらの動的テーブルに関する情報を表示するには、 Snowsight または SQL コマンドのいずれかを使用します。
Snowsightを使用した動的テーブルのリストと詳細表示¶
スキーマ内の動的テーブルをリストし、動的テーブルの情報を表示します。
Snowsight にサインインします。
Data » Databases を選択します。
データベースとスキーマを選択します。
Schema Details で、 Dynamic Tables タブを選択します。
Dynamic Tables を展開すると、データベースオブジェクトエクスプローラーで動的テーブルのリストを表示することもできます。
特定の動的テーブルに関する情報を表示するには、動的テーブルをデータベースオブジェクトエクスプローラーで選択するか、 Dynamic Tables タブにある動的テーブルのリストで選択します。
このページのタブには、以下を含む テーブルの詳細ページ と同じ情報が表示されます。
動的テーブルの定義と、動的テーブルを操作するために付与された権限
動的テーブルの列に関する情報
動的テーブルにあるデータの最大100行のプレビュー
さらに、動的テーブルの詳細ページには、動的テーブルの情報を表示するためのタブがあります。
Graph タブには、この動的テーブルを含む 有向非巡回グラフ(DAG) が表示されます。 Snowsightを使用した動的テーブルグラフの調査 をご参照ください。
Refresh History タブには、リフレッシュの履歴が表示されます。 Snowsightを使用したリフレッシュのモニタリング をご参照ください。
SQL コマンドを使用した動的テーブルのリストと詳細表示¶
現在のデータベース(現在データベースが使用されていない場合はアカウント)内の動的テーブルをリストするには、 SHOW DYNAMIC TABLES コマンドを使用します。
たとえば、データベース
mydb
内とスキーマmyschema
内にあるproduct_
で始まる名前の動的テーブルをリストするには、次の SQL ステートメントを実行します。SHOW DYNAMIC TABLES LIKE 'product_%' IN SCHEMA mydb.myschema;
コマンドの完全な構文については、 SHOW DYNAMIC TABLES をご参照ください。
動的テーブルの列に関する情報を出力するには、 DESCRIBE DYNAMIC TABLE コマンドを使用します。
たとえば、
product
という名前の動的テーブルの列をリストアップするには、DESC DYNAMIC TABLE product;
TABLES ビュー の結果には動的テーブルも含まれています。
動的テーブルをドロップする¶
動的テーブルをドロップするには、 Snowsight または SQL コマンドのいずれかを使用します。
- Snowsight:
Snowsightで、動的テーブルの詳細ページを開きます(手順)。
ページの右上隅にある More メニューで、 Drop を選択します。
- SQL:
DROP DYNAMIC TABLE コマンドを使用します。
たとえば、
product
という名前の動的テーブルをドロップするには、
DROP DYNAMIC TABLE product;
動的テーブルのデータ共有¶
動的テーブルは共有可能なオブジェクトです。動的テーブルを共有するには、データ共有プロバイダーが動的テーブルに対する権限を共有に付与します。これにより、データ共有コンシューマーがその権限を使用できるようになります。
動的テーブルのウェアハウスまたはターゲットラグの変更¶
動的テーブルのウェアハウスまたはターゲットラグを変更するには、 ALTER DYNAMIC TABLE コマンドを使用します。
たとえば、動的テーブル product
のウェアハウスを my_other_wh
に変更するには、次を実行します。
ALTER DYNAMIC TABLE product SET WAREHOUSE = my_other_wh;
以下の図は、中断、再開、および手動リフレッシュの操作を他の動的テーブルとの上流と下流の関係で表しています。
この図は、動的テーブルで構築されたシンプルな宣言型データパイプラインを示しています。小川を流れる水と同じように、動的テーブルパイプラインのデータは、ルートから下流にある末端の動的テーブルに向かって流れます。
DT2 は、 DT1 の 下流 として説明されます(その動的テーブルに依存するため)。また、 DT3 の 上流 として説明されます(その動的テーブルに依存するため)。
DT3 は、DT2 と DT1 の両方の下流にあります。これは、DT2 に直接依存し、 DT1 に間接的に依存するためです。
DT1 は他の動的テーブルの直接的または間接的な上流にあります。
下流ターゲットラグの詳細および使用例については、 ターゲットラグについて をご参照ください。
動的テーブルの最適ターゲットラグの決定¶
動的テーブルの最適なターゲットラグタイムを決定するには、 Snowsight または SQL コマンドのいずれかを使用します。
- Snowsight:
動的テーブルの詳細ページ で、 Refresh History タブを選択します。
タブの上部に表示されている、実際の最大ラグタイムを確認します。このメトリックは、各リフレッシュの実際のラグタイムに基づいています。
- SQL:
INFORMATION_SCHEMA の DYNAMIC_TABLE_REFRESH_HISTORY テーブル関数を使用します。この関数は、リフレッシュにかかった時間やスキップされたリフレッシュなど、動的テーブルの各リフレッシュに関する情報を返します。
選択したラグタイムは、自動リフレッシュプロセスによって決定されるリフレッシュスケジュールに影響します。自動リフレッシュプロセスは、動的テーブルのタイムラグに最適なスケジュールを選択します。
増分リフレッシュまたはフルリフレッシュのいずれが使用されているかの判断¶
動的テーブルのリフレッシュに増分リフレッシュとフルリフレッシュのどちらが使用されているかを判断するには、 Snowsight または SQL コマンドを使用します。
- Snowsight:
動的テーブルの詳細ページ に移動します。
ページ上部の基本詳細には、そのテーブルで増分リフレッシュが使用されているか、フルリフレッシュが使用されているかが示されます。
- SQL:
SHOW DYNAMIC TABLES を使用し、出力の
REFRESH_MODE
の値を確認します。REFRESH_MODE_REASONには、REFRESH_MODEの選択に関する詳細が含まれています。
ベーステーブルの列に対する変更の影響について¶
ベーステーブル、ビュー、および基になる動的テーブルの列は、時間の経過とともに変更される可能性があります。動的テーブル自体に影響を与える変更もあれば、影響が限定的かまったくない変更もあります。
動的テーブルに関連付けられた基になるオブジェクトが変更されると、以下の動作が適用されます。
変更 |
影響 |
---|---|
|
なし。ベーステーブルに新しい列が追加されたり、未使用の列が削除されたりしても、何もアクションは発生せず、リフレッシュは以前と同様に継続されます。 |
|
フルリフレッシュ/再初期化: 次のリフレッシュサイクルの間に、動的テーブルに不正確なデータや古いデータがないことを確実にするためにフルリフレッシュが実行されます。 |
|
動的テーブルの状態は FAILED に変わります。変更に対応するために、動的テーブルを再作成する必要があります。 |
自動中断の動作について¶
注釈
リフレッシュエラーが5回続くと、動的テーブルは中断されます。リフレッシュエラーによって中断される動的テーブルは、ユーザーのアクションではなくシステムによって中断されるため、一般的に 自動中断 と呼ばれます。
中断された動的テーブルに依存する動的テーブルも中断されます。SCHEDULING_STATE は動的テーブルの現在の状態を説明します。
動的テーブルのスケジューリング状態を表示するには、 DYNAMIC_TABLE_GRAPH_HISTORY テーブル関数を呼び出し、 SCHEDULING_STATE 列を調べます。