De naam van kolommen wijzigen en neerzetten met delta lake-kolomtoewijzing

Belangrijk

Deze functie is beschikbaar als openbare preview.

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

Door kolomtoewijzing in te schakelen, worden ook willekeurige bestandsvoorvoegsels ingeschakeld, waardoor de mogelijkheid om gegevens te verkennen met behulp van Hive-stijl partitioneren wordt verwijderd. Zie Strategieën voor partitionering van Delta Lake en Parquet?.

Het inschakelen van kolomtoewijzing voor tabellen kan downstreambewerkingen verbreken die afhankelijk zijn van delta-wijzigingenfeed. Zie Beperkingen voor gegevensfeeds wijzigen voor tabellen waarvoor kolomtoewijzing is ingeschakeld.

Als u kolomtoewijzing voor tabellen inschakelt, kan het streamen van leesbewerkingen uit de Delta-tabel als bron worden verbroken, inclusief in Delta Live Tables. Zie Streaming met kolomtoewijzing en schemawijzigingen.

Delta Lake-kolomtoewijzing inschakelen

Belangrijk

Als u kolomtoewijzing inschakelt voor een tabel, wordt de deltatabelversie bijgewerkt. Deze protocolupgrade kan niet ongedaan worden uitgevoerd. Tabellen waarvoor kolomtoewijzing is ingeschakeld, kunnen alleen worden gelezen in Databricks Runtime 10.4 LTS en hoger.

Voor kolomtoewijzing zijn de volgende Delta-protocollen vereist:

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

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

U kunt de volgende opdracht gebruiken om de tabelversie bij te werken en kolomtoewijzing in te schakelen:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.minReaderVersion' = '2',
    'delta.minWriterVersion' = '5',
    'delta.columnMapping.mode' = 'name'
  )

Notitie

U kunt kolomtoewijzing niet uitschakelen nadat u deze hebt ingeschakeld. Als u probeert in te stellen 'delta.columnMapping.mode' = 'none', krijgt u een foutmelding.

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 bijwerken voor 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 bijwerken voor 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 schemawijzigingen

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 die wordt gelezen op basis van een gegevensbron, moet een eigen schemaTrackingLocation opgegeven gegevensbron hebben. De opgegeven schemaTrackingLocation moet zich in de map bevinden die is opgegeven voor de checkpointLocation doeltabel voor streaming-schrijfbewerkingen.

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")
)