デルタ テーブルを変更せずに検査する必要がある場合は、 DESCRIBE DETAIL と DESCRIBE HISTORY を使用します。 これらのコマンドは、テーブルの格納方法、時間の経過と共に変更された内容、調査または復元するテーブルのバージョンを理解するのに役立ちます。
どちらのコマンドも読み取り専用の検査コマンドです。 テーブル データ、メタデータ、またはトランザクション履歴は変更されません。
DESCRIBE DETAIL を使用する
DESCRIBE DETAIL は Delta テーブルのテーブル レベルのメタデータを返します。 テーブル定義とストレージの詳細のクイック スナップショットが必要な場合に使用します。
一般的なメタデータには、次のものが含まれます。
- テーブルの形式
- テーブル識別子と名前
- OneLake の場所
- 作成時刻と最終変更時刻
- パーティション列
- ファイル数と合計サイズ (バイト単位)
- テーブルのプロパティ
- リーダーとライターの最小プロトコル バージョン
DESCRIBE DETAIL を実行する
PySpark または Scala で Spark SQL または Delta Lake API を使用して、デルタ テーブルに対して DESCRIBE DETAIL を実行します。
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 テーブルの操作レベルの履歴を返します。
WRITE、MERGE、OPTIMIZE、VACUUM、DELETE、UPDATEなどの書き込みとメンテナンス アクティビティの監査証跡が必要な場合に使用します。
この履歴は、次のような質問に答えるのに役立ちます。
- テーブルを変更したのは誰ですか?
- どの操作が実行されましたか?
- 変更が発生したのはいつですか?
- タイム トラベルまたは復元で検査する必要があるバージョンはどれですか?
DESCRIBE HISTORY を実行する
DESCRIBE HISTORYを実行して、使用可能な完全な履歴を返します。
最新のエントリのみが必要な場合は、出力を制限します。
DESCRIBE HISTORY の出力について
履歴出力は、デルタ トランザクションの監査ログです。 次の列は特に便利です。
| Column | 意味 |
|---|---|
version |
操作によって作成された Delta テーブルのバージョン。 |
timestamp |
操作がコミットされた時刻。 |
operation |
操作の種類 ( WRITE、 MERGE、 OPTIMIZE、 VACUUMなど)。 |
operationParameters |
操作に指定されたパラメーター。 |
operationMetrics |
操作用にキャプチャされたメトリック (追加されたファイル、削除されたファイル、書き込まれた行、処理されたデータ ボリュームなど)。 |
userName |
操作に関連付けられているユーザーまたはプリンシパル (使用可能な場合)。 |
| ノートブック情報 | ノートブックの実行から操作が行されたときのノートブック関連のコンテキスト (ノートブック パスやノートブック ID など)。 |
操作名を超える必要がある場合は、 operationParameters と operationMetrics を一緒に使用します。 たとえば、OPTIMIZE エントリと VACUUM エントリには、多くの場合、書き直したりクリーンアップFabricデータの量を理解するのに役立つメトリックが含まれます。
DESCRIBE HISTORY を使用する場合
DESCRIBE HISTORY は、次のシナリオで特に役立ちます。
- 監査証跡: テーブルを変更したユーザーと実行した操作を確認します。
- デバッグ: 問題が発生した書き込み、マージ、最適化、または削除操作を特定します。
-
バージョンの検出: タイム トラベルまたは
RESTOREで使用するテーブルのバージョンを検索します。 -
メンテナンスの監視:
OPTIMIZEとVACUUMメトリックを調べて、メンテナンスが実行されたことを確認し、変更された内容を確認します。
これらのコマンドを実行する場所
Apache Spark を使用して Delta テーブルを操作する場合は、Fabricノートブックと Spark ジョブ定義でこれらのコマンドを実行します。
DESCRIBE DETAIL は、基本的なテーブル メタデータ シナリオの SQL 分析エンドポイントでも機能します。 PySpark や Scala で DeltaTable.forName(...).detail() や DeltaTable.forName(...).history() などの完全な Delta Lake API が必要な場合は、Spark を使用します。
履歴の保持
Delta 履歴の保持は、delta.logRetentionDurationテーブル プロパティによって制御されます。 既定の保持期間は 30 日です。
古い履歴を調べる必要がある場合は、テーブルの保持設定で、操作と監査の要件に十分な時間、トランザクション ログが保持されていることを確認します。