Typerweiterung
Wichtig
Dieses Feature befindet sich in Databricks Runtime 15.2 und höheren Versionen in Public Preview.
Tabellen mit aktivierter Typerweiterung ermöglichen es Ihnen, Spaltendatentypen in einen breiteren Typ zu ändern, ohne zugrunde liegende Datendateien neu zu schreiben. Sie können Spaltentypen manuell ändern oder die Schemaentwicklung verwenden, um Spaltentypen zu entwickeln.
Für die Typerweiterung ist Delta Lake erforderlich. Alle verwalteten Tabellen im Unity-Katalog verwenden standardmäßig Delta Lake-Tabellen.
Unterstützte Typänderungen
Sie können Typen entsprechend den folgenden Regeln erweitern:
Quellentyp | Unterstützte breitere Typen |
---|---|
byte |
short , int , long |
short |
int , long |
int |
long |
float |
double |
decimal |
decimal mit größerer Präzision und der gleichen Skalierung |
date |
timestampNTZ |
Typänderungen werden für Spalten und Felder auf oberster Ebene unterstützt, die in Strukturen, Zuordnungen und Arrays geschachtelt sind.
Aktivieren der Typerweiterung
Sie können die Typerweiterung für eine vorhandene Tabelle aktivieren, indem Sie die Tabelleneigenschaft delta.enableTypeWidening
auf true
festlegen:
ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'true')
Sie können die Typerweiterung auch während der Tabellenerstellung aktivieren:
CREATE TABLE T(c1 INT) TBLPROPERTIES('delta.enableTypeWidening' = 'true')
Wichtig
Wenn Sie die Typerweiterung aktivieren, wird die Tabellenfunktion typeWidening-preview
festgelegt, wodurch die Lese- und Schreibprotokolle aktualisiert werden. Sie müssen Databricks Runtime 15.2 oder höher verwenden, um mit Tabellen mit aktivierter Typerweiterung zu interagieren. Wenn externe Clients auch mit der Tabelle interagieren, überprüfen Sie, ob sie diese Tabellenfunktion unterstützen. Weitere Informationen finden Sie unter Wie verwaltet Azure Databricks die Kompatibilität von Delta Lake-Features?.
Manuelles Anwenden einer Typänderung
Verwenden Sie den Befehl ALTER COLUMN
, um Typen manuell zu ändern:
ALTER TABLE <table_name> ALTER COLUMN <col_name> TYPE <new_type>
Dieser Vorgang aktualisiert das Tabellenschema, ohne die zugrunde liegenden Datendateien neu zu schreiben.
Erweitern von Typen mit der automatischen Schemaentwicklung
Die Schemaentwicklung funktioniert mit der Typerweiterung, um Datentypen in Zieltabellen zu aktualisieren, sodass sie dem Typ der eingehenden Daten entsprechen.
Hinweis
Wenn die Typerweiterung nicht aktiviert ist, versucht die Schemaentwicklung immer, ein sicheres Downcasting der Daten durchzuführen, um Spaltentypen in der Zieltabelle zuzuordnen. Wenn Datentypen in Ihren Zieltabellen nicht automatisch erweitert werden sollen, deaktivieren Sie die Typerweiterung, bevor Sie Workloads mit aktivierter Schemaentwicklung ausführen.
Um die Schemaentwicklung zum Erweitern des Datentyps einer Spalte zu verwenden, müssen die folgenden Bedingungen erfüllt werden:
- Der Befehl verwendet
INSERT
oderMERGE INTO
. - Der Befehl wird mit aktivierter automatischer Schemaentwicklung ausgeführt.
- Für die Zieltabelle ist die Typerweiterung aktiviert.
- Der Quellspaltentyp ist breiter als der Zielspaltentyp.
- Die Typerweiterung unterstützt die Typänderung.
Typenkonflikte, die nicht alle diese Bedingungen erfüllen, entsprechen normalen Regeln für die Schemaerzwingung. Weitere Informationen finden Sie unter Schemaerzwingung.
Deaktivieren der Tabellenfunktion für die Typenerweiterung
Sie können die versehentliche Typenerweiterung für aktivierte Tabellen verhindern, indem Sie die Eigenschaft auf false
festlegen:
ALTER TABLE <table_name> SET TBLPROPERTIES ('delta.enableTypeWidening' = 'false')
Diese Einstellung verhindert zukünftige Typänderungen an der Tabelle, entfernt jedoch nicht die Tabellenfunktion für die Typenerweiterung und macht Typenänderungen nicht rückgängig.
Wenn Sie die Tabellenfunktionen für die Typerweiterung vollständig entfernen müssen, können Sie den Befehl DROP FEATURE
verwenden, wie im folgenden Beispiel gezeigt:
ALTER TABLE <table-name> DROP FEATURE 'typeWidening-preview' [TRUNCATE HISTORY]
Beim Löschen der Typerweiterung werden alle Datendateien, die nicht dem aktuellen Tabellenschema entsprechen, umgeschrieben. Siehe Delta-Tabellenfeatures ablegen.