Impostare le proprietà della tabella Delta

Si applica a: Connettori SaaS icona X rossa Icona di segno di spunta Verde Connettori di databaseIcona X rossa Connettori basati su query

È possibile impostare le proprietà della tabella Delta Lake nelle tabelle di streaming di destinazione create da una pipeline di inserimento gestita. Poiché le tabelle di destinazione sono tabelle di streaming gestite dalla pipeline, è possibile impostare le proprietà della ingestion_definition tabella tramite la pipeline anziché eseguirli ALTER TABLE ... SET TBLPROPERTIES direttamente. table_properties La specifica nella specifica della pipeline ha lo stesso effetto del ALTER TABLE ... SET TBLPROPERTIES comando.

È possibile impostare le proprietà della tabella a due livelli:

livello Behavior
Pipeline Impostare table_properties a livello table_configuration di pipeline per applicare le proprietà a tutte le tabelle e gli schemi nella pipeline.
Tabella o schema Impostare table_properties in table_configuration di una singola tabella o schema per eseguire l'override della configurazione a livello di pipeline per tale oggetto.

Avvertimento

Prima di abilitare una proprietà di tabella, verificare i requisiti di versione del lettore e del writer per tale funzionalità. Per i requisiti specifici della proprietà, vedere Informazioni di riferimento sulle proprietà della tabella e la documentazione per la funzionalità che si sta abilitando, ad esempio l'estensione del tipo.

Impostare le proprietà della tabella usando l'API

È possibile impostare le proprietà della tabella quando si creano o si modificano pipeline di inserimento gestite usando bundle di automazione dichiarativa, notebook o l'interfaccia della riga di comando di Databricks.

Nell'esempio seguente viene attivata l'estensione del tipo a livello di pipeline e quindi ne viene false eseguito l'override per la users_1 tabella di destinazione. La calendar_test tabella eredita l'impostazione a livello di pipeline.

Pacchetti di automazione dichiarativa

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>

Notebook di Databricks

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>"
        }
      }
    ]
  }
}
"""

Interfaccia a riga di comando di Databricks

{
  "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>"
        }
      }
    ]
  }
}

È possibile specificare più proprietà di tabella in un singolo table_properties blocco.

Ereditarietà e override

Le proprietà della tabella seguono un modello di ereditarietà, in cui le impostazioni applicate a una singola tabella o schema hanno la precedenza sulle impostazioni predefinite a livello di pipeline.

  • Le proprietà di tabella impostate a livello di pipeline vengono ereditate da tutte le tabelle e gli schemi nella pipeline.
  • Un table_configuration set a livello di tabella o schema esegue l'override della configurazione a livello di pipeline. Quando si esegue l'override a livello di tabella o schema, le altre configurazioni di tabella a livello di pipeline non vengono ereditate. Per mantenere una configurazione a livello di pipeline, ripeterla nell'override.

Limitations

Le limitazioni seguenti si applicano quando si impostano le proprietà della tabella nelle pipeline di inserimento gestite.

  • L'impostazione delle proprietà della tabella per le pipeline di inserimento gestite è supportata solo per i connettori di database che usano Change Data Capture (CDC). I connettori SaaS e i connettori basati su query non sono supportati.
  • La rimozione di una proprietà di tabella dalla specifica della pipeline non ripristina automaticamente la funzionalità della tabella sottostante. Ad esempio, se si abilita delta.enableTypeWidening e successivamente si scopre che la versione di Databricks Runtime del lettore non supporta l'estensione del tipo, la rimozione della proprietà dalla specifica non annulla la modifica. In tal caso, è necessario eseguire un aggiornamento completo delle tabelle interessate. Prima di modificare una proprietà di tabella, verificare se il ripristino della proprietà risolve il problema o se è necessario un aggiornamento completo. vedere Aggiornare completamente le tabelle di destinazione.

Risorse aggiuntive