Aller au contenu principal

Référence des propriétés de table

Les tables Delta Lake et Apache Iceberg utilisent les propriétés de table pour configurer le comportement et les fonctionnalités, y compris la Layout des données, la taille des fichiers, le saut de données, le niveau d'isolation et le flux de données de modification.

remarque

Toutes les opérations qui définissent ou mettent à jour les propriétés de table entrent en conflit avec d'autres opérations d'écriture simultanées, les faisant échouer. Databricks recommande de modifier une propriété de table uniquement lorsqu'il n'y a pas d'opérations d'écriture simultanées sur la table.

Modifier les propriétés de la table

Pour modifier les propriétés des tables existantes, utilisez SET TBLPROPERTIES.

Préfixes de propriété Delta et Iceberg

Les tables Delta Lake et Apache Iceberg partagent les mêmes noms de propriétés de table, mais nécessitent des préfixes différents :

  • Tables Delta Lake : Utilisez le préfixe delta.
  • Iceberg tables : utilisez le préfixe iceberg..

Par exemple, pour activer les vecteurs de suppression sur une table :

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

Propriétés de table et propriétés de SparkSession

Chaque table a ses propres propriétés qui contrôlent son comportement. Certaines configurations SparkSession remplacent toujours les propriétés de table. Par exemple, autoCompact.enabled et optimizeWrite.enabled permettent le compactage automatique et les écritures optimisées au niveau SparkSession. Databricks recommande d'utiliser des configurations au niveau de la table pour la plupart des charges de travail.

Vous pouvez définir des valeurs default pour les nouvelles tables à l'aide des configurations SparkSession. Ces default s'appliquent uniquement aux nouvelles tables et n'affectent pas les propriétés des tables existantes. Les configurations SparkSession utilisent un préfixe différent des propriétés de table, comme indiqué dans le tableau suivant :

Propriété de table

SparkSession Configuration

delta.<conf>

iceberg.<conf>

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

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

Propriété de table

SparkSession Configuration

delta.<conf>

iceberg.<conf>

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

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

Par exemple, pour définir la propriété appendOnly = true pour toutes les nouvelles tables créées dans une session, définissez les éléments suivants :

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

Propriétés de la table

La plupart des propriétés de table suivantes sont disponibles pour les tables Delta Lake et Apache Iceberg, sauf indication contraire. Utilisez le préfixe delta. pour les tables Delta Lake et le préfixe iceberg. pour les tables Iceberg.

Propriété

Description

autoOptimize.optimizeWrite

true d'optimiser automatiquement le Layout des fichiers de cette table lors des écritures.

Voir les écritures optimisées.

Type de données : Boolean

default: (aucun)

dataSkippingNumIndexedCols

Le nombre de colonnes pour lesquelles collecter des statistiques pour l'ignoration de données. Une valeur de -1 signifie collecter des statistiques pour toutes les colonnes.

Consultez la section Saut de données.

Type de données : Int

default: 32

dataSkippingStatsColumns

Une liste de noms de colonnes séparés par des virgules sur lesquels collecter des statistiques pour améliorer la fonctionnalité de saut de données. Cette propriété prime sur dataSkippingNumIndexedCols.

Consultez la section Saut de données.

Type de données : String

default: (aucun)

deletedFileRetentionDuration

La durée la plus courte pour conserver les fichiers de données supprimés logiquement avant de les supprimer physiquement. Cela évite les échecs chez les lecteurs obsolètes après des compactages ou des écrasements de partition.

Databricks recommande la valeur default de 7 jours ou plus. Si votre période de rétention est trop courte, les Jobs de longue durée peuvent voir leurs fichiers non validés supprimés avant la fin du Job.

Consultez Configurer la conservation des données pour les requêtes time travel.

Type de données : CalendarInterval

default: interval 1 week

enableDeletionVectors

true pour activer les vecteurs de suppression et les E/S prédictives pour les mises à jour.

Consultez les vecteurs de suppression dans Databricks et l'activation des vecteurs de suppression.

Type de données : Boolean

Default: Depends on Workspace admin settings and Databricks Runtime version. Voir activer automatiquement les vecteurs de suppression.

logRetentionDuration

Combien de temps faut-il conserver l'historique d'une table. VACUUM opérations ignorent ce threshold de rétention.

Databricks nettoie automatiquement les entrées de journal plus anciennes que l'intervalle de rétention chaque fois qu'un point de contrôle est écrit. Définir cette propriété sur une valeur élevée conserve de nombreux Logs. Cela n'a pas d'impact sur les performances car les Opérations sur les Logs sont à temps constant. Les Opérations sur l'historique sont parallèles, mais deviennent plus coûteuses à mesure que la taille des Logs augmente.

