SnowPro Core資格への道 ~Part12:TEMPORARY TABLEとTRANSIENT TABLE~
はじめに
9月のSnowflake World Tour TokyoまでにSnowPro Coreをとります!
試験を8月28日(木)に受けようと思います。あと29日。
2周目第3回、66%。前回の71%から大幅に下がってテンションも低めです。
正直お盆以降SWTに向けたイベント準備とかやることが多すぎる。
自分で完結できることは早く終わらせたくなってきているので、スピードアップしたいです(っていう言霊)
現在こちらのUdemyの問題を解いています。
Snowflake SnowPro Core Certification Practice Tests COF-C02
今日の話題は仮テーブル(TEMPORARY TABLE)と一時テーブル(TRANSIENT TABLE)、です。
日本語の公式ドキュメントには仮:TEMPORARY、一時:TRANSIENTと書いてありますが、自動翻訳などするとどちらも一時テーブルになってしまうため混乱のもとになりますね。
📖【Snowflake】TEMPORARYテーブルとTRANSIENTテーブル、どう使い分ける?違いをサクッと解説
Snowflakeでデータを扱う際、CREATE TABLEコマンドでテーブルを作成しますが、実はいくつかの種類があることをご存知ですか?特に、TEMPORARYテーブルとTRANSIENTテーブルは、似ているようでいて重要な違いがあります。
この記事では、両者の特徴と違いを明確にし、どのようなシーンでどちらを使うべきかの指針を分かりやすく解説します。
✅TEMPORARYテーブルとは?
一番の特徴は、作成されたセッション内でのみ有効であるという点です。セッションが終了すると、このテーブルは自動的にドロップ(削除)されます。
私は↓の部分が面白い!って思いました。

仮テーブルは永続テーブルと同じデータベース、スキーマ内に作成することができる。
仮テーブルを作ったら永続テーブルは事実上非表示にできちゃう!(なんと!)
📝 主な特徴
- セッション限定の寿命: 作成したセッションが終了すると自動的に消滅します。
- Time Travel対象外: 0日または1日の設定が可能です。ただしセッションが終了すると使えません。
- Fail-safe対象外: ディザスタリカバリのためのFail-safe領域にも保存されません。
- ストレージコスト: 一時的ではありますが、テーブルが存在している間のストレージコストは発生します。Time Travelも設定した場合発生します。ただしFail-safeのコストはかかりません。
どんなときに使う?
ETL/ELT処理の途中で発生する中間データを一時的に置いておきたい場合や、特定の分析のために一度だけ必要な集計結果を格納する、といった用途に最適です。
-- TEMPORARYテーブルの作成
CREATE TEMPORARY TABLE my_temp_table (
id INT,
data VARCHAR
);
✅ TRANSIENTテーブルとは?
TRANSIENT(つかの間の)テーブルは、TEMPORARYテーブルとPERMANENTテーブルの中間のような存在です。
セッションが終了してもテーブルは残り続けますが、一部のデータ保護機能が省略されています。
📝 主な特徴
-
永続的な存在
セッションが終了してもテーブルは削除されません。 -
限定的なTime Travel
Time Travelは最大1日まで利用可能です(デフォルト設定の場合)。 -
Fail-safe対象外
TEMPORARYテーブルと同様に、Fail-safeの対象ではありません。 -
ストレージコスト
通常のストレージコストは発生しますが、Fail-safe分のコストは不要です。
💡 どんなときに使う?
- 開発環境でのテストデータ
- 定期的に洗い替えされるキャッシュデータ
- 本番データほどの保護は不要だが、セッションをまたいで保持したいデータ
💻 SQL例
-- TRANSIENTテーブルの作成
CREATE TRANSIENT TABLE my_transient_table (
id INT,
data VARCHAR
);
🔍 違いを一覧で比較
| 項目 | TEMPORARY テーブル | TRANSIENT テーブル | PERMANENT テーブル(参考) |
|---|---|---|---|
| 永続性 | セッション内のみ | 永続的 | 永続的 |
| Time Travel | ❌ 対象外 | ✅ 最大1日(デフォルト) | ✅ 最大90日(設定により変更可) |
| Fail-safe | ❌ 対象外 | ❌ 対象外 | ✅ 対象 |
| ストレージコスト | あり(Fail-safeなし) | あり(Fail-safeなし) | あり(Fail-safe込み) |
| クローン(ゼロコピー) | ✅ 可能(同一セッション内のみ。クローンも Temporary 扱い) | ✅ 可能(保持期間内なら ポイントインタイム クローン可、保持0日は「現在時点」のみ) | ✅ 可能(設定した保持期間内で ポイントインタイム クローン可) |
✨ まとめ
| 使用目的 | 推奨テーブル |
|---|---|
| 一時的な中間処理や一時集計 | TEMPORARY |
| 開発用のテストデータ・キャッシュ | TRANSIENT |
| 本番データや重要なデータ管理 | PERMANENT(通常のテーブル) |
Snowflake データクラウドのユーザ会 SnowVillage のメンバーで運営しています。 Publication参加方法はこちらをご参照ください。 zenn.dev/dataheroes/articles/db5da0959b4bdd
Discussion