第1章 Snowflake AI Data Cloudの特徴とアーキテクチャ / 想定学習時間:30〜40分 / 最終確認:2026年8月

1-7. テーブルタイプ

🎯 この節の学習目標

1. 標準的な3タイプ:permanent・transient・temporary

Snowflake の内部ストレージに格納されるテーブルには、データ保護機能の強さが異なる3つのタイプがあります。違いを生むのは、過去のデータに遡れる Time Travel(TT)と、その後さらに Snowflake が災害復旧用に保持する Fail-safe の2つです(それぞれの詳細は第4章で学びます)。

タイプTime TravelFail-safe主な用途
permanent(既定)最大 1日(Standard Edition)
最大 90日(Enterprise Edition 以上)
あり(7日)本番データなど、保護を最優先するデータ
transient0〜1日なしステージング用・再作成可能なデータ。ストレージコストを抑えたい場合
temporary0〜1日なしセッション内の一時的な作業用データ

permanent テーブルは CREATE TABLE で作られる既定のタイプで、TT と Fail-safe の両方によって最も手厚く保護されます。その分、保護用の履歴データもストレージコストに含まれます。

transient テーブルは Fail-safe を持たず、TT も最大1日に制限される代わりに、履歴保持のためのストレージコストを抑えられます。「元データから再作成できる中間テーブル」「ロード前のステージングデータ」など、失っても復元手段があるデータに向いています。

temporary テーブルは、作成したセッションの中だけに存在し、他のセッションからは見えません。セッションが終了すると自動的に削除されます。同じセッション内の作業用・中間結果の置き場として使います。

📝 試験のポイント

TT と Fail-safe の有無」の組み合わせは選択肢の判別ポイントになりやすい論点です。Fail-safe があるのは permanent だけtransient と temporary は TT 0〜1日+Fail-safe なし、そして temporary はセッション限定・他セッション不可視という3点を確実に区別できるようにしておきましょう。permanent の TT 最大日数がエディションで変わる点(Standard は最大1日、Enterprise 以上は最大90日)もあわせて覚えます。

2. external テーブル:外部ファイルを読み取り専用で参照する

external テーブルは、Snowflake の内部ストレージにデータを取り込まず、外部ステージ上のファイル(クラウドストレージ上の Parquet・CSV など)を読み取り専用で参照するテーブルです。

「データレイク上のファイルを移動せずに SQL で参照したい」という場面で使われますが、内部テーブルに比べてクエリ性能は落ちるのが一般的です。

3. Iceberg テーブル:オープンフォーマットでの相互運用

Iceberg テーブルは、オープンなテーブルフォーマットである Apache Iceberg 形式でデータを管理するテーブルです。データは Snowflake の内部ストレージではなく、ユーザーが用意した外部ボリューム(external volume)上のクラウドストレージに置かれます。

💡 具体例:タイプを指定したテーブル作成

-- 既定は permanent
CREATE TABLE sales (id NUMBER, amount NUMBER);

-- transient テーブル(Fail-safeなし、ストレージコスト減)
CREATE TRANSIENT TABLE staging_sales (id NUMBER, amount NUMBER);

-- temporary テーブル(セッション内のみ)
CREATE TEMPORARY TABLE work_sales (id NUMBER, amount NUMBER);

-- external テーブル(外部ステージ上のファイルを読み取り専用で参照)
CREATE EXTERNAL TABLE ext_sales
  LOCATION = @my_ext_stage/sales/
  FILE_FORMAT = (TYPE = PARQUET);

キーワードを付けなければ permanent になる、という既定値も覚えておきましょう。

4. dynamic table と hybrid table

近年の Snowflake には、特定のワークロードに最適化されたテーブルタイプも追加されています。試験ではまず「何のためのものか」を対応付けられれば十分です。

タイプ特徴主な用途
dynamic tableSELECT 文の宣言だけで定義し、結果が自動的にリフレッシュされる(詳細は 3-5)変換パイプラインの簡素化。「常に最新の変換結果」を保つテーブル
hybrid tableUnistore ワークロード向け。行ストア主体で高速な単一行の読み書きに対応し、主キーが強制されるOLTP 的な(トランザクション処理中心の)アプリケーション

