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

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

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>

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

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

テーブルプロパティ

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

属性

説明

autoOptimize.optimizeWrite

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

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

データ型: Boolean

デフォルト: (なし)

dataSkippingNumIndexedCols

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

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

データ型: Int

デフォルト: 32

dataSkippingStatsColumns

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

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

データ型: String

デフォルト: (なし)

deletedFileRetentionDuration

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

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

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

データ型: CalendarInterval

デフォルト: interval 1 week

enableDeletionVectors

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

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

データ型: Boolean

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

logRetentionDuration

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

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

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

データ型: CalendarInterval

デフォルト: interval 30 days

minReaderVersion (Delta Lake 限定)

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

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

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

データ型: Int

デフォルト: 1

minWriterVersion (Delta Lake 限定)

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

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

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

データ型: Int

デフォルト: 2

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

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

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

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

データ型: Int

デフォルト: 2

randomizeFilePrefixes

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

データ型: Boolean

デフォルト: false

targetFileSize

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

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

データ型: String

デフォルト: (なし)

parquet.compression.codec

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

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

このプロパティにより、テーブルへの今後のすべての書き込みは選択されたコーデックを使用し、クラスターまたはセッションのデフォルト (spark.sql.parquet.compression.codec) が上書きされます。ただし、一度限りの DataFrame .write.option("compression", "...") 設定が引き続き優先されます。Databricks Runtime 16.0 以降で利用可能です。既存のファイルは自動的には書き換えられません。選択した形式で既存のデータを再圧縮するには、OPTIMIZE table_name FULL を使用してください。

データ型: String

デフォルト: ZSTD

parquet.format.version (Delta Lake 限定)

データファイルを書き込むときに使用される Parquet 形式のバージョン。2.12.0 を指定すると、Databricks Runtime がより高度な Parquet エンコーディングとデータページ ヘッダーを使用するようになります。

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

このプロパティはDelta Lakeテーブルにのみ適用されます。Iceberg、UniFormテーブル、またはDatabricks Runtime以外のエンジンからアクセスされるテーブルには、このプロパティを設定しないでください。

データ型: String

デフォルト: 1.0.0

appendOnly

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

データ型: Boolean

デフォルト: false

autoOptimize.autoCompact

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

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

データ型: String

デフォルト: (なし)

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

enableChangeDataFeed

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

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

データ型: Boolean

デフォルト: false

enableTypeWidening

true 型拡張を有効にする

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

データ型: Boolean

デフォルト: false

isolationLevel

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

有効な値はSerializableWriteSerializableです。

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

データ型: String

デフォルト: WriteSerializable

randomPrefixLength

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

データ型: Int

デフォルト: 2

setTransactionRetentionDuration

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

データ型: CalendarInterval

デフォルト: (なし)