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

表プロパティリファレンス

Delta Lake と Apache Iceberg は、テーブル プロパティを使用してテーブルの動作と機能を制御します。これらのプロパティには特定の意味があり、設定すると動作に影響を与える可能性があります。

注記

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

テーブルのプロパティを変更する

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

DeltaとIceberg形式

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

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

例えば:

  • Delta テーブルで削除ベクトルを有効にするには: delta.enableDeletionVectors
  • Iceberg テーブルで削除ベクトルを有効にするには: iceberg.enableDeletionVectors

テーブルプロパティと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
-- For Delta tables
SET spark.databricks.delta.properties.defaults.appendOnly = true

-- For Iceberg tables
SET spark.databricks.iceberg.properties.defaults.appendOnly = true

表のプロパティ

次のテーブル プロパティは、Delta Lake テーブルと Apache Iceberg テーブルの両方で使用できます。Delta テーブルにはdelta.プレフィックスを使用し、Iceberg テーブルにはiceberg.プレフィックスを使用します。

属性

説明

autoOptimize.optimizeWrite

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

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

データ型: Boolean

デフォルト: (なし)

dataSkippingNumIndexedCols

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

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

データ型: Int

デフォルト: 32

dataSkippingStatsColumns

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

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

データ型: String

デフォルト: (なし)

deletedFileRetentionDuration

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

次の条件を満たすように、この値を十分に大きく設定します。

  • テーブルにアクセスするライナー リーダーまたはライターでVACUUMを実行すると、値がジョブの可能な最長期間を超えます。
  • テーブルから読み取るストリーミング クエリは、この値よりも長く停止しません。そうしないと、古いファイルを読み取る必要があるため、クエリを再開できません。

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

データ型: 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 ) を上書きして、選択したコーデックが使用されるようになります。ただし、1 回限りの DataFrame .write.option("compression", "...")設定が優先されます。Databricks Runtime 16.0 以降で利用できます。既存のファイルは自動的に書き換えられないことに注意してください。選択した形式で既存のデータを再圧縮するには、 OPTIMIZE table_name FULLを使用します。

データ型: String

デフォルト: ZSTD

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

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

データ型: String

デフォルト: classic

columnMapping.mode

異なる名前を使用するテーブル列と対応する Parquet 列の列マッピングを有効にします。

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

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

データ型: DeltaColumnMappingMode

デフォルト: none

compatibility.symlinkFormatManifest.enabled ( Delta Lakeのみ)

true テーブル上のすべての書き込み操作によってマニフェストが自動的に更新されるように Delta テーブルを構成します。

データ型: Boolean

デフォルト: false

enableChangeDataFeed

true をクリックして、チェンジデータフィードを有効にします。

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

データ型: Boolean

デフォルト: false

enableTypeWidening

true をクリックして、タイプの拡大を有効にします。

「タイプ拡幅区間」を参照してください。

データ型: Boolean

デフォルト: false

isolationLevel

トランザクションを並列トランザクションによる変更から分離する必要がある度合い。

有効な値は SerializableWriteSerializableです。

Databricks での分離レベルと書き込みの競合を参照してください。

データ型: String

デフォルト: WriteSerializable

randomPrefixLength

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

データ型: Int

デフォルト: 2

setTransactionRetentionDuration

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

データ型: CalendarInterval

デフォルト: (なし)

tuneFileSizesForRewrites

true テーブル上のすべてのデータ レイアウト最適化操作で常に小さいファイル サイズを使用します。

false ファイルサイズを小さくするための調整を防止し、自動検出を無効にします。

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

データ型: Boolean

デフォルト: (なし)