テーブルプロパティのリファレンス
Delta Lake および Apache Iceberg はテーブルプロパティを使用して、テーブルの動作と機能を制御します。これらのプロパティは、設定時に特定の意味を持ち、動作に影響を与える可能性があります。
テーブルプロパティを設定または更新するすべての操作は、他の並列書き込み操作と競合し、失敗します。Databricks では、テーブルで並列書き込み操作が行われていない場合にのみ、テーブルプロパティを変更することをお勧めします。
テーブルプロパティを変更
既存のテーブルのテーブルプロパティを変更するには、SET TBLPROPERTIESを使用します。
DeltaとIcebergフォーマット
Delta Lake と Apache Iceberg テーブルは同じテーブルプロパティ名を共有しますが、異なるプレフィックスを必要とします:
- Delta Lake テーブル :
delta.プレフィックスを使用します - Iceberg テーブル :
iceberg.プレフィックスを使用します。
例えば、テーブルで削除ベクトルを有効にするには:
- Delta Lake table
- Iceberg table
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);
ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);
テーブルプロパティとSparkSessionプロパティ
各テーブルには、その動作を制御する独自のテーブルプロパティがあります。SparkSessionの設定の中には、常にテーブルのプロパティを上書きするものがあります。例えば、autoCompact.enabled と optimizeWrite.enabled は SparkSession レベルで自動圧縮と最適化された書き込みを有効にします。Databricksでは、ほとんどのワークロードでテーブルスコープの構成を使用することを推奨しています。
SparkSession設定を使用して、新しいテーブルのデフォルト値を設定できます。これらのデフォルトは新しいテーブルにのみ適用され、既存のテーブルプロパティには影響しません。次の表に示すように、SparkSession の設定ではテーブルプロパティとは異なるプレフィックスを使用します。
テーブルプロパティ | SparkSessionの設定 |
|---|---|
|
|
例えば、セッションで作成されるすべての新しいテーブルに対してappendOnly = trueプロパティを設定するには、以下を設定します。
- Delta Lake table
- Iceberg table
SET spark.databricks.delta.properties.defaults.appendOnly = true
SET spark.databricks.iceberg.properties.defaults.appendOnly = true
テーブルプロパティ
以下のテーブルプロパティのほとんどは、示されている場合を除き、Delta LakeおよびApache Icebergのテーブルで利用可能です。Delta Lake テーブルには delta. プレフィックスを、Iceberg テーブルには iceberg. プレフィックスを使用します。
属性 | 説明 |
|---|---|
|
最適化された書き込みを参照してください。 データ型: デフォルト: (なし) |
| データスキップのために統計を収集する列数 データのスキップを参照してください。 データ型: デフォルト: |
| データスキップ機能の強化を目的として統計を収集する列名のコンマ区切りリスト。このプロパティは データのスキップを参照してください。 データ型: デフォルト: (なし) |
| 論理的に削除されたデータファイルを物理的に削除する前に保持する最短期間。これにより、コンパクションまたはパーティションの上書き後に、古いリーダーにおける障害が防止されます。 Databricks は、7日間以上のデフォルト値をお勧めします。保持期間が短すぎる場合、長時間実行ジョブのコミットされていないファイルが、ジョブが完了する前に削除される可能性があります。 タイムトラベルクエリのデータ保持を構成するを参照してください。 データ型: デフォルト: |
|
Databricks の削除ベクトルおよび削除ベクトルの有効化を参照してください。 データ型: デフォルト: ワークスペースの管理者設定と Databricks Runtime バージョンによって異なります。 削除ベクトルの自動有効化を参照してください。 |
| テーブルの履歴を保持する期間。 Databricks は、チェックポイントが書き込まれるたびに、保持期間よりも古いログエントリを自動的にクリーンアップします。このプロパティを大きな値に設定すると、多くのログエントリが保持されます。ログに対する操作が定数時間であるため、これはパフォーマンスに影響しません。履歴操作は並列で実行されますが、ログサイズが増加するにつれてコストが増大します。 タイムトラベルクエリのデータ保持を構成するを参照してください。 データ型: デフォルト: |
| このテーブルの読み取りに必要なプロトコルリーダーの最低バージョンです。 Databricks では、このプロパティを手動で構成しないことをお勧めします。 Delta Lake 機能の互換性とプロトコルを参照してください。 データ型: デフォルト: |
| このテーブルへの書き込みに必要な最小プロトコルライターバージョン Databricks では、このプロパティを手動で構成しないことをお勧めします。 Delta Lake 機能の互換性とプロトコルを参照してください。 データ型: デフォルト: |
| Iceberg テーブル形式のバージョンです。 Databricks では、このプロパティを手動で構成しないことをお勧めします。 Apache Iceberg v3 機能を使用を参照してください。 データ型: デフォルト: |
|
データ型: デフォルト: |
| ファイルチューニングにおけるターゲットファイルサイズ(バイト単位以上)。たとえば、 「 データ ファイル サイズを制御する」を参照してください。 データ型: デフォルト: (なし) |
| テーブルの圧縮コーデック。 有効な値: このプロパティにより、テーブルへの今後のすべての書き込みは選択されたコーデックを使用し、クラスターまたはセッションのデフォルト ( データ型: デフォルト: |
| データファイルを書き込むときに使用される Parquet 形式のバージョン。
このプロパティはDelta Lakeテーブルにのみ適用されます。Iceberg、UniFormテーブル、またはDatabricks Runtime以外のエンジンからアクセスされるテーブルには、このプロパティを設定しないでください。 データ型: デフォルト: |
|
データ型: デフォルト: |
| テーブルパーティション内の小さなファイルを自動的に結合して、小さなファイルの問題を減らします。 「自動圧縮」を参照してください。 データ型: デフォルト: (なし) |
|
データ型: デフォルト: |
|
データ型: デフォルト: |
|
Checkpoint V2およびリキッドクラスタリングを使用したテーブルの互換性を参照してください。 データ型: デフォルト: |
| テーブルの列と、異なる名前が使用されている対応するParquet列のカラムマッピングを有効にします。有効な値は Delta Lake 列マッピングを使用した列の名前変更と削除を参照してください。 注: データ型: デフォルト: |
|
データ型: デフォルト: |
|
チェンジデータフィードの使用を参照してください。 データ型: デフォルト: |
|
型の拡張を参照してください。 データ型: デフォルト: |
| 並列トランザクションによる変更から、トランザクションが隔離される度合い 有効な値は 分離レベル (WriteSerializable と Serializable) を参照してください。 データ型: デフォルト: |
|
データ型: デフォルト: |
| 新しいスナップショットがトランザクション識別子を保持する最短の期間(例: データ型: デフォルト: (なし) |