Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ テーブル履歴の表示(タイムトラベルの基本) | Databricksのコア概念
Databricks基礎:初心者ガイド

テーブル履歴の表示(タイムトラベルの基本)

メニューを表示するにはスワイプしてください

Note
定義

タイムトラベルは、Delta Lake の機能であり、テーブルの過去バージョンをクエリすることを可能にします。トランザクションログを利用することで、Databricks は記録された任意の時点のデータ状態を再構築できます。

Databricks の最も強力な「セーフティネット」の一つは、誰がテーブルを変更したか、いつ変更したか、変更前のデータがどのような状態だったかを正確に確認できる点です。

workspace.workshop.diamonds のダイヤモンドテーブルでは、すべての更新や削除が自動的に追跡されます。

1. DESCRIBE HISTORY コマンド

データの完全なタイムラインを確認するには、DESCRIBE HISTORY コマンドを使用します。これにより、テーブルのすべてのバージョンの詳細な記録が提供されます。

DESCRIBE HISTORY workspace.workshop.diamonds

このコマンドを実行すると、次の主要なカラムを持つテーブルが表示されます:

  • version: 0 から始まる整数(テーブルが初めて作成された時点);
  • timestamp: 変更が発生した正確な日時;
  • userName: 操作を実行したユーザー名;
  • operation: 実行された操作(例: WRITE, UPDATE, DELETE, MERGE など);
  • operationParameters: 変更に関する技術的な詳細。

2. 特定バージョンのクエリ

最近の更新で「Price」列に問題が発生した場合、VERSION AS OF構文を使用して、元の値が含まれる特定の過去バージョンを参照可能。

-- Look at the diamonds table exactly as it was in Version 0
SELECT * FROM workspace.workshop.diamonds VERSION AS OF 0

3. タイムスタンプによるクエリ

バージョン番号が不明でも、特定の時点でデータが正しかったことが分かっていれば、TIMESTAMP AS OFを使ってその時点に「タイムトラベル」可能。

-- Look at the data as it existed at a specific time
SELECT * FROM workspace.workshop.diamonds TIMESTAMP AS OF '2026-02-11 09:00:00'

4. この機能の重要性

従来のデータベースでは、DELETEコマンドをWHERE句なしで誤って実行した場合、データベース管理者に連絡してバックアップを復元してもらう必要があり、数時間かかることもある。

Delta Lake Time Travelを使えば、過去バージョンのデータを選択して現在の壊れたテーブルを健全な履歴データで上書きすることで、数秒でミスを修正可能。

5. 履歴の管理

デフォルトでは、Delta Lake は30日間の履歴を保持します。これは非常に便利ですが、履歴を保存するためには古いデータファイルを保持する必要があります。ただし、削除または上書きされたバージョンの基礎となるデータファイルは、delta.deletedFileRetentionDuration により 7 日間のみ保持され、その後 VACUUM コマンドでクリーンアップされます。

実務環境では、データエンジニアが VACUUM コマンドを使用して非常に古いファイルを削除し、ストレージコストを削減します。本コースでは、履歴は安全に保存されており、自由に探索できます。

VACUUM は、Delta Lake が不要と判断した古いデータファイル(更新・削除・上書き後に残されたファイル)を完全に削除するクリーンアップコマンドです。

VACUUM workspace.workshop.diamonds

デフォルトでは、Delta はタイムトラベル用に30日間のファイル履歴を保持します。VACUUM はこの期間より古いファイルを削除し、ストレージ容量を節約します。

保持期間をカスタマイズすることも可能です:

VACUUM workspace.workshop.diamonds RETAIN 7 HOURS

1. どの SQL コマンドを使うと、テーブルに対して行われたすべての過去バージョンと操作の一覧を確認できますか?

2. 誤って diamonds テーブルを更新してしまい、10 分前のデータを確認したい場合、どの構文を使うべきですか?

question mark

どの SQL コマンドを使うと、テーブルに対して行われたすべての過去バージョンと操作の一覧を確認できますか?

正しい答えを選んでください

question mark

誤って diamonds テーブルを更新してしまい、10 分前のデータを確認したい場合、どの構文を使うべきですか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 5.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 5.  3
some-alt