メインコンテンツまでスキップ

テーブルプロパティのリファレンス

Delta LakeおよびApache Icebergテーブルは、データレイアウト、ファイルサイズ、データスキップ、分離レベル、およびチェンジデータフィードを含む動作と機能を構成するためにテーブルプロパティを使用します。

注記

テーブルプロパティを設定または更新するすべての操作は、他の並列書き込み操作と競合し、失敗します。Databricks では、テーブルで並列書き込み操作が行われていない場合にのみ、テーブルプロパティを変更することをお勧めします。

テーブルプロパティを変更

既存のテーブルのテーブルプロパティを変更するには、SET TBLPROPERTIESを使用します。

DeltaおよびIcebergのプロパティプレフィックス

Delta Lake と Apache Iceberg テーブルは同じテーブルプロパティ名を共有しますが、異なるプレフィックスを必要とします:

  • Delta Lake テーブルdelta.プレフィックスを使用します
  • Iceberg テーブルiceberg.プレフィックスを使用します。

例えば、テーブルで削除ベクトルを有効にするには:

SQL
ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

テーブルプロパティおよび SparkSession プロパティ

各テーブルには、その動作を制御する独自のテーブルプロパティがあります。一部の SparkSession 構成は、常にテーブル プロパティを上書きします。たとえば、autoCompact.enabledoptimizeWrite.enabled により、SparkSession レベルで自動圧縮と最適化された書き込みが有効になります。Databricksでは、ほとんどのワークロードでテーブルスコープの構成を使用することを推奨しています。

新しいテーブルのデフォルト値をSparkSession構成を使用して設定できます。これらのデフォルトは新しいテーブルにのみ適用され、既存のテーブルプロパティには影響しません。SparkSession構成は、次の表に示すように、テーブルプロパティとは異なるプレフィックスを使用します。

テーブルプロパティ

SparkSession 構成

delta.<conf>

iceberg.<conf>

spark.databricks.delta.properties.defaults.<conf>

spark.databricks.iceberg.properties.defaults.<conf>

テーブルプロパティ

SparkSession 構成

delta.<conf>

iceberg.<conf>

spark.databricks.delta.properties.defaults.<conf>

spark.databricks.iceberg.properties.defaults.<conf>

例えば、セッションで作成されるすべての新しいテーブルに対してappendOnly = trueプロパティを設定するには、以下を設定します。

SQL
SET spark.databricks.delta.properties.defaults.appendOnly = true

テーブルプロパティ

以下のテーブルプロパティのほとんどは、示されている場合を除き、Delta LakeおよびApache Icebergのテーブルで利用可能です。Delta Lake テーブルには delta. プレフィックスを、Iceberg テーブルには iceberg. プレフィックスを使用します。

属性

説明

appendOnly

true テーブルを追記専用とする追加のみ可能なテーブルでは、既存のレコードの削除や既存の値の更新はできません。

データ型: Boolean

デフォルト: false

autoOptimize.autoCompact

テーブルパーティション内の小さなファイルを自動的に結合して、小さなファイルの問題を減らします。auto (推奨)、truelegacy、またはfalseを受け入れます。

「自動圧縮」を参照してください。

データ型: String

デフォルト: (なし)

autoOptimize.optimizeWrite

true 書き込み中に、このテーブルのファイルのレイアウトを自動的に最適化します。

最適化された書き込みを参照してください。

データ型: Boolean

デフォルト: (なし)

checkpoint.writeStatsAsJson

true stats 列のファイル統計をJSON形式でチェックポイントに書き込みます。

データ型: Boolean

デフォルト: false

checkpoint.writeStatsAsStruct

true stats_parsed 列の構造体形式でチェックポイントにファイル統計を書き込み、パーティション値を partitionValues_parsed の構造体形式として書き込みます。

データ型: Boolean

デフォルト: true

checkpointPolicy

classic 従来のチェックポイント用。v2向けのv2チェックポイント。

Checkpoint V2およびリキッドクラスタリングを使用したテーブルの互換性を参照してください。

データ型: String

デフォルト: classic

columnMapping.mode

テーブルの列と、異なる名前が使用されている対応するParquet列のカラムマッピングを有効にします。有効な値はnonenameidです。

Delta Lake 列マッピングを使用した列の名前変更と削除を参照してください。

注:columnMapping.modeを有効にすると、自動的にrandomizeFilePrefixesが有効になります。

データ型: DeltaColumnMappingMode

デフォルト: none

compatibility.symlinkFormatManifest.enabled (Delta Lake 限定)

