Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Databricks SQL
Databricks Runtime
Definiert eine verwaltete oder externe Tabelle, optional mithilfe einer Datenquelle.
Syntax
{ { [CREATE OR] REPLACE TABLE | CREATE [EXTERNAL] TABLE [ IF NOT EXISTS ] }
table_name
[ table_specification ]
[ USING data_source ]
[ table_clauses ]
[ AS query ] }
table_specification
( { column_identifier column_type [ column_properties ] } [, ...]
[ , table_constraint ] [...] )
column_properties
{ NOT NULL |
COLLATE collation_name |
GENERATED ALWAYS AS ( expr ) |
GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( [ START WITH start | INCREMENT BY step ] [ ...] ) ] |
DEFAULT default_expression |
COMMENT column_comment |
column_constraint |
MASK clause } [ ... ]
table_clauses
{ OPTIONS clause |
PARTITIONED BY clause |
CLUSTER BY clause |
clustered_by_clause |
LOCATION path [ WITH ( CREDENTIAL credential_name ) ] |
COMMENT table_comment |
TBLPROPERTIES clause |
DEFAULT COLLATION default_collation_name |
WITH { ROW FILTER clause } } [...]
clustered_by_clause
{ CLUSTERED BY ( cluster_column [, ...] )
[ SORTED BY ( { sort_column [ ASC | DESC ] } [, ...] ) ]
INTO num_buckets BUCKETS }
Vor Databricks Runtime 16.1 muss START WITHINCREMENT BYvorausgehen.
Parameter
REPLACE
Falls angegeben, werden die Tabelle und deren Inhalt ersetzt, sofern sie bereits existieren. Diese Klausel wird nur für Delta- und Apache Iceberg-Tabellen unterstützt.
REPLACEbewahrt den Tabellenverlauf sowie die gewährten Berechtigungen, Zeilenfilter und Spaltenmasken.Hinweis
Azure Databricks empfiehlt dringend,
REPLACEstatt des Löschens und Neuerstellens von Tabellen zu verwenden.EXTERNAL
Wenn angegeben, wird hiermit eine externe Tabelle erstellt. Beim Erstellen einer externen Tabelle müssen Sie außerdem eine
LOCATION-Klausel angeben. Wenn eine externe Tabelle gelöscht wird, werden die Dateien amLOCATIONnicht gelöscht.WENN NICHT EXISTIERT
Wenn dies angegeben wird und bereits eine Tabelle gleichen Namens vorhanden ist, wird die Anweisung ignoriert.
IF NOT EXISTSundREPLACEkönnen nicht gleichzeitig vorhanden sein, was bedeutet, dassCREATE OR REPLACE TABLE IF NOT EXISTSnicht zulässig ist.-
Der Name der zu erstellenden Tabelle. Der Name darf keine zeitliche Spezifikation oder Optionsspezifikation enthalten. Wenn der Name ohne Qualifizierung angegeben wird, wird die Tabelle im aktuellen Schema erstellt.
In
hive_metastoreerstellte Tabellen dürfen nur alphanumerische ASCII-Zeichen und Unterstriche enthalten (INVALID_SCHEMA_OR_RELATION_NAME).Eisbergtabellen müssen im Unity-Katalog erstellt werden. Das Erstellen von Iceberg-Tabellen in der
hive_metastorewird nicht unterstützt. Tabellenspezifikation
Diese optionale Klausel definiert die Liste der Spalten, deren Typen, Eigenschaften, Beschreibungen und Spalteneinschränkungen.
Wenn Sie keine Spalten für das Tabellenschema definieren, müssen Sie entweder
AS queryoderLOCATIONangeben.-
Ein eindeutiger Name für die Spalte.
Spaltenbezeichner von Delta-Tabellen ohne Spaltenzuordnungseigenschaft (
'delta.columnMapping.mode' = 'name') dürfen keine Leerzeichen oder die folgenden Zeichen enthalten:, ; { } ( ) \n \t =Spaltenbezeichner von
AVROTabellen müssen mit einem Unterstrich (_) oder einem Unicode-Buchstaben (einschließlich Nicht-ASCII-Buchstaben) beginnen und einer Kombination aus Unicode-Buchstaben, Ziffern und Unterstrichen folgen.Spaltenbezeichner von
ICEBERG-Tabellen müssen eindeutig sein, unabhängig von der Groß-/Kleinschreibung, und die Standardregeln für SQL-Bezeichner befolgen. Vermeiden Sie die Verwendung von Leerzeichen oder Sonderzeichen, da sie möglicherweise nicht von allen Abfragemodulen unterstützt werden. -
Gibt den Datentyp der Spalte an. Nicht alle Datentypen, die von Azure Databricks unterstützt werden, werden von allen Datenquellen unterstützt.
NICHT NULL
Wenn angegeben, akzeptiert
NULLdie Spalte keine Werte. Diese Klausel wird nur für Delta- und Iceberg-Tabellen unterstützt.KOLLATION collation_name
Gilt für:
Databricks SQL
Databricks Runtime 16.1 und höherFür
STRINGcolumn_typewird optional die Sortierung angegeben, die für Vergleichs- und Sortiervorgänge für diese Spalte angewendet werden soll. Die Standardsortierung ist die Tabelledefault_collation_name.GENERIERT IMMER ALS ( Ausdruck )
Wenn Sie diese Klausel angeben, wird der Wert dieser Spalte durch den angegebenen
exprbestimmt.Die
DEFAULT COLLATIONder Tabelle mussUTF8_BINARYsein.exprkann aus Literalen, Spaltenbezeichnern innerhalb der Tabelle und deterministischen, integrierten SQL-Funktionen oder -Operatoren bestehen, mit Ausnahme von:- Aggregatfunktionen
- Analysefensterfunktionen
- Rangfolgefensterfunktionen
- Tabellenwertgenerator-Funktionen
- Spalten mit einer anderen Kollation als
UTF8_BINARY
Darüber hinaus darf
exprkeine Unterabfrage enthalten.GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( [ START WITH Start ] [ INCREMENT BY Schritt ] ) ]
Gilt für:
Databricks SQL
Databricks Runtime 10.4 LTS und höherDefiniert eine Identitätsspalte. Wenn Sie in die Tabelle schreiben und keine Werte für die Identitätsspalte angeben, wird ihr automatisch ein eindeutiger und statistisch steigender Wert (oder abnehmender Wert, wenn
stepnegativ ist) zugewiesen. Diese Klausel wird nur für Delta-Tabellen unterstützt. Diese Klausel kann nur für Spalten mit dem BIGINT-Datentyp verwendet werden.Die automatisch zugewiesenen Werte beginnen mit
startund werden umstepinkrementiert. Zugewiesene Werte sind eindeutig, aber es ist nicht garantiert, dass sie zusammenhängend sind. Beide Parameter sind optional, und der Standardwert ist 1.stepdarf nicht0sein.Wenn die automatisch zugewiesenen Werte außerhalb des Bereichs des Identitätsspaltentyps liegen, hat die Abfrage keinen Erfolg.
Wenn
ALWAYSverwendet wird, können Sie keine eigenen Werte für die Identitätsspalte angeben.Die folgenden Vorgänge werden nicht unterstützt:
-
PARTITIONED BY: eine Identitätsspalte -
UPDATE: eine Identitätsspalte
Hinweis
Durch das Deklarieren einer Identitätsspalte in einer Tabelle werden gleichzeitige Transaktionen deaktiviert. Verwenden Sie Identitätsspalten nur in Anwendungsfällen, in denen keine gleichzeitigen Schreibvorgänge in die Zieltabelle erforderlich sind.
-
Default default_expression
Gilt für:
Databricks SQL
Databricks Runtime 11.3 LTS und höherDefiniert einen
DEFAULT-Wert für die Spalte, der fürINSERT,UPDATEundMERGE ... INSERTverwendet wird, wenn die Spalte nicht angegeben ist.Wenn kein Standardwert angegeben ist, wird
DEFAULT NULLfür NULL-fähige Spalten angewendet.default_expressionkann aus Literalen und integrierten SQL-Funktionen oder -Operatoren bestehen, außer:- Aggregatfunktionen
- Analysefensterfunktionen
- Rangfolgefensterfunktionen
- Tabellenwertgenerator-Funktionen
Darüber hinaus darf
default_expressionkeine Unterabfrage enthalten.DEFAULTwird fürCSV,JSON,PARQUETundORCQuellen unterstützt.ANMERKUNG column_comment
Ein Zeichenfolgenliteral zum Beschreiben der Spalte.
-
Fügt der Spalte in einer Tabelle eine Primärschlüssel- oder Fremdschlüsseleinschränkung hinzu.
Einschränkungen werden nicht für Tabellen im
hive_metastore-Katalog unterstützt.So fügen Sie einer Tabelle eine Check-Einschränkung mit ALTER TABLE hinzu.
-
Gilt für:
Databricks SQL
Databricks Runtime 12.2 LTS und höher
Nur Unity CatalogFügt eine Spaltenmaskierungsfunktion hinzu, um vertrauliche Daten zu anonymisieren. Alle nachfolgenden Abfragen dieser Spalte erhalten das Ergebnis der Auswertung dieser Funktion anstelle des ursprünglichen Werts der Spalte. Dies kann für eine präzise Zugriffssteuerung nützlich sein, bei der die Funktion die Identität oder Gruppenmitgliedschaft der aufrufenden Benutzer*innen überprüfen kann, um zu entscheiden, ob der Wert zurückgezogen werden soll.
Wenn Sie eine Tabelle ersetzen und die neue Tabelle dieselben Spaltennamen wie das Original enthält, werden alle vorhandenen Spaltenformate beibehalten, auch wenn sie nicht explizit neu definiert werden. Dies verhindert versehentlichen Verlust von Datenzugriffsrichtlinien.
-
Fügt der Tabelle einen informationsalen Primärschlüssel oder Informationen zu Fremdschlüsseleinschränkungen hinzu.
Schlüsseleinschränkungen werden nicht für Tabellen im
hive_metastore-Katalog unterstützt.So fügen Sie einer Tabelle eine Check-Einschränkung mit ALTER TABLE hinzu.
-
VERWENDUNG von data_source
data_sourcekann entweder ein Dateiformat oder eine JDBC-Föderationsdatenquelle sein.Das Dateiformat muss eines der folgenden sein:
AVROBINARYFILECSVDELTAICEBERGJSONORCPARQUETTEXT
Für jedes andere Dateiformat als
DELTAoderICEBERGmüssen Sie auch einLOCATIONangeben, es sei denn, der Tabellenkatalog isthive_metastore.Die folgenden JDBC-Verbundquellen werden unterstützt:
POSTGRESQLSQLSERVERMYSQLBIGQUERYNETSUITEORACLEREDSHIFTSNOWFLAKESQLDWSYNAPSESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB
Wenn Sie eine federierte JDBC-Quelle angeben, müssen Sie auch die
OPTIONS-Klausel mit den erforderlichen Verbindungsinformationen angeben. Weitere Informationen zum Abfragen von Verbunddatenquellen finden Sie unter Abfragen von Datenbanken mit JDBC.Die folgenden zusätzlichen Dateiformate, die für die Tabelle verwendet werden sollen, werden in Databricks Runtime unterstützt:
JDBCLIBSVM- ein vollqualifizierter Klassenname einer benutzerdefinierten Implementierung von
org.apache.spark.sql.sources.DataSourceRegister.
Wenn
USINGnicht angegeben wird, ist der StandardwertDELTA.Folgendes gilt für: Databricks Runtime
HIVEwird unterstützt, um eine Hive SerDe-Tabelle in Databricks Runtime zu erstellen. Sie können das Hive-spezifischefile_formatundrow_formatmithilfe derOPTIONS-Klausel angeben, einer Zeichenfolgenzuordnung, bei der die Groß-/Kleinschreibung nicht beachtet wird. Dieoption_keyssind:FILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
Tabellenklauseln
Geben Sie optional Speicherort, Partitionierung, Clustering, Optionen, Kommentare und benutzerdefinierte Eigenschaften für die neue Tabelle an. Jede Unterklausel kann nur einmal angegeben werden.
-
Eine optionale Klausel zum Partitionieren der Tabelle nach einer Teilmenge von Spalten.
Hinweis
Für verwaltete Iceberg-Tabellen wird
PARTITIONED BYvon Azure Databricks nicht unterstützt. Verwenden Sie stattdessen liquid clustering (CLUSTER BY), um das Datenlayout zu optimieren. Wenn Sie die Tabellendefinition für Delta-Tabellen weglassen, platziert Azure Databricks Partitionierungsspalten am Ende der Tabelle, auch wenn Sie sie weiter oben in der Spaltenspezifikation auflisten. -
Gilt für:
Databricks SQL
Databricks Runtime 13.3 und höherEine optionale Klausel zum Clustern einer Delta- oder Iceberg-Tabelle nach einer Teilmenge von Spalten. Siehe Verwenden von Flüssigclustering für Tabellen. Verwenden Sie
clustered_by_clausezum Gruppieren anderer Tabellen .Bei Iceberg-Tabellen müssen Sie die Löschvektoren und Zeilen-IDs explizit deaktivieren, wenn Sie
CLUSTER BYverwenden.Verwenden Sie automatische Flüssigclustering mit
CLUSTER BY AUTO, und Databricks wählt intelligent Clustering-Schlüssel aus, um die Abfrageleistung zu optimieren.Sie können flüssige Clusterbildung nicht mit
PARTITIONED BYkombinieren. clustered_by_clause
Gruppieren Sie optional die Tabelle oder jede Partition mithilfe einer Teilmenge der Spalten zu einer festen Anzahl von Hashbuckets.
Diese Klausel wird für Delta- oder Iceberg-Tabellen nicht unterstützt. Verwenden Sie stattdessen
CLUSTER BY.GRUPPIERT NACH
Gibt den Satz von Spalten an, nach denen jede Partition gruppiert werden soll, oder die Tabelle, wenn keine Partitionierung angegeben ist.
-
Ein Bezeichner, der auf einen
column_identifierin der Tabelle verweist. Wenn Sie mehrere Spalten angeben, dürfen keine Duplikate vorhanden sein. Da ein Clustering auf Partitionsebene funktioniert, dürfen Sie eine Partitionsspalte nicht auch als Clusterspalte benennen.
-
SORTIERT NACH
Behält optional eine Sortierreihenfolge für Zeilen in einem Bucket bei.
sort_column
Eine Spalte, nach der der Bucket sortiert werden soll. Die Spalte darf keine Partitionsspalte sein. Sortierspalten müssen eindeutig sein.
ASC oder DESC
Gibt optional an, ob
sort_columnin aufsteigender (ASC) oder absteigender Reihenfolge (DESC) sortiert ist. Die Standardwerte sindASC.
INTO num_buckets BUCKETS
Ein INTEGER-Literal, das die Anzahl der Buckets angibt, in die jede Partition (oder die Tabelle, wenn keine Partitionierung angegeben ist) aufgeteilt wird.
LOCATION Pfad [ WITH ( CREDENTIAL credential_name ) ]
Ein optionaler Pfad zu dem Verzeichnis, in dem Tabellendaten gespeichert werden. Dabei kann es sich um einen Pfad im verteilten Speicher handeln.
pathmuss ein Zeichenfolgenliteral sein. Wenn Sie keinen Speicherort angeben, wird die Tabelle alsmanaged tablebetrachtet, und Azure Databricks erstellt einen Standardspeicherort für die Tabelle.Wenn Sie einen Speicherort angeben, wird die Tabelle zu einer externen Tabelle.
Bei Tabellen, die sich nicht im
hive_metastore-Katalog befinden, muss derpathder Tabelle durch einen externen Speicherort geschützt werden, solange keine gültigen Speicheranmeldeinformationen angegeben werden.Sie können keine externen Tabellen an Speicherorten erstellen, die sich mit dem Speicherort verwalteter Tabellen überlappen.
Bei Delta-Tabellen erbt die Tabelle ihre Konfiguration von dem
LOCATION, wenn daten bereits in diesem Pfad vorhanden sind. Daher müssen alle angegebenenTBLPROPERTIES,table_specificationoderPARTITIONED BYKlauseln exakt mit den vorhandenen Daten am Delta-Speicherort übereinstimmen.Bei Iceberg-Tabellen wird die
LOCATIONKlausel nicht unterstützt. Fremde Iceberg-Tabellen werden automatisch registriert, wenn Sie einen fremden Katalog erstellen, und Sie müssen verwaltete Iceberg-Tabellen erstellen, ohne einen Speicherort anzugeben.-
Legt eine oder mehrere benutzerdefinierte Tabellenoptionen fest oder setzt diese zurück.
KOMMENTAR table_comment
Ein Zeichenfolgenliteral zum Beschreiben der Tabelle.
-
Legt optional eine oder mehrere benutzerdefinierte Eigenschaften fest.
STANDARDKOLLATION default_collation_name
Gilt für:
Databricks SQL
Databricks Runtime 16.3 und höherDefiniert die standardmäßige Sortierung, die für Folgendes verwendet werden soll:
-
STRINGSpalten und Felder der Tabelle -
DEFAULT-Ausdruck - Der Text von
CREATE TABLE AS query
CHECK-Einschränkungen und generierte Spaltenausdrücke erfordern eine Standardsortierung vonUTF8_BINARY.Wenn nicht angegeben, wird die Standardsortierung vom Schema abgeleitet, in dem die Tabelle erstellt wird.
-
-
Gilt für:
Databricks SQL
Databricks Runtime 12.2 LTS und höher
Nur Unity CatalogFügt der Tabelle eine Zeilenfilterfunktion hinzu. Alle nachfolgenden Abfragen von dieser Tabelle erhalten eine Teilmenge der Zeilen, in denen die Funktion als boolescher Wert TRUE ausgewertet wird. Dies kann für eine fein abgestufte Zugriffssteuerung nützlich sein, bei der die Funktion die Identität oder Gruppenmitgliedschaften der aufrufenden Benutzer überprüfen kann, um zu entscheiden, ob bestimmte Spalten gefiltert werden sollen.
Wenn Sie eine Tabelle ersetzen, werden alle vorhandenen Zeilenfilter beibehalten, auch wenn sie nicht explizit neu definiert werden. Dies verhindert versehentlichen Verlust von Datenzugriffsrichtlinien.
-
-
Diese optionale Klausel füllt die Tabelle mithilfe der Daten aus
queryauf. Wenn Sie einequeryangeben, dürfen Sie nicht auch einetable_specificationangeben. Das Tabellenschema wird aus der Abfrage abgeleitet.Beachten Sie, dass Azure Databricks die zugrunde liegende Datenquelle mit den Daten der Eingabeabfrage überschreibt, um sicherzustellen, dass die erstellte Tabelle genau die gleichen Daten wie die Eingabeabfrage enthält.
Beispiele
-- Creates a Delta table
> CREATE TABLE student (id INT, name STRING, age INT);
-- Creates a managed Iceberg table
> CREATE TABLE edu.enrollment.student (id INT, name STRING, age INT) USING ICEBERG;
-- Use data from another table
> CREATE TABLE student_copy AS SELECT * FROM student;
-- Creates a CSV table from an external directory
> CREATE TABLE student USING CSV LOCATION '/path/to/csv_files';
-- Specify table comment and properties
> CREATE TABLE student (id INT, name STRING, age INT)
COMMENT 'this is a comment'
TBLPROPERTIES ('foo'='bar');
-- Specify table comment and properties with different clauses order
> CREATE TABLE student (id INT, name STRING, age INT)
TBLPROPERTIES ('foo'='bar')
COMMENT 'this is a comment';
-- Create partitioned table
> CREATE TABLE student (id INT, name STRING, age INT)
PARTITIONED BY (age);
-- Create a table with a generated column
> CREATE TABLE rectangles(a INT, b INT,
area INT GENERATED ALWAYS AS (a * b));
-- Create a table with a string column with a case-insensitive collation.
> CREATE TABLE names(name STRING COLLATE UNICODE_CI);
-- Create a table with a default collation and override for a specific column.
> CREATE TABLE names(name STRING, first_name STRING, id STRING COLLATE UTF8_BINARY) DEFAULT COLLATION UNICODE_CI;
-- Create an external table connected to Oracle
> CREATE TABLE IF NOT EXISTS ora_tab
USING ORACLE
OPTIONS (
url '<jdbc-url>',
dbtable '<table-name>',
user '<username>',
password '<password>'
);
> SELECT * FROM ora_tab;