Delta テーブルのメタデータを検査する

デルタ テーブルを変更せずに検査する必要がある場合は、 DESCRIBE DETAILDESCRIBE HISTORY を使用します。 これらのコマンドは、テーブルの格納方法、時間の経過と共に変更された内容、調査または復元するテーブルのバージョンを理解するのに役立ちます。

どちらのコマンドも読み取り専用の検査コマンドです。 テーブル データ、メタデータ、またはトランザクション履歴は変更されません。

DESCRIBE DETAIL を使用する

DESCRIBE DETAIL は Delta テーブルのテーブル レベルのメタデータを返します。 テーブル定義とストレージの詳細のクイック スナップショットが必要な場合に使用します。

一般的なメタデータには、次のものが含まれます。

  • テーブルの形式
  • テーブル識別子と名前
  • OneLake の場所
  • 作成時刻と最終変更時刻
  • パーティション列
  • ファイル数と合計サイズ (バイト単位)
  • テーブルのプロパティ
  • リーダーとライターの最小プロトコル バージョン

DESCRIBE DETAIL を実行する

PySpark または Scala で Spark SQL または Delta Lake API を使用して、デルタ テーブルに対して DESCRIBE DETAIL を実行します。

DESCRIBE DETAIL schema_name.table_name

DESCRIBE DETAIL の出力を理解する

正確なスキーマはランタイムとテーブルの機能によって異なる場合がありますが、一般的に次の列が表示されます。

Column 意味
format テーブルの形式。 Fabricのデルタ テーブルの場合、この値は delta です。
id Delta テーブルの一意の識別子。
name 登録済みのテーブル名。
location OneLake 内のテーブルのストレージ パス。
createdAt テーブルが作成されたときのタイムスタンプ。
lastModified テーブルのメタデータまたはファイルが最後に更新されたときのタイムスタンプ。
partitionColumns テーブルに対して定義されているパーティション列の一覧。
numFiles テーブルによって追跡されているデータ ファイルの現在の数。
sizeInBytes 追跡対象テーブル データの合計サイズ (バイト単位)。
properties Delta テーブル定義と共に格納されるテーブル のプロパティ。
minReaderVersion テーブルを読み取るために必要な Delta プロトコル リーダーの最小バージョン。
minWriterVersion テーブルに書き込むために必要な Delta プロトコルの writer バージョンの最小値。

これらの値を使用して、テーブルが存在する場所を確認し、ストレージフットプリントを見積もり、パーティション分割を確認し、テーブルのプロパティまたはプロトコルのバージョンが変更されたかどうかを確認します。

DESCRIBE HISTORY を使用する

DESCRIBE HISTORY は Delta テーブルの操作レベルの履歴を返します。 WRITEMERGEOPTIMIZEVACUUMDELETEUPDATEなどの書き込みとメンテナンス アクティビティの監査証跡が必要な場合に使用します。

この履歴は、次のような質問に答えるのに役立ちます。

  • テーブルを変更したのは誰ですか?
  • どの操作が実行されましたか?
  • 変更が発生したのはいつですか?
  • タイム トラベルまたは復元で検査する必要があるバージョンはどれですか?

DESCRIBE HISTORY を実行する

DESCRIBE HISTORYを実行して、使用可能な完全な履歴を返します。

DESCRIBE HISTORY schema_name.table_name

最新のエントリのみが必要な場合は、出力を制限します。

DESCRIBE HISTORY schema_name.table_name LIMIT n

DESCRIBE HISTORY の出力について

履歴出力は、デルタ トランザクションの監査ログです。 次の列は特に便利です。

Column 意味
version 操作によって作成された Delta テーブルのバージョン。
timestamp 操作がコミットされた時刻。
operation 操作の種類 ( WRITEMERGEOPTIMIZEVACUUMなど)。
operationParameters 操作に指定されたパラメーター。
operationMetrics 操作用にキャプチャされたメトリック (追加されたファイル、削除されたファイル、書き込まれた行、処理されたデータ ボリュームなど)。
userName 操作に関連付けられているユーザーまたはプリンシパル (使用可能な場合)。
ノートブック情報 ノートブックの実行から操作が行されたときのノートブック関連のコンテキスト (ノートブック パスやノートブック ID など)。

操作名を超える必要がある場合は、 operationParametersoperationMetrics を一緒に使用します。 たとえば、OPTIMIZE エントリと VACUUM エントリには、多くの場合、書き直したりクリーンアップFabricデータの量を理解するのに役立つメトリックが含まれます。

DESCRIBE HISTORY を使用する場合

DESCRIBE HISTORY は、次のシナリオで特に役立ちます。

  • 監査証跡: テーブルを変更したユーザーと実行した操作を確認します。
  • デバッグ: 問題が発生した書き込み、マージ、最適化、または削除操作を特定します。
  • バージョンの検出: タイム トラベルまたは RESTOREで使用するテーブルのバージョンを検索します。
  • メンテナンスの監視: OPTIMIZEVACUUM メトリックを調べて、メンテナンスが実行されたことを確認し、変更された内容を確認します。

これらのコマンドを実行する場所

Apache Spark を使用して Delta テーブルを操作する場合は、Fabricノートブックと Spark ジョブ定義でこれらのコマンドを実行します。

DESCRIBE DETAIL は、基本的なテーブル メタデータ シナリオの SQL 分析エンドポイントでも機能します。 PySpark や Scala で DeltaTable.forName(...).detail()DeltaTable.forName(...).history() などの完全な Delta Lake API が必要な場合は、Spark を使用します。

履歴の保持

Delta 履歴の保持は、delta.logRetentionDurationテーブル プロパティによって制御されます。 既定の保持期間は 30 日です。

古い履歴を調べる必要がある場合は、テーブルの保持設定で、操作と監査の要件に十分な時間、トランザクション ログが保持されていることを確認します。