true Delta Lakeテーブルを設定し、テーブルに対するすべての書き込み操作がマニフェストを自動的に更新するようにします。

データ型: Boolean

デフォルト: false

dataSkippingNumIndexedCols

データスキップのために統計を収集する列数-1という値は、すべての列の統計を収集することを意味します。

データのスキップを参照してください。

データ型: Int

デフォルト: 32

dataSkippingStatsColumns

データスキップ機能の強化を目的として統計を収集する列名のコンマ区切りリスト。このプロパティはdataSkippingNumIndexedColsよりも優先されます。

データのスキップを参照してください。

データ型: String

デフォルト: (なし)

deletedFileRetentionDuration

論理的に削除されたデータファイルを物理的に削除する前に保持する最短期間。これにより、コンパクションまたはパーティションの上書き後に、古いリーダーにおける障害が防止されます。

Databricks は、7日間以上のデフォルト値をお勧めします。保持期間が短すぎる場合、長時間実行ジョブのコミットされていないファイルが、ジョブが完了する前に削除される可能性があります。

タイムトラベルクエリのデータ保持を構成するを参照してください。

データ型: CalendarInterval

デフォルト: interval 1 week

enableChangeDataFeed

true チェンジデータフィードを有効にする。

チェンジデータフィードの使用を参照してください。

データ型: Boolean

デフォルト: false

enableDeletionVectors

true 更新のための削除ベクトルおよび予測 I/O を有効にする

Databricks の削除ベクトルおよび削除ベクトルの有効化を参照してください。

データ型: Boolean

デフォルト: ワークスペースの管理者設定と Databricks Runtime バージョンによって異なります。 削除ベクトルの自動有効化を参照してください。

enableIcebergCompatV2 (Delta Lake 限定)

true Iceberg リーダーと互換性のある形式でデータを書き込む IcebergCompatV2 を有効にするため。Iceberg 読み取りを有効にするには、このプロパティを universalFormat.enabledFormats と一緒に設定します。

IcebergクライアントでDelta Lakeテーブルを読み取るを参照してください。

データ型: Boolean

デフォルト: (なし)

enableRowTracking (Delta Lake 限定)

true 行レベルのリネージのために各行に安定した行 ID と行 commit バージョンを割り当てる、行追跡を有効にするため。Databricks Runtime 14.0 以降で利用可能です。Apache Iceberg v3 テーブルには、行追跡が自動的に含まれます。

Databricks の行追跡を参照してください。

データ型: Boolean

デフォルト: false

enableTypeWidening

true 型拡張を有効にする

型の拡張を参照してください。

データ型: Boolean

デフォルト: false

format-version (Apache Iceberg マネージドテーブル限定)

Iceberg テーブル形式のバージョンです。

Databricks では、このプロパティを手動で構成しないことをお勧めします。

Apache Iceberg v3 機能を使用を参照してください。

データ型: Int

デフォルト: 2

isolationLevel

並列トランザクションによる変更から、トランザクションが隔離される度合い

有効な値はSerializableWriteSerializableです。

分離レベル (WriteSerializable と Serializable) を参照してください。

データ型: String

デフォルト: WriteSerializable

logRetentionDuration

テーブルの履歴を保持する期間。VACUUM オペレーションはこの保持しきい値を上書きします。

Databricks は、チェックポイントが書き込まれるたびに、保持期間よりも古いログエントリを自動的にクリーンアップします。このプロパティを大きな値に設定すると、多くのログエントリが保持されます。ログに対する操作が定数時間であるため、これはパフォーマンスに影響しません。履歴操作は並列で実行されますが、ログサイズが増加するにつれてコストが増大します。

タイムトラベルクエリのデータ保持を構成するを参照してください。

データ型: CalendarInterval

デフォルト: interval 30 days

minReaderVersion (Delta Lake 限定)

このテーブルの読み取りに必要なプロトコルリーダーの最低バージョンです。

Databricks では、このプロパティを手動で構成しないことをお勧めします。

Delta Lake 機能の互換性とプロトコルを参照してください。

データ型: Int

デフォルト: 1

minWriterVersion (Delta Lake 限定)

このテーブルへの書き込みに必要な最小プロトコルライターバージョン

Databricks では、このプロパティを手動で構成しないことをお勧めします。

Delta Lake 機能の互換性とプロトコルを参照してください。

データ型: Int

デフォルト: 2

parquet.compression.codec

テーブルの圧縮コーデック。

有効な値: ZSTDSNAPPYGZIPLZ4BROTLI (形式によってサポートが異なります)。