Consultez Configurer la conservation des données pour les requêtes time travel.

Type de données : CalendarInterval

default: interval 30 days

minReaderVersion (Delta Lake uniquement)

La version minimale requise du lecteur de protocole pour lire cette table.

Databricks recommande de ne pas configurer manuellement cette propriété.

Consultez la compatibilité des fonctionnalités et les protocoles de Delta Lake.

Type de données : Int

default: 1

minWriterVersion (Delta Lake uniquement)

Version minimale du protocole d'écriture requise pour écrire dans cette table.

Databricks recommande de ne pas configurer manuellement cette propriété.

Consultez la compatibilité des fonctionnalités et les protocoles de Delta Lake.

Type de données : Int

default: 2

format-version (tables gérées Apache Iceberg uniquement)

La version du format de table Iceberg.

Databricks recommande de ne pas configurer manuellement cette propriété.

Voir Utiliser les fonctionnalités v3 d'Apache Iceberg.

Type de données : Int

default: 2

randomizeFilePrefixes

true pour générer un préfixe aléatoire pour un chemin de fichier au lieu des informations de partition.

Type de données : Boolean

default: false

targetFileSize

La taille de fichier cible en octets ou en unités supérieures pour l'ajustement des fichiers. Par exemple, 104857600 (octets) ou 100mb.

Voir Contrôler la taille des fichiers de données.

Type de données : String

default: (aucun)

parquet.compression.codec

Le codec de compression pour une table.

Valeurs valides : ZSTD, SNAPPY, GZIP, LZ4, BROTLI (la prise en charge varie selon le format)

Cette propriété garantit que toutes les futures écritures dans la table utilisent le codec choisi, en remplaçant la default du cluster ou de la session (spark.sql.parquet.compression.codec). Cependant, les paramètres ponctuels .write.option("compression", "...") de DataFrame priment toujours. Disponible dans Databricks Runtime 16.0 et versions ultérieures. Notez que les fichiers existants ne sont pas réécrits automatiquement. Pour recompresser les données existantes avec le format choisi, utilisez OPTIMIZE table_name FULL.

Type de données : String

default: ZSTD

parquet.format.version (Delta Lake uniquement)

La version du format Parquet utilisée lors de l'écriture des fichiers de données. La définition de cette option sur 2.12.0 active les encodages avancés, les en-têtes de page de données v2 et les INT64 Timestamp, ce qui peut améliorer les performances des queries et réduire l'encombrement du stockage.

Les valeurs valides sont 1.0.0 et 2.12.0, qui correspondent aux versions du format Apache Parquet.

Cette propriété peut être définie sur les tables Delta Lake et Apache Iceberg. Certains lecteurs Iceberg OSS pourraient ne pas prendre en charge les encodages Parquet v2. Consultez les Limitations.

Voir Parquet v2.

Type de données : String

default: 1.0.0

appendOnly

true pour rendre la table en mode ajout uniquement. Les tables en mode ajout seul ne permettent pas la suppression d'enregistrements existants ni la mise à jour de valeurs existantes.

Type de données : Boolean

default: false

autoOptimize.autoCompact

Combine automatiquement les petits fichiers au sein des partitions de table afin de réduire les problèmes liés aux petits fichiers. Accepte auto (recommandé), true, legacy ou false.

Voir Compactage automatique.

Type de données : String

default: (aucun)

checkpoint.writeStatsAsJson

true écrire les statistiques de fichier dans les points de contrôle au format JSON pour la colonne stats.

Type de données : Boolean

default: false

checkpoint.writeStatsAsStruct

true pour écrire les statistiques de fichiers aux points de contrôle au format de structure pour la colonne stats_parsed et pour écrire les valeurs de partition en tant que structure pour partitionValues_parsed.

Type de données : Boolean

default: true

checkpointPolicy

classic pour les points de contrôle classiques. v2 pour les points de contrôle v2.

Consultez Checkpoint V2 et Compatibilité pour les tables avec clustering liquide.

Type de données : String

default: classic

columnMapping.mode

Active le mappage de colonnes pour les colonnes de table et les colonnes Parquet correspondantes qui utilisent des noms différents. Les valeurs possibles sont none, name et id.

Voir Renommer et supprimer des colonnes avec le mappage de colonnes Delta Lake.

Remarque : l'activation de columnMapping.mode active automatiquement randomizeFilePrefixes.

Type de données : DeltaColumnMappingMode

default: none

compatibility.symlinkFormatManifest.enabled (Delta Lake uniquement)

true afin de configurer la table Delta Lake pour que toutes les opérations d'écriture sur la table mettent à jour automatiquement les manifestes.

Type de données : Boolean

default: false

enableChangeDataFeed

