Delen via


Kolommen hernoemen en verwijderen met Delta Lake-kolomtoewijzing

Azure Databricks ondersteunt kolomtoewijzing voor Delta Lake-tabellen, waardoor wijzigingen in alleen metagegevens kolommen kunnen markeren als verwijderd of hernoemd zonder gegevensbestanden opnieuw te schrijven. Hiermee kunnen gebruikers ook kolommen van Delta-tabellen een naam geven met tekens die niet zijn toegestaan door Parquet, zoals spaties, zodat gebruikers CSV- of JSON-gegevens rechtstreeks in Delta kunnen opnemen zonder dat ze de naam van kolommen hoeven te wijzigen vanwege eerdere tekenbeperkingen.

Belangrijk

Tabellen waarvoor kolomtoewijzing is ingeschakeld, kunnen alleen worden gelezen in Databricks Runtime 10.4 LTS en hoger.

Gepartitioneerde tabellen waarvoor kolomtoewijzing is ingeschakeld, gebruiken willekeurige voorvoegsels in plaats van kolomnamen voor partitiemappen. Zie Delen Delta Lake en Parquet partitiestrategieën?.

Het inschakelen van kolomtoewijzing voor tabellen kan verstoringen veroorzaken in de downstream-bewerkingen die afhankelijk zijn van de Delta-wijzigingsgegevensfeed. Zie Beperkingen van gegevensfeeds aanpassen voor tabellen met ingeschakelde kolomtoewijzing.

Als u kolomtoewijzing inschakelt voor tabellen, kan dit het streamen van leesbewerkingen vanuit de Delta-tabel als bron verstoren, ook in DLT. Zie Streaming met kolomtoewijzing en schemawijzigingen.

Kolomtoewijzing inschakelen

De volgende Delta-protocollen zijn vereist voor kolomtoewijzing.

  • Lezer versie 2 of hoger.
  • Writer versie 5 of hoger.

Voor een Delta-tabel met de vereiste protocolversies kunt u kolomtoewijzing inschakelen door delta.columnMapping.mode in te stellen op name.

U kunt de volgende opdracht gebruiken om kolomtoewijzing in te schakelen:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.columnMapping.mode' = 'name'
  )

Zie Schakel kolomtoewijzing uit.

De naam van een kolom wijzigen

Notitie

Beschikbaar in Databricks Runtime 10.4 LTS en hoger.

Wanneer kolomtoewijzing is ingeschakeld voor een Delta-tabel, kunt u de naam van een kolom wijzigen:

ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name

Zie Delta Lake-tabelschema bijwerkenvoor meer voorbeelden.

Kolommen verwijderen

Notitie

Beschikbaar in Databricks Runtime 11.3 LTS en hoger.

Wanneer kolomtoewijzing is ingeschakeld voor een Delta-tabel, kunt u een of meer kolommen verwijderen:

ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)

Zie Delta Lake-tabelschema bijwerkenvoor meer informatie.

Ondersteunde tekens in kolomnamen

Wanneer kolomtoewijzing is ingeschakeld voor een Delta-tabel, kunt u spaties en een van deze tekens opnemen in de kolomnamen van de tabel: ,;{}()\n\t=.

Streamen met kolomtoewijzing en schemaveranderingen

Belangrijk

Deze functie bevindt zich in openbare preview in Databricks Runtime 13.3 LTS en hoger.

U kunt een locatie voor schematracking opgeven om streaming vanuit Delta-tabellen in te schakelen waarvoor kolomtoewijzing is ingeschakeld. Hiermee wordt een probleem opgelost waarbij niet-additieve schemawijzigingen kunnen leiden tot verbroken stromen.

Elke streaming-lezing van een gegevensbron moet zijn eigen schemaTrackingLocation hebben. De opgegeven schemaTrackingLocation moet zijn opgenomen in de map die is gespecificeerd voor de checkpointLocation van de doeltabel voor streaming schrijven.

Notitie

Voor streamingworkloads die gegevens uit meerdere Delta-brontabellen combineren, moet u unieke mappen opgeven in de checkpointLocation voor elke brontabel.

De optie schemaTrackingLocation wordt gebruikt om het pad voor schematracering op te geven, zoals wordt weergegeven in het volgende codevoorbeeld:

checkpoint_path = "/path/to/checkpointLocation"

(spark.readStream
  .option("schemaTrackingLocation", checkpoint_path)
  .table("delta_source_table")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .toTable("output_table")
)

Uitschakelen van kolomtoewijzing

In Databricks Runtime 15.3 en hoger kunt u de opdracht DROP FEATURE gebruiken om kolomtoewijzing uit een tabel te verwijderen en het tabelprotocol te downgraden.

Zie Delta-tabelfuncties verwijderen.