Databricks Runtime 16.0 以降で利用可能なこのプロパティを設定すると、選択したコーデックがテーブルへの今後のすべての書き込みに適用され、クラスターまたはセッションのdefault (spark.sql.parquet.compression.codec) が上書きされます。このテーブルプロパティは、DataFrame .write.option("compression", "...") で上書きできます。このプロパティを設定しても、既存のファイルは書き換えられません。選択したコーデックで既存のデータを再圧縮するには、OPTIMIZE table_name FULL を使用します。Unity Catalog マネージド Delta Lake テーブルの場合、Databricks はテーブル作成時に parquet.compression.codec を明示的に (ZSTD) 書き込むため、個別の Delta default spark.databricks.delta.properties.defaults.parquet.compression.codec は影響しません。新しい外部 Delta Lake テーブルには、spark.databricks.delta.properties.defaults.parquet.compression.codec を使用してください。

データ型: String

デフォルト: ZSTD

parquet.format.version (Delta Lake 限定)

データファイルの書き込み時に使用されるParquetフォーマットのバージョン。これを2.12.0に設定すると、高度なエンコーディング、v2 データページヘッダー、INT64 のタイムスタンプが有効になり、クエリーのパフォーマンスが向上し、ストレージ使用量を削減できる可能性があります。

1.0.02.12.0 が有効な値であり、これらは Apache Parquet フォーマットのリリースに対応しています。

このプロパティは、Delta LakeおよびApache Icebergテーブルに設定できます。一部のOSS IcebergリーダーはParquet v2エンコーディングをサポートしていない場合があります。制限事項を参照してください。

Parquet v2を参照してください。

データ型: String

デフォルト: 1.0.0

randomizeFilePrefixes

true パーティション情報の代わりに、ファイルパスにランダムなプレフィックスを生成する

データ型: Boolean

デフォルト: false

randomPrefixLength

randomizeFilePrefixestrue の場合、ランダムなプレフィックスとして生成される文字数です。

データ型: Int

デフォルト: 2

setTransactionRetentionDuration

新しいスナップショットがトランザクション識別子を保持する最短の期間(例: SetTransaction秒)。新規のスナップショットは、このプロパティで指定された期間以上古いトランザクション識別子を期限切れとして扱い、無視します。SetTransaction 識別子は、書き込みをべき等にする際に使用されます。詳細については、「foreachBatch を用いたべき等なテーブル書き込み」をご覧ください。

データ型: CalendarInterval

デフォルト: (なし)

targetFileSize

ファイルチューニングにおけるターゲットファイルサイズ(バイト単位以上)。たとえば、104857600(バイト)や100mbなどです。

データ ファイル サイズを制御する」を参照してください。

データ型: String

デフォルト: (なし)

tuneFileSizesForRewrites (Delta Lake 限定)

true ファイルサイズを調整して、MERGE のようなファイルを書き換える操作を高速化します。これは、ファイルを頻繁に書き換えるテーブルに役立ちます。このチューニングをオフにするには false します。

設定されていない場合、Databricksはテーブルが頻繁な書き換えを伴うかどうかを自動検出し、MERGEOPTIMIZE のような書き換え操作に合わせてファイルサイズをチューニングします。

データ ファイル サイズを制御する」を参照してください。

データ型: Boolean

デフォルト: (なし)

universalFormat.enabledFormats (Delta Lake 限定)

外部クライアントが Delta Lake テーブルを読み取れるようにメタデータを生成する形式のカンマ区切りリスト (UniForm)。Iceberg メタデータを生成するには iceberg に設定します。iceberg を設定するには enableIcebergCompatV2 = true が必要です。

IcebergクライアントでDelta Lakeテーブルを読み取るを参照してください。

データ型: String

デフォルト: (なし)

属性

説明

appendOnly

true テーブルを追記専用とする追加のみ可能なテーブルでは、既存のレコードの削除や既存の値の更新はできません。

データ型: Boolean

デフォルト: false

autoOptimize.autoCompact

テーブルパーティション内の小さなファイルを自動的に結合して、小さなファイルの問題を減らします。auto (推奨)、truelegacy、またはfalseを受け入れます。

「自動圧縮」を参照してください。

データ型: String

デフォルト: (なし)

autoOptimize.optimizeWrite

true 書き込み中に、このテーブルのファイルのレイアウトを自動的に最適化します。

最適化された書き込みを参照してください。

データ型: Boolean

デフォルト: (なし)

checkpoint.writeStatsAsJson

true stats 列のファイル統計をJSON形式でチェックポイントに書き込みます。

データ型: Boolean

デフォルト: false

checkpoint.writeStatsAsStruct

