Delta テーブル プロパティのリファレンス
Delta Lake では、delta.
で始まる差分テーブルのプロパティが予約されます。 これらのプロパティには特定の意味があり、これらのプロパティが設定されている場合の動作に影響を与える可能性があります。
Note
テーブル のプロパティを設定または更新するすべての操作は、他の同時書き込み操作と競合し、失敗します。 Databricks では、テーブル プロパティの修正は、そのテーブルで同時書き込み操作がないときにのみ行うことをお勧めします。
テーブルのプロパティと SparkSession プロパティはどのように連携するか
Delta テーブルのプロパティは、テーブルごとに設定されます。 テーブルにプロパティが設定されている場合、これは既定で従う設定です。
一部のテーブル プロパティには、SparkSession 構成が関連付けられており、それはテーブル プロパティよりも常に優先されます。 たとえば、spark.databricks.delta.autoCompact.enabled
と spark.databricks.delta.optimizeWrite.enabled
の構成などがあります。これにより、テーブル レベルではなく SparkSession レベルでの自動圧縮と最適化された書き込みが有効になります。 Databricks では、ほとんどのワークロードでテーブルスコープの構成を使用することをお勧めします。
Delta テーブル プロパティごとに、SparkSession 構成を使用して新しいテーブルの既定値を設定し、組み込みの既定値をオーバーライドできます。 この設定は、新しいテーブルにのみ影響し、既存のテーブルに設定されているプロパティはオーバーライドまたは置き換えられません。 次の表に示すように、SparkSession で使用されるプレフィックスは、テーブル プロパティで使用される構成とは異なります。
Delta Lake 構成 | SparkSession 構成 |
---|---|
delta.<conf> |
spark.databricks.delta.properties.defaults.<conf> |
たとえば、セッションで作成されるすべての新しい Delta Lake テーブルの delta.appendOnly = true
プロパティを設定するには、次のように設定します。
SET spark.databricks.delta.properties.defaults.appendOnly = true
既存のテーブルのテーブル プロパティを変更するには、SET TBLPROPERTIES を使用します。
Delta テーブル プロパティ
使用可能な Delta テーブルのプロパティは次のとおりです。
プロパティ |
---|
delta.appendOnly この Delta テーブルを追加専用にする場合は true 。 追加専用の場合、既存のレコードを削除できず、既存の値を更新できません。「Delta テーブル プロパティのリファレンス」を参照してください。 データ型: Boolean 既定値: false |
delta.autoOptimize.autoCompact Delta Lake でこの Delta テーブルのファイルのレイアウトが自動的に最適化されるようにする場合は auto 。「Delta Lake on Azure Databricks の自動圧縮」を参照してください。 データ型: Boolean 既定値: (なし) |
delta.autoOptimize.optimizeWrite Delta Lake で書き込み時この Delta テーブルのファイルのレイアウトが自動的に最適化されるようにする場合は true 。「Delta Lake on Azure Databricks の最適化された書き込み」を参照してください。 データ型: Boolean 既定値: (なし) |
delta.checkpoint.writeStatsAsJson Delta Lake でチェックポイント内に stats 列に関するファイル統計を JSON 形式で書き込む場合は true 。「チェックポイントで列レベルの統計を管理する」を参照してください。 データ型: Boolean 既定値: true |
delta.checkpoint.writeStatsAsStruct Delta Lake で、チェックポイントに stats_parsed 列に関するファイル統計を構造体形式で書き込み、partitionValues_parsed に関するパーティション値を構造体として書き込む場合はtrue 。「チェックポイントで列レベルの統計を管理する」を参照してください。 データ型: Boolean 既定値: (なし) |
delta.checkpointPolicy 従来の Delta Lake チェックポイントの classic 。 v2 チェックポイントの v2 。「リキッド クラスタリングありのテーブルの互換性」を参照してください。 データ型: String 既定値: classic |
delta.columnMapping.mode Delta テーブルの列と、名前が異なっている対応する Parquet 列に対して、列マッピングを有効にするかどうか。 「Delta Lake の列マッピングを使用して列の名前変更と削除を行う」をご覧ください。 注: delta.columnMapping.mode を有効にすると、自動的に有効になりますdelta.randomizeFilePrefixes =データ型: DeltaColumnMappingMode 既定値: none |
delta.dataSkippingNumIndexedCols Delta Lake が統計を収集する列数のうちデータ スキップに関するもの。 値 -1 は、すべての列に関する統計を収集することを意味します。「Delta Lake に対するデータのスキップ」を参照してください。 データ型: Int 既定値: 32 |
delta.dataSkippingStatsColumns Delta Lake がデータ スキップ機能を強化するために統計を収集する列名のコンマ区切りのリスト。 このプロパティは delta.dataSkippingNumIndexedCols よりも優先されます。「Delta Lake に対するデータのスキップ」を参照してください。 データ型: String 既定値: (なし) |
delta.deletedFileRetentionDuration Delta Lake が論理的に削除されたデータ ファイルを物理的に削除する前に保持する最短時間。 これは、圧縮後またはパーティションの上書き後に古いリーダーで失敗が発生するのを防ぐためです。 この値は、次のことを保証するのに十分な大きさにする必要があります。 - 複数の同時読み取りまたは書き込みアクセスが Delta テーブルに存在する状態で VACUUM を実行すると、ジョブの最長実行時間よりも長くなります。- テーブルから読み取るストリーミング クエリを実行すると、そのクエリは、この値よりも長くは停止しません。 十分な大きさでないと、引き続き古いファイルを読み取る必要があるため、クエリを再起動できない可能性があります。 「タイム トラベル クエリのデータ保持を構成する」を参照してください。 データ型: CalendarInterval 既定値: interval 1 week |
delta.enableChangeDataFeed データ フィードの変更を有効にするには true 。「データ フィードの変更を有効にする」を参照してください。 データ型: Boolean 既定値: false |
delta.enableDeletionVectors true にすると、更新プログラムの削除ベクトルと予測 I/O が有効化されます。「削除ベクトルとは」を参照してください。 データ型: Boolean 既定値: ワークスペース管理者の設定と Databricks Runtime のバージョンによって異なります。 「削除ベクトルの自動有効化」を参照してください |
delta.isolationLevel 同時実行トランザクションで行われた変更からトランザクションを分離する必要がある度合い。 有効値は Serializable または WriteSerializable です。Azure Databricks での分離レベルと書き込みの競合に関するページを参照してください。 データ型: String 既定値: WriteSerializable |
delta.logRetentionDuration Delta テーブルの履歴を保持する期間。 VACUUM 操作は、この保持しきい値をオーバーライドします。チェックポイントが書き込まれるたびに、Delta Lake によって、保持間隔より古いログ エントリが自動的にクリーンアップされます。 このプロパティを十分な大きさの値に設定すると、多くのログ エントリが保持されます。 これがパフォーマンスに影響しないのは、ログに対する操作が一定の時間であるからです。 履歴に対する操作は並列ですが、ログのサイズが増加するにつれてコストが高くなります。 「タイム トラベル クエリのデータ保持を構成する」を参照してください。 データ型: CalendarInterval 既定値: interval 30 days |
delta.minReaderVersion この Delta テーブルからの読み取りを許可するリーダーに必要な最小プロトコル リーダー バージョン。 Databricks では、このプロパティを手動で構成しないことをお勧めします。 「Azure Databricks で Delta Lake 機能の互換性を管理する方法」を参照してください。 データ型: Int 既定値: 1 |
delta.minWriterVersion この Delta テーブルへの書き込みを許可するライターに必要な最小プロトコル ライター バージョン。 Databricks では、このプロパティを手動で構成しないことをお勧めします。 「Azure Databricks で Delta Lake 機能の互換性を管理する方法」を参照してください。 データ型: Int 既定値: 2 |
delta.randomizeFilePrefixes Delta Lake がパーティション情報の代わりにファイル パスのランダム プレフィックスを生成する場合は true 。データ型: Boolean 既定値: false |
delta.randomPrefixLength delta.randomizeFilePrefixes が true に設定されている場合に、Delta Lake が生成するランダム プレフィックスの文字数。データ型: Int 既定値: 2 |
delta.setTransactionRetentionDuration 新しいスナップショットがトランザクション識別子を保持する最も短い期間 (例: SetTransaction 秒)。 このプロパティで指定された期間以上のトランザクション識別子が新しいスナップショットにあると、スナップショットはこの識別子を期限切れであると見なして無視します。 この SetTransaction 識別子は、書き込みのべき等を行うときに使用されます。 詳細については、「foreachBatch でのべき等テーブルの書き込み」を参照してください。データ型: CalendarInterval 既定値: (なし) |
delta.targetFileSize ファイル チューニングのターゲットのファイル サイズ (バイト以上の単位)。 たとえば、次のように入力します。 104857600 (バイト) または 100mb 。「データ ファイル サイズを制御するように Delta Lake を構成する」を参照してください。 データ型: String 既定値: (なし) |
delta.tuneFileSizesForRewrites Delta テーブルのすべてのデータ レイアウト最適化操作で常に小さいファイル サイズを使用するには true 。小さいファイル サイズに調整しない、つまり自動検出がアクティブにならないようにする場合は false 。「データ ファイル サイズを制御するように Delta Lake を構成する」を参照してください。 データ型: Boolean 既定値: (なし) |