はじめに:動的テーブルって何がうれしいの?
「元のテーブルが更新されたら、集計結果のテーブルも自動で更新してほしい…」
そんなとき、これまでは タスク + ストアドプロシージャ や マテリアライズドビュー を組み合わせて、自分でパイプラインを作る必要がありました。
でもSnowflakeの動的テーブル(Dynamic Table)を使えば、SELECT文を1本書くだけで「自動更新されるテーブル」が出来上がります!今回はそんな便利機能の仕組みと使い方を、初心者向けにやさしく解説していきますね。

動的テーブルの基本概念
「結果を保存する宣言型のテーブル」
動的テーブルは、ひと言で言うと「クエリの結果を保存しておくテーブル」です。普通のテーブルと違うのは、中身を自分でINSERTしないこと。代わりに AS SELECT ... でクエリを定義しておくと、Snowflakeがその結果を自動で計算&保存してくれます。
ビューやマテリアライズドビューとの違い
- ビュー:クエリのたびに毎回計算する(結果は保存されない)
- マテリアライズドビュー:結果が保存されるが、使えるクエリ構文に制限が多い(JOIN不可など)
- 動的テーブル:結果が保存され、JOINや集計、ウィンドウ関数も自由に使える。指定した間隔で自動更新
ビューとマテリアライズドビューの違いについては Snowflakeビューとマテリアライズドビューの違い|初心者向け使い分けガイド で詳しく解説しているので、合わせて読んでみてください。
使い方:CREATE DYNAMIC TABLE
基本構文はシンプルです。TARGET_LAG(どれくらい新鮮なデータを保つか)と WAREHOUSE(計算に使うウェアハウス)を指定するのがポイント。
CREATE OR REPLACE DYNAMIC TABLE daily_sales_summary
TARGET_LAG = '5 minutes'
WAREHOUSE = my_wh
AS
SELECT
order_date,
COUNT(*) AS order_count,
SUM(amount) AS total_amount
FROM orders
GROUP BY order_date;
これだけで「orders テーブルが更新されてから最大5分以内に、daily_sales_summary も最新化される」というパイプラインが完成します。タスクもストアドも不要です。

TARGET_LAGの指定方法
TARGET_LAG は「データの鮮度の上限」を表すパラメータです。
TARGET_LAG = '1 minute'… 最大1分の遅れまで許容(頻繁に更新)TARGET_LAG = '1 hour'… 最大1時間の遅れ(コスト節約寄り)TARGET_LAG = DOWNSTREAM… 下流の動的テーブルが必要なときだけ更新
Snowsightでの操作
Snowsight左メニューの Data → 対象スキーマを開くと、Dynamic Tables という項目があります。ここから定義の確認や、リフレッシュ履歴・所要時間のグラフを確認できます。失敗していないかをサクッとチェックできるので便利です。
よくあるユースケース
- ELTパイプラインの中間テーブル:生データ → クレンジング → 集計、と段階的な変換を動的テーブルのチェーンで実現
- BIダッシュボード用の集計テーブル:重い集計を事前計算して、ダッシュボードのレスポンスを高速化
- Snowpipeと組み合わせたニアリアルタイム分析:ファイル取り込み→集計まで自動化
注意点
- 更新にはウェアハウスのクレジットを消費します。
TARGET_LAGを短くしすぎないように。 - クエリには使えない関数や構文の制約があります(非決定的な関数など)。
- 初回作成時は全件を計算するため、データ量が多いと時間がかかります。
まとめ
動的テーブルを使えば、SELECT文を書くだけで自動更新されるテーブルが手に入ります。タスクやプロシージャを書かなくてもパイプラインが組めるので、データエンジニアリングの工数を大きく削減できる強力な機能です。ビューやマテビューと使い分けながら、ぜひ活用してみてくださいね!
参考リンク
関連記事
- Snowflakeビューとマテリアライズドビューの違い|初心者向け使い分けガイド – 動的テーブルとも比較される2つの仕組みを整理
- Snowflakeのテーブル種類|通常・一時・トランジェントの違いを解説 – 動的テーブル以外のテーブル種別も押さえておこう
- Snowpipeで自動取り込み!ファイルアップロードを検知する方法 – 動的テーブルと組み合わせるとニアリアルタイム分析が実現できる
- Snowflakeウェアハウスとは?サイズと使い分けを初心者向けに解説 – 動的テーブルの更新に使うウェアハウス選びの参考に
- Snowflake外部テーブル入門|S3のファイルを直接クエリする方法 – 外部のデータを起点にする場合の選択肢として