true stats_parsed 列の構造体形式でチェックポイントにファイル統計を書き込み、パーティション値を partitionValues_parsed の構造体形式として書き込みます。

データ型: Boolean

デフォルト: true

checkpointPolicy

classic 従来のチェックポイント用。v2向けのv2チェックポイント。

Checkpoint V2およびリキッドクラスタリングを使用したテーブルの互換性を参照してください。

データ型: String

デフォルト: classic

columnMapping.mode

テーブルの列と、異なる名前が使用されている対応するParquet列のカラムマッピングを有効にします。有効な値はnonenameidです。

Delta Lake 列マッピングを使用した列の名前変更と削除を参照してください。

注:columnMapping.modeを有効にすると、自動的にrandomizeFilePrefixesが有効になります。

データ型: DeltaColumnMappingMode

デフォルト: none

compatibility.symlinkFormatManifest.enabled (Delta Lake 限定)

true Delta Lakeテーブルを設定し、テーブルに対するすべての書き込み操作がマニフェストを自動的に更新するようにします。

データ型: Boolean

デフォルト: false

dataSkippingNumIndexedCols

データスキップのために統計を収集する列数-1という値は、すべての列の統計を収集することを意味します。

データのスキップを参照してください。

データ型: Int

デフォルト: 32

dataSkippingStatsColumns

データスキップ機能の強化を目的として統計を収集する列名のコンマ区切りリスト。このプロパティはdataSkippingNumIndexedColsよりも優先されます。

データのスキップを参照してください。

データ型: String

デフォルト: (なし)

deletedFileRetentionDuration

論理的に削除されたデータファイルを物理的に削除する前に保持する最短期間。これにより、コンパクションまたはパーティションの上書き後に、古いリーダーにおける障害が防止されます。

Databricks は、7日間以上のデフォルト値をお勧めします。保持期間が短すぎる場合、長時間実行ジョブのコミットされていないファイルが、ジョブが完了する前に削除される可能性があります。

タイムトラベルクエリのデータ保持を構成するを参照してください。

データ型: CalendarInterval

デフォルト: interval 1 week

enableChangeDataFeed

true チェンジデータフィードを有効にする。

チェンジデータフィードの使用を参照してください。

データ型: Boolean

デフォルト: false

enableDeletionVectors

true 更新のための削除ベクトルおよび予測 I/O を有効にする

Databricks の削除ベクトルおよび削除ベクトルの有効化を参照してください。

データ型: Boolean

デフォルト: ワークスペースの管理者設定と Databricks Runtime バージョンによって異なります。 削除ベクトルの自動有効化を参照してください。

enableIcebergCompatV2 (Delta Lake 限定)

true Iceberg リーダーと互換性のある形式でデータを書き込む IcebergCompatV2 を有効にするため。Iceberg 読み取りを有効にするには、このプロパティを universalFormat.enabledFormats と一緒に設定します。

IcebergクライアントでDelta Lakeテーブルを読み取るを参照してください。

データ型: Boolean

デフォルト: (なし)

enableRowTracking (Delta Lake 限定)

true 行レベルのリネージのために各行に安定した行 ID と行 commit バージョンを割り当てる、行追跡を有効にするため。Databricks Runtime 14.0 以降で利用可能です。Apache Iceberg v3 テーブルには、行追跡が自動的に含まれます。

Databricks の行追跡を参照してください。

データ型: Boolean

デフォルト: false

enableTypeWidening

true 型拡張を有効にする

型の拡張を参照してください。

データ型: Boolean

デフォルト: false

format-version (Apache Iceberg マネージドテーブル限定)

Iceberg テーブル形式のバージョンです。

Databricks では、このプロパティを手動で構成しないことをお勧めします。

Apache Iceberg v3 機能を使用を参照してください。

データ型: Int

デフォルト: 2

isolationLevel

並列トランザクションによる変更から、トランザクションが隔離される度合い

有効な値はSerializableWriteSerializableです。

分離レベル (WriteSerializable と Serializable) を参照してください。

データ型: String

デフォルト: WriteSerializable

logRetentionDuration

テーブルの履歴を保持する期間。VACUUM オペレーションはこの保持しきい値を上書きします。

Databricks は、チェックポイントが書き込まれるたびに、保持期間よりも古いログエントリを自動的にクリーンアップします。このプロパティを大きな値に設定すると、多くのログエントリが保持されます。ログに対する操作が定数時間であるため、これはパフォーマンスに影響しません。履歴操作は並列で実行されますが、ログサイズが増加するにつれてコストが増大します。

タイムトラベルクエリのデータ保持を構成するを参照してください。

