既存の動的テーブルの変更

このセクションでは、 ALTER DYNAMIC TABLE コマンドを使用して既存の動的テーブルを変更する方法について説明します。

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

  • 動的テーブルのクラスタリングキーの名前変更、スワップ、追加

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

コスト効率やパフォーマンス向上のために、動的テーブルのウェアハウスを調整したい場合もあるでしょう。詳細については、 コンピューティングコスト および ウェアハウスの構成が動的テーブルのパフォーマンスに与える影響 をご参照ください。

動的テーブルのターゲット・ラグを調整することで、より新鮮なデータを取得したり、計算コストを削減したり、上流の依存関係の更新間隔に合わせたりすることができます。詳細については、 動的テーブルのターゲット・ラグの理解 をご参照ください。

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

-- Change the warehouse for my_dynamic_table to my_other_wh:
ALTER DYNAMIC TABLE my_dynamic_table SET
  WAREHOUSE = my_other_wh;
Copy
-- Specify the downstream target lag for a dynamic table:
ALTER DYNAMIC TABLE my_dynamic_table SET
  TARGET_LAG = DOWNSTREAM;
Copy

動的テーブルの名前の変更

動的テーブルの名前を変更すると、特定のテーブル名に依存するスクリプトやアプリケーションがあり、既存のスクリプトを変更せずに動的テーブルを更新したい場合に便利です。たとえば、特定の動的テーブル名をリファレンスとするスクリプトがある場合、テーブル名を変更することで、スクリプトを変更せずに基になるテーブルを入れ替えることができます。これにより継続性が確保され、スクリプトやプロセス間で複数のリファレンスを更新する手間が省けます。

動的テーブルの名前を変更するには、 ALTER DYNAMIC TABLE ... RENAME TO コマンドを使用します。例:

ALTER DYNAMIC TABLE my_dynamic_table RENAME TO my_new_dynamic_table;
Copy

動的テーブルの入れ替え

動的テーブルを交換することで、ワークフローを中断したり依存関係のあるスクリプトを変更したりすることなく、データセットまたはテーブルのバージョンをシームレスに移行できます。例えば、あるテーブルの新しいバージョンを開発しているが、進行中のプロセスでは同じ名前を使いたい場合、スワッピングを使えば古いテーブルを新しいテーブルに置き換えることができます。このアプローチにより、ダウンタイムや中断を最小限に抑えながら、アップデート、テスト、アップグレードが可能になり、継続性が確保されます。

動的テーブルを交換するには、 ALTER DYNAMIC TABLE ... SWAP WITH コマンドを使用します。動的テーブルと別の動的テーブルを入れ替えることはできません。

例:

-- Swap my_dynamic_table with the my_new_dynamic_table:
ALTER DYNAMIC TABLE my_dynamic_table SWAP WITH my_new_dynamic_table;
Copy

動的テーブルへのクラスタリングキーの追加

クラスタリングキーを動的テーブルに追加することで、クエリの効率やリフレッシュ操作を改善し、パフォーマンスを向上させることができます。

  • クエリの効率化: クラスタリングキーは、通常のテーブルと同様に、共通の結合キーやフィルター列をクラスタリングすることで、クエリの高速化に役立ちます。

  • 更新操作:クラスタリングキーが頻繁な変更パターンと一致している場合、クラスタリングキーを使用するとリフレッシュを高速化できます。たとえば、ユーザー ID によるクラスタリングは、一握りのユーザーが変更される更新がある場合に効果的です。

クラスタリングキーは、インクリメンタルまたはフル・リフレッシュ・モードの動的テーブルに指定できます。フル リフレッシュでは、クラスタリングはリフレッシュ中に実行され、バックグラウンドでの再クラスタリングは必要ありません。

動的テーブルをクラスタリングするには、 ALTER DYNAMIC TABLE ... CLUSTER BY コマンドを使用します。

ALTER DYNAMIC TABLE my_dynamic_table CLUSTER BY (date);
Copy