「本番テーブルのデータで新しいETLロジックを試したいが、本番を汚したくない」 「大規模テーブルのコピーに時間がかかりすぎる」——こうした課題を解決するのがDelta Cloneです。 DEEP CLONEはデータの完全な独立コピーを作り、SHALLOW CLONEはデータファイルを共有して 瞬時にクローンを作成します。
この記事では、DEEP/SHALLOW CLONEの違い、構文、用途別の選択基準、 VACUUM・Time Travel・メタデータの挙動、そして試験での出題ポイントを整理します。
| 比較軸 | DEEP CLONE | SHALLOW CLONE |
|---|---|---|
| データコピー | 全データファイルを物理コピー | データファイルは参照のみ(コピーしない) |
| 作成速度 | データサイズに比例(大規模テーブルは時間がかかる) | メタデータのみコピーのため高速 |
| ストレージコスト | ソースと同等の追加コスト | ほぼゼロ(クローンへの書き込み分のみ) |
| ソースからの独立性 | 完全に独立(ソースの変更・削除の影響なし) | ソースに依存(ソースのVACUUMで破損する可能性) |
| メタデータ | スキーマ・制約・プロパティを完全コピー | スキーマ・制約・プロパティを完全コピー |
| VACUUM影響 | 影響なし | ソースのVACUUMで参照ファイルが削除されると破損 |
| Time Travel | クローン独自の履歴がバージョン0から開始 | クローン独自の履歴がバージョン0から開始 |
-- DEEP CLONE: データの完全コピー
CREATE TABLE dev.sandbox.orders_clone
DEEP CLONE prod.silver.orders;
-- SHALLOW CLONE: メタデータのみコピー(データは参照)
CREATE TABLE dev.sandbox.orders_shallow
SHALLOW CLONE prod.silver.orders;
-- 特定バージョンのクローン(Time Travel)
CREATE TABLE dev.sandbox.orders_v5
DEEP CLONE prod.silver.orders VERSION AS OF 5;
-- 特定タイムスタンプのクローン
CREATE TABLE dev.sandbox.orders_snapshot
SHALLOW CLONE prod.silver.orders TIMESTAMP AS OF '2026-03-25';
-- 既存テーブルの差分更新(増分DEEP CLONE)
CREATE OR REPLACE TABLE dev.sandbox.orders_clone
DEEP CLONE prod.silver.orders;CREATE OR REPLACEでDEEP CLONEを再実行すると、前回のクローン以降の差分のみコピーされます。 これを増分クローン(Incremental Clone)と呼び、毎日の同期に活用できます。
データサイエンティストが本番データで新しいモデルを試す場合、SHALLOW CLONEが最適です。 数TBのテーブルでも数秒でクローンが完了し、自由にJOINやフィルタリングを試せます。 クローンへの書き込みはソースに影響しません。
-- 実験用にSHALLOW CLONEを作成
CREATE TABLE dev.ml_experiments.user_features
SHALLOW CLONE prod.gold.user_features;
-- クローン上で自由に実験(ソースに影響なし)
ALTER TABLE dev.ml_experiments.user_features
ADD COLUMN age_bucket STRING;
UPDATE dev.ml_experiments.user_features
SET age_bucket = CASE
WHEN age < 25 THEN 'young'
WHEN age < 50 THEN 'middle'
ELSE 'senior'
END;ETLロジックの変更をテストする際、DEEP CLONEで本番テーブルの完全コピーを作成し、 テスト環境でパイプライン全体を通しで動かします。DEEP CLONEはソースから完全に独立しているため、 テスト中のVACUUM実行やパイプライン障害がソースに影響することはありません。
-- テスト用にDEEP CLONEを作成
CREATE TABLE staging.test.orders
DEEP CLONE prod.silver.orders;
CREATE TABLE staging.test.customers
DEEP CLONE prod.silver.customers;
-- テスト環境でETLパイプラインを実行
-- 結果が期待通りか検証後、本番に適用コンプライアンス要件でデータのスナップショットを長期保存する場合、DEEP CLONEが適しています。 ソーステーブルのVACUUMやスキーマ変更の影響を受けずに、特定時点のデータを保持できます。
-- 月次のアーカイブスナップショット
CREATE TABLE archive.monthly.orders_202603
DEEP CLONE prod.silver.orders
TIMESTAMP AS OF '2026-03-31 23:59:59';クローンされないもの: テーブルの変更履歴(History)、ストリーミングチェックポイント、 Unity Catalogの権限(クローン先のデフォルト権限が適用される)。
SHALLOW CLONEの最大のリスクはソーステーブルのVACUUMです。 VACUUMが保持期間を超えたデータファイルを削除すると、SHALLOW CLONEがそのファイルを 参照している場合にクエリが失敗します。
-- ソースのVACUUM保持期間を確認
DESCRIBE DETAIL prod.silver.orders;
-- delta.deletedFileRetentionDuration を確認
-- SHALLOW CLONEを安全に使う場合の推奨設定
ALTER TABLE prod.silver.orders
SET TBLPROPERTIES (
'delta.deletedFileRetentionDuration' = 'interval 30 days'
);Data Engineer Associate / Professional
問題 1
データエンジニアが5TBの本番テーブルのコピーを使って新しいETL変換ロジックをテストしたい。テスト期間は1週間で、テスト終了後にクローンは削除する予定だ。本番テーブルでは毎日VACUUMが保持期間7日で実行されている。最も適切な方法はどれか。
正解: A
VACUUMが保持期間7日で毎日実行される環境では、テスト期間1週間のSHALLOW CLONEは参照ファイルの削除でクエリが失敗するリスクがあります。DEEP CLONEはデータを完全コピーするため、ソースのVACUUMに影響されません。CTASも機能しますが、制約やテーブルプロパティが引き継がれない点がDEEP CLONEに劣ります。本番テーブルの直接変更は論外です。
SHALLOW CLONEでソーステーブルにVACUUMを実行するとどうなりますか?
SHALLOW CLONEはソーステーブルのデータファイルを参照しているため、VACUUMでソースの古いファイルが削除されると、SHALLOW CLONEのクエリが失敗します。SHALLOW CLONEを使う場合は、ソーステーブルのVACUUM保持期間をクローンの利用期間より長く設定するか、DEEP CLONEに変換してください。
DEEP CLONEとCTAS(CREATE TABLE AS SELECT)の違いは?
DEEP CLONEはデータファイルのコピーに加え、テーブルのメタデータ(スキーマ、制約、テーブルプロパティ、パーティション情報)も完全に複製します。CTASはSELECTの結果を新テーブルに書き込むだけで、NOT NULL制約やCHECK制約、テーブルプロパティは引き継がれません。制約やプロパティの維持が必要な場合はDEEP CLONEが適切です。
SHALLOW CLONEにデータを書き込むとどうなりますか?
SHALLOW CLONEへの書き込み(INSERT/UPDATE/DELETE)はクローン独自のデータファイルとして保存されます。ソーステーブルには影響しません。つまり、SHALLOW CLONEへの書き込みにより、そのクローンは部分的にDEEP CLONEのような独自データを持つ状態になります。ただし、ソースから参照しているファイル部分は引き続きVACUUMの影響を受けます。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...