データ型: CalendarInterval

デフォルト: interval 30 days

minReaderVersion (Delta Lake 限定)

このテーブルの読み取りに必要なプロトコルリーダーの最低バージョンです。

Databricks では、このプロパティを手動で構成しないことをお勧めします。

Delta Lake 機能の互換性とプロトコルを参照してください。

データ型: Int

デフォルト: 1

minWriterVersion (Delta Lake 限定)

このテーブルへの書き込みに必要な最小プロトコルライターバージョン

Databricks では、このプロパティを手動で構成しないことをお勧めします。

Delta Lake 機能の互換性とプロトコルを参照してください。

データ型: Int

デフォルト: 2

parquet.compression.codec

テーブルの圧縮コーデック。

有効な値: ZSTDSNAPPYGZIPLZ4BROTLI (形式によってサポートが異なります)。

Databricks Runtime 16.0 以降で利用可能なこのプロパティを設定すると、選択したコーデックがテーブルへの今後のすべての書き込みに適用され、クラスターまたはセッションのdefault (spark.sql.parquet.compression.codec) が上書きされます。このテーブルプロパティは、DataFrame .write.option("compression", "...") で上書きできます。このプロパティを設定しても、既存のファイルは書き換えられません。選択したコーデックで既存のデータを再圧縮するには、OPTIMIZE table_name FULL を使用します。Unity Catalog マネージド Delta Lake テーブルの場合、Databricks はテーブル作成時に parquet.compression.codec を明示的に (ZSTD) 書き込むため、個別の Delta default spark.databricks.delta.properties.defaults.parquet.compression.codec は影響しません。新しい外部 Delta Lake テーブルには、spark.databricks.delta.properties.defaults.parquet.compression.codec を使用してください。

データ型: String

デフォルト: ZSTD

parquet.format.version (Delta Lake 限定)

データファイルの書き込み時に使用されるParquetフォーマットのバージョン。これを2.12.0に設定すると、高度なエンコーディング、v2 データページヘッダー、INT64 のタイムスタンプが有効になり、クエリーのパフォーマンスが向上し、ストレージ使用量を削減できる可能性があります。

1.0.02.12.0 が有効な値であり、これらは Apache Parquet フォーマットのリリースに対応しています。

このプロパティは、Delta LakeおよびApache Icebergテーブルに設定できます。一部のOSS IcebergリーダーはParquet v2エンコーディングをサポートしていない場合があります。制限事項を参照してください。

Parquet v2を参照してください。

データ型: String

デフォルト: 1.0.0

randomizeFilePrefixes

true パーティション情報の代わりに、ファイルパスにランダムなプレフィックスを生成する

データ型: Boolean

デフォルト: false

randomPrefixLength

randomizeFilePrefixestrue の場合、ランダムなプレフィックスとして生成される文字数です。

データ型: Int

デフォルト: 2

setTransactionRetentionDuration

新しいスナップショットがトランザクション識別子を保持する最短の期間(例: SetTransaction秒)。新規のスナップショットは、このプロパティで指定された期間以上古いトランザクション識別子を期限切れとして扱い、無視します。SetTransaction 識別子は、書き込みをべき等にする際に使用されます。詳細については、「foreachBatch を用いたべき等なテーブル書き込み」をご覧ください。

データ型: CalendarInterval

デフォルト: (なし)

targetFileSize

ファイルチューニングにおけるターゲットファイルサイズ(バイト単位以上)。たとえば、104857600(バイト)や100mbなどです。

データ ファイル サイズを制御する」を参照してください。

データ型: String

デフォルト: (なし)

tuneFileSizesForRewrites (Delta Lake 限定)

true ファイルサイズを調整して、MERGE のようなファイルを書き換える操作を高速化します。これは、ファイルを頻繁に書き換えるテーブルに役立ちます。このチューニングをオフにするには false します。

設定されていない場合、Databricksはテーブルが頻繁な書き換えを伴うかどうかを自動検出し、MERGEOPTIMIZE のような書き換え操作に合わせてファイルサイズをチューニングします。

データ ファイル サイズを制御する」を参照してください。

データ型: Boolean

デフォルト: (なし)

universalFormat.enabledFormats (Delta Lake 限定)

外部クライアントが Delta Lake テーブルを読み取れるようにメタデータを生成する形式のカンマ区切りリスト (UniForm)。Iceberg メタデータを生成するには iceberg に設定します。iceberg を設定するには enableIcebergCompatV2 = true が必要です。

IcebergクライアントでDelta Lakeテーブルを読み取るを参照してください。

データ型: String

デフォルト: (なし)