Définir les propriétés de table Delta
S'applique à : Connecteurs SaaS
Connecteurs de base de données
Connecteurs basés sur la query
Vous pouvez définir les propriétés de table Delta Lake sur les tables de streaming de destination créées par un pipeline d’ingestion géré. Comme les tables de destination sont des tables de streaming gérées par le pipeline, vous définissez les propriétés de table via le ingestion_definition du pipeline plutôt qu’en exécutant ALTER TABLE ... SET TBLPROPERTIES directement. La spécification de table_properties dans la spécification du pipeline a le même effet que la commande ALTER TABLE ... SET TBLPROPERTIES.
Vous pouvez définir les propriétés de table à deux niveaux :
Niveau | Comportement |
|---|---|
Pipeline | Définissez |
Table ou schéma | Définissez |
Avant d’activer une propriété de table, vérifiez les exigences de version de lecture et d’écriture pour cette fonctionnalité. Pour connaître les exigences spécifiques aux propriétés, consultez la référence des propriétés de table et la documentation de la fonctionnalité que vous activez, telle que l’élargissement de type.
Définir les propriétés de table à l’aide de l’API
Vous pouvez définir les propriétés de table lors de la création ou de la modification de pipelines d'ingestion gérés à l'aide de Declarative Automation Bundles, de notebooks ou de la CLI Databricks.
L'exemple suivant active l'élargissement de type au niveau du pipeline, puis le remplace par false pour la table de destination users_1. La table calendar_test hérite du paramètre au niveau du pipeline.
- Declarative Automation Bundles
- Databricks notebook
- Databricks CLI
resources:
pipelines:
pipeline_cdc:
name: <pipeline-name>
catalog: <destination-catalog>
schema: <destination-schema>
ingestion_definition:
ingestion_gateway_id: <gateway-pipeline-id>
table_configuration:
table_properties:
delta.enableTypeWidening: 'true'
delta.enableDeletionVectors: 'true'
objects:
- table:
source_schema: <source-schema>
source_table: users_1
destination_catalog: <destination-catalog>
destination_schema: <destination-schema>
table_configuration:
table_properties:
delta.enableTypeWidening: 'false'
- table:
source_schema: <source-schema>
source_table: calendar_test
destination_catalog: <destination-catalog>
destination_schema: <destination-schema>
pipeline_spec = """
{
"ingestion_definition": {
"ingestion_gateway_id": "<gateway-pipeline-id>",
"table_configuration": {
"table_properties": {
"delta.enableTypeWidening": "true",
"delta.enableDeletionVectors": "true"
}
},
"objects": [
{
"table": {
"source_schema": "<source-schema>",
"source_table": "users_1",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>",
"table_configuration": {
"table_properties": {
"delta.enableTypeWidening": "false"
}
}
}
},
{
"table": {
"source_schema": "<source-schema>",
"source_table": "calendar_test",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>"
}
}
]
}
}
"""
{
"ingestion_definition": {
"ingestion_gateway_id": "<gateway-pipeline-id>",
"table_configuration": {
"table_properties": {
"delta.enableTypeWidening": "true",
"delta.enableDeletionVectors": "true"
}
},
"objects": [
{
"table": {
"source_schema": "<source-schema>",
"source_table": "users_1",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>",
"table_configuration": {
"table_properties": {
"delta.enableTypeWidening": "false"
}
}
}
},
{
"table": {
"source_schema": "<source-schema>",
"source_table": "calendar_test",
"destination_catalog": "<destination-catalog>",
"destination_schema": "<destination-schema>"
}
}
]
}
}
Vous pouvez spécifier plusieurs propriétés de table dans un seul bloc table_properties.
Héritage et dérogations
Les propriétés de table suivent un modèle d’héritage, où les paramètres appliqués à une table ou un schéma individuel prévalent sur les valeurs default au niveau du pipeline.
- Les propriétés de table définies au niveau du pipeline sont héritées par toutes les tables et tous les schémas du pipeline.
- Un
table_configurationdéfini au niveau de la table ou du schéma remplace la configuration au niveau du pipeline. Lorsque vous effectuez une dérogation au niveau de la table ou du schéma, les autres configurations de table au niveau du pipeline ne sont pas héritées. Pour conserver une configuration au niveau du pipeline, répétez-la dans la dérogation.
Limitations
Les limitations suivantes s'appliquent lors de la définition des propriétés de table sur les pipelines d'ingestion gérés.
- La définition des propriétés de table pour les pipelines d’ingestion gérés n’est prise en charge que pour les connecteurs de base de données qui utilisent la capture de données modifiées (CDC). Les connecteurs SaaS et les connecteurs basés sur des query ne sont pas pris en charge.
- La suppression d'une propriété de table de la spécification du pipeline ne rétablit pas automatiquement la fonctionnalité de table sous-jacente. Par exemple, si vous activez
delta.enableTypeWideninget que vous découvrez plus tard que votre version de Databricks Runtime de lecture ne prend pas en charge l'élargissement de type, la suppression de la propriété de la spécification n'annule pas la modification. Dans ce cas, vous devez effectuer un refresh complet des tables concernées. Avant de modifier une propriété de table, vérifiez si l'annulation de la propriété résout le problème ou si un refresh complet est nécessaire. Voir refresh complètement les tables cibles.