本記事では、Databricksを初めて使う方に向けて、Delta Lakeを使ったテーブルの作成・更新・タイムトラベルを体験できるよう、わかりやすくステップバイステップで解説します。
📘 Delta Lakeとは?
Delta Lakeは、通常のCSVやParquetファイルのような"保存するだけの形式"とは違い、上書き・更新・削除・巻き戻しなどの操作ができる「進化した保存形式」です。
簡単に言うと:
💡 Excelで "保存してからやり直す" 機能があると思ってください!
🚀 この記事でできること
- Deltaテーブルの作成(CSVから)
- データの更新(UPDATE)
- タイムトラベルで過去の状態に戻る
🛠 Databricksの準備
- Databricks Community Editionに登録(無料)
- ノートブックを新規作成
- クラスターを起動(Pythonが選べる設定でOK)
🧪 ステップ1:CSVデータを読み込んでDeltaテーブルを作る
まずは簡単なCSVファイル(例:商品一覧)を読み込んで、Deltaテーブルとして保存します。
# サンプルデータ読み込み
csv_path = "/databricks-datasets/retail-org/products/products.csv"
df = spark.read.csv(csv_path, header=True, inferSchema=True)
df.display()
# Delta形式で保存
df.write.format("delta").mode("overwrite").saveAsTable("products_delta")
🛠 ステップ2:データを更新してみよう
たとえば、すべての"price"列を10%アップさせてみます。
-- SQLモードで実行
UPDATE products_delta SET price = price * 1.1;
確認:
SELECT * FROM products_delta;
🕓 ステップ3:タイムトラベルしてみよう
変更前の状態(Version 0)を見てみましょう:
SELECT * FROM products_delta VERSION AS OF 0;
または、直近2分前のデータを指定して見る:
SELECT * FROM products_delta TIMESTAMP AS OF current_timestamp() - INTERVAL 2 MINUTES;
💡 よくある質問
質問 | 回答 |
---|---|
保存しないとタイムトラベルできない? | Delta形式に保存すればOK!自動で履歴が残ります |
CSVやParquetとの違いは? | Deltaは更新・削除・履歴参照ができます |
Databricks以外でも使える? | Spark OSSやDremioなど一部ツールでも使えます |
🧼 おまけ:テーブルを整理しよう
ファイルを最適化したいとき:
OPTIMIZE products_delta;
古いバージョンを削除したいとき(7日保持):
VACUUM products_delta RETAIN 168 HOURS;
✅ まとめ
Delta Lakeを使えば、普通のデータ保存に「安心・便利・やり直し」を追加できます。
今回覚えておきたいこと:
-
saveAsTable()
→ Deltaで保存 -
UPDATE
→ 値を上書きできる -
VERSION AS OF
→ タイムトラベル