Definir propriedades da tabela Delta
Aplica-se a : Conectores SaaS
Conectores de banco de dados
Conectores baseados em query
Você pode definir propriedades de tabela do Delta Lake nas tabelas de transmissão de destino que um pipeline de ingestão gerenciado cria. Como as tabelas de destino são tabelas de transmissão gerenciadas pelo pipeline, você define as propriedades da tabela por meio do ingestion_definition do pipeline, em vez de executar o ALTER TABLE ... SET TBLPROPERTIES diretamente. Especificar table_properties na especificação do pipeline tem o mesmo efeito que o comando ALTER TABLE ... SET TBLPROPERTIES.
Você pode definir as propriedades da tabela em dois níveis:
Nível | Comportamento |
|---|---|
Pipeline | Defina |
Tabela ou esquema | Defina |
Antes de ativar uma propriedade de tabela, verifique os requisitos de versão do leitor e do gravador para esse recurso. Para requisitos específicos de propriedade, consulte Referência de propriedades da tabela e a documentação do recurso que você está habilitando, como Type widening.
Definir propriedades da tabela usando a API
Você pode definir propriedades de tabela ao criar ou editar pipelines de ingestão gerenciados usando Pacotes de Automação Declarativa, notebooks ou a CLI do Databricks.
O exemplo a seguir ativa a ampliação de tipo no nível do pipeline e, em seguida, substitui-a por false para a tabela de destino users_1. A tabela calendar_test herda a configuração de nível de 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>"
}
}
]
}
}
Você pode especificar várias propriedades de tabela em um único bloco table_properties.
Herança e substituições
As propriedades da tabela seguem um modelo de herança, onde as configurações aplicadas a uma tabela ou esquema individual têm precedência sobre os default de nível de pipeline.
- As propriedades da tabela definidas no nível do pipeline são herdadas por todas as tabelas e esquemas no pipeline.
- Uma
table_configurationdefinida no nível da tabela ou do esquema substitui a configuração em nível de pipeline. Ao substituir no nível da tabela ou do esquema, outras configurações de tabela em nível de pipeline não são herdadas. Para manter uma configuração em nível de pipeline, repita-a na substituição.
Limitações
As seguintes limitações se aplicam ao definir propriedades de tabela em pipelines de ingestão gerenciados.
- A definição de propriedades de tabela para pipelines de ingestão gerenciados só é suportada para conectores de banco de dados que usam captura de dados de alterações (CDC). Conectores SaaS e conectores baseados em query não são suportados.
- Remover uma propriedade de tabela da especificação do pipeline não reverte automaticamente o recurso de tabela subjacente. Por exemplo, se você ativar
delta.enableTypeWideninge posteriormente descobrir que sua versão do Databricks Runtime de leitura não oferece suporte à expansão de tipo, remover a propriedade da especificação não desfaz a alteração. Nesse caso, você deve realizar uma refresh completa das tabelas afetadas. Antes de alterar uma propriedade de tabela, confirme se reverter a propriedade resolve o problema ou se um refresh completo é necessário. Consulte refresh das tabelas de destino.