Delen via


Type breder maken

Belangrijk

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

Met tabellen waarvoor typeverbreiding is ingeschakeld, kunt u kolomgegevenstypen wijzigen in een breder type zonder onderliggende gegevensbestanden opnieuw te schrijven. U kunt kolomtypen handmatig wijzigen of schemaontwikkeling gebruiken om kolomtypen te ontwikkelen.

Voor type widening is Delta Lake vereist. Alle beheerde tabellen van Unity Catalog maken standaard gebruik van Delta Lake.

Ondersteunde typewijzigingen

U kunt typen breder maken op basis van de volgende regels:

Brontype Ondersteunde bredere typen
byte shortlong, int, decimaldouble
short int, , , longdecimaldouble
int long, , decimaldouble
long decimal
float double
decimal decimal met meer precisie en schaal
date timestampNTZ

Als u onbedoelde promotie van gehele getallen tot decimalen wilt voorkomen, moet u handmatig typewijzigingen doorvoeren vanbyte, shortof intnaar decimal of long double.

Notitie

Wanneer u een numeriek type decimalwijzigt in, moet de totale precisie gelijk zijn aan of groter zijn dan de beginprecisie. Als u ook de schaal verhoogt, moet de totale precisie met een corresponderend bedrag toenemen.

Het minimumdoel voor byte, shorten int typen is decimal(10,0). Het minimumdoel voor long is decimal(20,0).

Als u twee decimalen wilt toevoegen aan een veld met decimal(10,1), is decimal(12,3)het minimumdoel.

Typewijzigingen worden ondersteund voor kolommen en velden op het hoogste niveau die zijn genest in structs, kaarten en matrices.

Typebreiding inschakelen

U kunt het type breder maken voor een bestaande tabel inschakelen door de delta.enableTypeWidening tabeleigenschap in te stellen op true:

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'true')

U kunt ook typebreiding inschakelen tijdens het maken van een tabel:

  CREATE TABLE T(c1 INT) TBLPROPERTIES('delta.enableTypeWidening' = 'true')

Belangrijk

Wanneer u typebreiding inschakelt, wordt de tabelfunctie typeWidening-previewingesteld, waarmee de lezer- en schrijfprotocollen worden bijgewerkt. U moet Databricks Runtime 15.2 of hoger gebruiken om te kunnen communiceren met tabellen waarvoor type widening is ingeschakeld. Als externe clients ook met de tabel werken, controleert u of deze tabelfunctie wordt ondersteund. Zie Hoe beheert Azure Databricks de compatibiliteit van Delta Lake-functies?

Handmatig een typewijziging toepassen

Gebruik de ALTER COLUMN opdracht om typen handmatig te wijzigen:

ALTER TABLE <table_name> ALTER COLUMN <col_name> TYPE <new_type>

Met deze bewerking wordt het tabelschema bijgewerkt zonder de onderliggende gegevensbestanden opnieuw te schrijven.

Widen-typen met automatische schemaontwikkeling

Schemaontwikkeling werkt met type widening om gegevenstypen in doeltabellen bij te werken zodat deze overeenkomen met het type binnenkomende gegevens.

Notitie

Zonder dat type widening is ingeschakeld, probeert schemaontwikkeling altijd veilig gegevens te downcasten om overeen te komen met kolomtypen in de doeltabel. Als u gegevenstypen niet automatisch wilt breder maken in uw doeltabellen, schakelt u typebreedheid uit voordat u workloads uitvoert waarvoor schemaontwikkeling is ingeschakeld.

Als u schemaontwikkeling wilt gebruiken om het gegevenstype van een kolom breder te maken, moet u aan de volgende voorwaarden voldoen:

  • De opdracht gebruikt INSERT of MERGE INTO.
  • De opdracht wordt uitgevoerd met automatische schemaontwikkeling ingeschakeld.
  • De doeltabel heeft type widening ingeschakeld.
  • Het bronkolomtype is breder dan het doelkolomtype.
  • Typebreiding ondersteunt de wijziging van het type.

Type komt niet overeen die niet aan al deze voorwaarden voldoen, voldoen aan normale schema-afdwingingsregels. Zie Schema afdwingen.

De functie voor het uitbreiden van de tabeltype uitschakelen

U kunt onbedoelde typebreiding voor ingeschakelde tabellen voorkomen door de eigenschap in te stellen op false:

  ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'false')

Met deze instelling voorkomt u toekomstige wijzigingen in de tabel, maar verwijdert u de functie voor het breder maken van de tabel niet of verwijdert u de typen die zijn gewijzigd.

Als u de tabelfuncties voor het breder maken van het type volledig wilt verwijderen, kunt u de DROP FEATURE opdracht gebruiken, zoals wordt weergegeven in het volgende voorbeeld:

 ALTER TABLE <table-name> DROP FEATURE 'typeWidening-preview' [TRUNCATE HISTORY]

Wanneer u het type breder maakt, worden alle gegevensbestanden die niet voldoen aan het huidige tabelschema, opnieuw geschreven. Zie Delta-tabelfuncties neerzetten.