Snowflakeのテーブル種類|通常・一時・トランジェントの違いを解説

Snowflakeのテーブル種類|通常・一時・トランジェントの違いを解説 Snowflake

はじめに:Snowflakeのテーブルって1種類じゃないの?

こんにちは!Snowflakeを触り始めた方が「CREATE TABLE って書けばテーブルが作れるんでしょ?」と思って公式ドキュメントを開くと、いきなり TEMPORARYTRANSIENT という見慣れない単語が出てきて戸惑うことがあります。

実はSnowflakeには 通常(Permanent)テーブル一時(Temporary)テーブルトランジェント(Transient)テーブル の3種類があり、それぞれ「寿命」と「守られ方」と「コスト」が違います。この記事では、その違いを初心者向けにやさしく整理します!Snowflakeのテーブル種類である通常・一時・トランジェントの3タイプを並べて紹介する解説の概念図

3種類のテーブルをざっくり比較

まずは全体像をテーブルで見てみましょう。前提として、Snowflakeには「Time Travel(過去データを遡る機能)」と「フェイルセーフ(7日間の災害対策バックアップ)」という保護機能があります。これらの扱いがテーブル種類ごとに違うのがポイントです。

比較表

違いをひと目で確認しましょう。

比較表の解説図

① 通常テーブル(Permanent)— 一番きっちり守られる

何も指定せずに CREATE TABLE を書くと作られるのがこれ。本番のマスターデータや売上データなど、絶対に失いたくないデータを入れる用です。

-- ふつうに書けばPermanent
CREATE TABLE sales (
  id INT,
  amount NUMBER,
  sold_at TIMESTAMP
);

過去データを遡れるTime Travelが最大90日(エディションによる)使え、さらにその後7日間のフェイルセーフでSnowflake側にも保護されます。安心な反面、その期間分のストレージ料金がかかります。

② 一時テーブル(Temporary)— セッションが終わると消える

一時テーブルは そのセッション(=ログインからログアウトまで)の間だけ存在するテーブルです。ワークシートを閉じたり接続を切ると自動で消えます。

-- TEMPORARYキーワードを付ける
CREATE TEMPORARY TABLE tmp_calc AS
SELECT customer_id, SUM(amount) AS total
FROM sales
GROUP BY customer_id;

用途は 分析の途中計算ETLの中間データ。フェイルセーフがなく、セッションごと消えるためストレージコストもほぼかかりません。注意点は、同名の通常テーブルがあってもセッション中は一時テーブルが優先されることです。CREATE TEMPORARY TABLE構文でセッション中だけ存続するSnowflake一時テーブルを作成するSQL例③ トランジェントテーブル(Transient)— 残るけど守りは薄い

トランジェントは「セッションを超えて残るけど、フェイルセーフは無し / Time Travelも最大1日」という中間的な存在です。

-- TRANSIENTキーワードを付ける
CREATE TRANSIENT TABLE staging_logs (
  log_id INT,
  payload VARIANT
);

「いつでも再生成できるけれど、毎回作り直すのは面倒」というデータに最適です。例えばステージング層のテーブルログの加工テーブルなど、消えても元ファイルから作り直せるものですね。フェイルセーフがない分、ストレージコストが安く抑えられるのが大きな魅力です。

使い分けの目安

  • 本番のマスター・売上・顧客データ → 通常テーブル
  • クエリ中の中間結果・一時計算 → 一時テーブル
  • 再生成可能な中間層・ログ加工 → トランジェントテーブル

コストを意識したい方は料金体系の記事もあわせてどうぞ。なお、フェイルセーフがあるかどうかはエディションでも挙動が変わるので、本番運用時はチェックしておきましょう。

まとめ

Snowflakeのテーブルは「永続性」と「保護の手厚さ」で3種類に分かれます。データの重要度と再生成のしやすさを天秤にかけて選ぶことで、安心とコスト削減のバランスがとれます。一時テーブルやトランジェントテーブルを上手に使えば、ストレージ料金を大きく節約できますよ!

参考リンク

関連記事