true pour activer le flux de données de modification.

Voir Utiliser le flux de données de modification.

Type de données : Boolean

default: false

enableTypeWidening

true pour activer l'élargissement de type.

Voir l'élargissement de type.

Type de données : Boolean

default: false

isolationLevel

Le degré auquel une transaction doit être isolée des modifications apportées par des transactions simultanées.

Les valeurs valides sont Serializable et WriteSerializable.

Voir les niveaux d'isolement (WriteSerializable et Serializable).

Type de données : String

default: WriteSerializable

randomPrefixLength

Le nombre de caractères à générer pour les préfixes aléatoires lorsque randomizeFilePrefixes est true.

Type de données : Int

default: 2

setTransactionRetentionDuration

La durée la plus courte pendant laquelle les nouveaux instantanés conservent les identificateurs de transaction (par exemple, SetTransactions). Les nouvelles instantanés expirent et ignorent les identifiants de transaction plus anciens ou égaux à la durée spécifiée par cette propriété. L'identifiant SetTransaction est utilisé pour rendre les écritures idempotentes. Veuillez consulter Utiliser foreachBatch pour les écritures de table idempotentes pour plus de détails.

Type de données : CalendarInterval

default: (aucun)

Propriété

Description

autoOptimize.optimizeWrite

true d'optimiser automatiquement le Layout des fichiers de cette table lors des écritures.

Voir les écritures optimisées.

Type de données : Boolean

default: (aucun)

dataSkippingNumIndexedCols

Le nombre de colonnes pour lesquelles collecter des statistiques pour l'ignoration de données. Une valeur de -1 signifie collecter des statistiques pour toutes les colonnes.

Consultez la section Saut de données.

Type de données : Int

default: 32

dataSkippingStatsColumns

Une liste de noms de colonnes séparés par des virgules sur lesquels collecter des statistiques pour améliorer la fonctionnalité de saut de données. Cette propriété prime sur dataSkippingNumIndexedCols.

Consultez la section Saut de données.

Type de données : String

default: (aucun)

deletedFileRetentionDuration

La durée la plus courte pour conserver les fichiers de données supprimés logiquement avant de les supprimer physiquement. Cela évite les échecs chez les lecteurs obsolètes après des compactages ou des écrasements de partition.

Databricks recommande la valeur default de 7 jours ou plus. Si votre période de rétention est trop courte, les Jobs de longue durée peuvent voir leurs fichiers non validés supprimés avant la fin du Job.

Consultez Configurer la conservation des données pour les requêtes time travel.

Type de données : CalendarInterval

default: interval 1 week

enableDeletionVectors

true pour activer les vecteurs de suppression et les E/S prédictives pour les mises à jour.

Consultez les vecteurs de suppression dans Databricks et l'activation des vecteurs de suppression.

Type de données : Boolean

Default: Depends on Workspace admin settings and Databricks Runtime version. Voir activer automatiquement les vecteurs de suppression.

logRetentionDuration

Combien de temps faut-il conserver l'historique d'une table. VACUUM opérations ignorent ce threshold de rétention.

Databricks nettoie automatiquement les entrées de journal plus anciennes que l'intervalle de rétention chaque fois qu'un point de contrôle est écrit. Définir cette propriété sur une valeur élevée conserve de nombreux Logs. Cela n'a pas d'impact sur les performances car les Opérations sur les Logs sont à temps constant. Les Opérations sur l'historique sont parallèles, mais deviennent plus coûteuses à mesure que la taille des Logs augmente.

Consultez Configurer la conservation des données pour les requêtes time travel.

Type de données : CalendarInterval

default: interval 30 days

minReaderVersion (Delta Lake uniquement)

La version minimale requise du lecteur de protocole pour lire cette table.

Databricks recommande de ne pas configurer manuellement cette propriété.

Consultez la compatibilité des fonctionnalités et les protocoles de Delta Lake.

Type de données : Int

default: 1

minWriterVersion (Delta Lake uniquement)

Version minimale du protocole d'écriture requise pour écrire dans cette table.

Databricks recommande de ne pas configurer manuellement cette propriété.

Consultez la compatibilité des fonctionnalités et les protocoles de Delta Lake.

Type de données : Int

default: 2

format-version (tables gérées Apache Iceberg uniquement)

La version du format de table Iceberg.

Databricks recommande de ne pas configurer manuellement cette propriété.

Voir Utiliser les fonctionnalités v3 d'Apache Iceberg.

Type de données : Int

default: 2

randomizeFilePrefixes

true pour générer un préfixe aléatoire pour un chemin de fichier au lieu des informations de partition.

Type de données : Boolean

default: false

targetFileSize

