Freigeben über


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 oder MERGE 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.