dynamic table は「変換ロジックを SELECT で宣言しておけば、更新処理を自分で書かなくても Snowflake が結果を保守してくれる」テーブルです。hybrid table は、分析(OLAP)向けの列指向ストレージとは対照的に行ストアを主体とし、トランザクション処理と分析を1つのプラットフォームで扱う Unistore を支えます。通常のテーブルと異なり主キー制約が強制される点が特徴です。

5. どのタイプを選ぶか:判断の流れ

データはどこに置くか?要件からテーブルタイプを選ぶ
外部ストレージのファイルをそのまま参照 → external読み取り専用・メタデータのリフレッシュ
オープン形式で他エンジンと共有 → Iceberg外部ボリューム上の Apache Iceberg 形式
OLTP 的な行単位の読み書き → hybridUnistore・行ストア主体・主キー強制
SELECT の結果を自動リフレッシュ → dynamic宣言的な変換パイプライン
内部ストレージの通常テーブルなら、保護レベルで選ぶ
本番データ・最大限の保護 → permanentTT+Fail-safe 7日
再作成可能・コスト重視 → transientTT 0〜1日・Fail-safe なし
セッション内の作業用 → temporary他セッション不可視・セッション終了で消滅

図:用途からテーブルタイプを選ぶ判断の流れ

✅ この節のまとめ

練習問題

問1. Time Travel と Fail-safe に関するテーブルタイプごとの説明として正しいものはどれか。

  1. permanent テーブルには Fail-safe がなく、transient テーブルには 7日の Fail-safe がある
  2. permanent テーブルは Fail-safe 7日を持ち、transient テーブルと temporary テーブルは Time Travel 0〜1日で Fail-safe を持たない
  3. temporary テーブルは Time Travel を最大90日まで設定できる
  4. 3タイプとも Time Travel と Fail-safe の設定は完全に同一である
解答と解説を見る

正解:B

Fail-safe(7日)を持つのは permanent テーブルだけで、transient と temporary は TT 0〜1日かつ Fail-safe なしです。Aは permanent と transient の説明が逆です。Cは誤りで、TT 最大90日(Enterprise 以上)が可能なのは permanent テーブルです。Dはタイプを分ける意味自体を否定しており誤りです。

問2. temporary テーブルの説明として正しいものはどれか。

  1. 作成したセッション内でのみ存在し、他のセッションからは見えず、セッション終了時に削除される
  2. すべてのセッションから参照でき、明示的に DROP するまで残り続ける
  3. 外部ステージ上のファイルを読み取り専用で参照する
  4. Fail-safe による7日間の保護を受けられる
解答と解説を見る

正解:A

temporary テーブルはセッションスコープのテーブルで、他セッションから不可視、セッション終了で自動削除されます。Bは permanent(または transient)テーブルの挙動です。Cは external テーブルの説明です。Dは誤りで、Fail-safe を持つのは permanent テーブルだけです。

問3. 「他のクエリエンジンからも読めるオープンなテーブルフォーマットでデータを保持したい」という要件に最も適したテーブルタイプはどれか。

  1. transient テーブル
  2. hybrid テーブル
  3. Iceberg テーブル
  4. temporary テーブル
解答と解説を見る

正解:C

Iceberg テーブルは Apache Iceberg というオープンフォーマットで外部ボリューム上にデータを保存するため、Snowflake 以外のエンジンとの相互運用が可能です。Aの transient は内部ストレージのテーブルであり、フォーマットの相互運用性とは関係ありません。Bの hybrid は OLTP(Unistore)向けのタイプです。Dの temporary はセッション内の一時作業用です。

問4. dynamic table と hybrid table の説明として正しいものを2つ選べ。

  1. dynamic table は SELECT 文の宣言に基づいて定義され、結果が自動的にリフレッシュされる
  2. dynamic table は外部ステージ上のファイルを読み取り専用で参照するテーブルである
  3. hybrid table は行ストアを主体とし、主キーが強制される Unistore(OLTP 向け)のテーブルである
  4. hybrid table はセッション終了時に自動削除される一時テーブルである
解答と解説を見る

正解:A・C

dynamic table は SELECT で変換結果を宣言し、Snowflake が自動リフレッシュで最新状態を保ちます(A)。hybrid table は行ストア主体で主キーが強制され、OLTP 的なワークロード(Unistore)に対応します(C)。Bは external テーブルの説明です。Dは temporary テーブルの説明です。