La taille de fichier cible en octets ou en unités supérieures pour l'ajustement des fichiers. Par exemple, 104857600 (octets) ou 100mb.

Voir Contrôler la taille des fichiers de données.

Type de données : String

default: (aucun)

parquet.compression.codec

Le codec de compression pour une table.

Valeurs valides : ZSTD, SNAPPY, GZIP, LZ4, BROTLI (la prise en charge varie selon le format)

Cette propriété garantit que toutes les futures écritures dans la table utilisent le codec choisi, en remplaçant la default du cluster ou de la session (spark.sql.parquet.compression.codec). Cependant, les paramètres ponctuels .write.option("compression", "...") de DataFrame priment toujours. Disponible dans Databricks Runtime 16.0 et versions ultérieures. Notez que les fichiers existants ne sont pas réécrits automatiquement. Pour recompresser les données existantes avec le format choisi, utilisez OPTIMIZE table_name FULL.

Type de données : String

default: ZSTD

parquet.format.version (Delta Lake uniquement)

La version du format Parquet utilisée lors de l'écriture des fichiers de données. La définition de cette option sur 2.12.0 active les encodages avancés, les en-têtes de page de données v2 et les INT64 Timestamp, ce qui peut améliorer les performances des queries et réduire l'encombrement du stockage.

Les valeurs valides sont 1.0.0 et 2.12.0, qui correspondent aux versions du format Apache Parquet.

Cette propriété peut être définie sur les tables Delta Lake et Apache Iceberg. Certains lecteurs Iceberg OSS pourraient ne pas prendre en charge les encodages Parquet v2. Consultez les Limitations.

Voir Parquet v2.

Type de données : String

default: 1.0.0

appendOnly

true pour rendre la table en mode ajout uniquement. Les tables en mode ajout seul ne permettent pas la suppression d'enregistrements existants ni la mise à jour de valeurs existantes.

Type de données : Boolean

default: false

autoOptimize.autoCompact

Combine automatiquement les petits fichiers au sein des partitions de table afin de réduire les problèmes liés aux petits fichiers. Accepte auto (recommandé), true, legacy ou false.

Voir Compactage automatique.

Type de données : String

default: (aucun)

checkpoint.writeStatsAsJson

true écrire les statistiques de fichier dans les points de contrôle au format JSON pour la colonne stats.

Type de données : Boolean

default: false

checkpoint.writeStatsAsStruct

true pour écrire les statistiques de fichiers aux points de contrôle au format de structure pour la colonne stats_parsed et pour écrire les valeurs de partition en tant que structure pour partitionValues_parsed.

Type de données : Boolean

default: true

checkpointPolicy

classic pour les points de contrôle classiques. v2 pour les points de contrôle v2.

Consultez Checkpoint V2 et Compatibilité pour les tables avec clustering liquide.

Type de données : String

default: classic

columnMapping.mode

Active le mappage de colonnes pour les colonnes de table et les colonnes Parquet correspondantes qui utilisent des noms différents. Les valeurs possibles sont none, name et id.

Voir Renommer et supprimer des colonnes avec le mappage de colonnes Delta Lake.

Remarque : l'activation de columnMapping.mode active automatiquement randomizeFilePrefixes.

Type de données : DeltaColumnMappingMode

default: none

compatibility.symlinkFormatManifest.enabled (Delta Lake uniquement)

true afin de configurer la table Delta Lake pour que toutes les opérations d'écriture sur la table mettent à jour automatiquement les manifestes.

Type de données : Boolean

default: false

enableChangeDataFeed

true pour activer le flux de données de modification.

Voir Utiliser le flux de données de modification.

Type de données : Boolean

default: false

enableTypeWidening

true pour activer l'élargissement de type.

Voir l'élargissement de type.

Type de données : Boolean

default: false

isolationLevel

Le degré auquel une transaction doit être isolée des modifications apportées par des transactions simultanées.

Les valeurs valides sont Serializable et WriteSerializable.

Voir les niveaux d'isolement (WriteSerializable et Serializable).

Type de données : String

default: WriteSerializable

randomPrefixLength

Le nombre de caractères à générer pour les préfixes aléatoires lorsque randomizeFilePrefixes est true.

Type de données : Int

default: 2

setTransactionRetentionDuration

La durée la plus courte pendant laquelle les nouveaux instantanés conservent les identificateurs de transaction (par exemple, SetTransactions). Les nouvelles instantanés expirent et ignorent les identifiants de transaction plus anciens ou égaux à la durée spécifiée par cette propriété. L'identifiant SetTransaction est utilisé pour rendre les écritures idempotentes. Veuillez consulter Utiliser foreachBatch pour les écritures de table idempotentes pour plus de détails.

Type de données : CalendarInterval

default: (aucun)