Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime
Definieert een beheerde of externe tabel, optioneel met behulp van een gegevensbron.
Syntaxis
{ { [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 }
Voordat Databricks Runtime 16.1 kan worden gebruikt, moet START WITH aan INCREMENT BYvoorafgaan.
Parameterwaarden
VERVANGEN
Indien opgegeven, vervangt de tabel en de inhoud ervan als deze al bestaat. Deze component wordt alleen ondersteund voor Delta- en Apache Iceberg-tabellen.
REPLACEbehoudt de tabelgeschiedenis en de verleende bevoegdheden, rijfilters en kolommaskers.Notitie
Azure Databricks raadt ten zeerste aan om
REPLACEte gebruiken in plaats van tabellen te verwijderen en opnieuw te maken.EXTERN
Als dit is opgegeven, maakt u een externe tabel. Wanneer u een externe tabel maakt, moet u ook een
LOCATION-component opgeven. Wanneer een externe tabel wordt verwijderd, worden de bestanden op deLOCATIONniet verwijderd.ALS NIET BESTAAT
Als deze is opgegeven en er al een tabel met dezelfde naam bestaat, wordt de instructie genegeerd.
IF NOT EXISTSkan niet samen bestaan metREPLACE, wat betekent datCREATE OR REPLACE TABLE IF NOT EXISTSniet is toegestaan.-
De naam van de tabel die moet worden gemaakt. De naam mag geen tijdelijke specificatie of optiesspecificatie bevatten. Als de naam niet is gekwalificeerd, wordt de tabel gemaakt in het huidige schema.
Tabellen die zijn gemaakt in
hive_metastorekunnen alleen alfanumerieke ASCII-tekens en onderstrepingstekens (INVALID_SCHEMA_OR_RELATION_NAME) bevatten.Iceberg-tabellen moeten worden gemaakt in Unity Catalog. Het maken van Iceberg-tabellen in de
hive_metastoretabel wordt niet ondersteund. tabelspecificatie
Deze optionele component definieert de lijst met kolommen, hun typen, eigenschappen, beschrijvingen en kolombeperkingen.
Als u geen kolommen definieert, moet u het tabelschema opgeven
AS queryofLOCATION.-
Een unieke naam voor de kolom.
Kolom-id's van Delta-tabellen zonder eigenschap voor kolomtoewijzing (
'delta.columnMapping.mode' = 'name') mogen geen spaties of de volgende tekens bevatten:, ; { } ( ) \n \t =Kolom-id's van
AVROtabellen moeten beginnen met een onderstrepingsteken (_) of een Unicode-letter (inclusief niet-ASCII-letters) en worden gevolgd door een combinatie van Unicode-letters, cijfers en onderstrepingstekens.Kolom-id's van
ICEBERGtabellen moeten uniek zijn, niet hoofdlettergevoelig zijn en de standaard-SQL-id-regels volgen. Vermijd het gebruik van spaties of speciale tekens, omdat ze mogelijk niet worden ondersteund door alle query-engines. -
Hiermee geeft u het gegevenstype van de kolom. Niet alle gegevenstypen die worden ondersteund door Azure Databricks, worden ondersteund door alle gegevensbronnen.
NIET NULL
Indien opgegeven, accepteert
NULLde kolom geen waarden. Deze component wordt alleen ondersteund voor Delta- en Iceberg-tabellen.-
Van toepassing op:
Databricks SQL
Databricks Runtime 16.1 en hogerVoor
STRINGcolumn_typegeeft optioneel een naam op voor de sortering die toegepast moet worden bij vergelijkings- en sorteerbewerkingen op deze kolom. De standaardsortering is de tabeldefault_collation_name. ALTIJD GEGENEREERD ALS ( expr )
Wanneer u deze clausule opgeeft, wordt de waarde van deze kolom bepaald door de opgegeven
expr.De
DEFAULT COLLATIONvan de tabel moetUTF8_BINARYzijn.exprkan bestaan uit letterlijke waarden, kolom-id's in de tabel en deterministische, ingebouwde SQL-functies of -operators, met uitzondering van:- Aggregerende functies
- Analytische vensterfuncties
- Rangschikkingsvensterfuncties
- Generatorfuncties met tabelwaarden
- Kolommen met een andere sortering dan
UTF8_BINARY
Mag ook
exprgeen subquery bevatten.GEGENEREERD { ALWAYS | BIJ DEFAULT } AS IDENTITY [ ( [ STARTEN MET start ] [ VERHOGEN MET stap ] ) ]
Van toepassing op:
Databricks SQL
Databricks Runtime 10.4 LTS en hogerDefinieert een identiteitskolom. Wanneer u naar de tabel schrijft en geen waarden opgeeft voor de identiteitskolom, wordt automatisch een unieke en statistisch stijgende waarde toegewezen (of afnemend als
stepnegatief is). Deze component wordt alleen ondersteund voor Delta-tabellen. Deze component kan alleen worden gebruikt voor kolommen met het gegevenstype BIGINT.De automatisch toegewezen waarden beginnen met
starten verhogen metstep. Toegewezen waarden zijn uniek, maar zijn niet gegarandeerd aaneengesloten. Beide parameters zijn optioneel en de standaardwaarde is 1.stepkan niet zijn0.Als de automatisch toegewezen waarden buiten het bereik van het type identiteitskolom vallen, mislukt de query.
Wanneer
ALWAYSwordt gebruikt, kunt u uw eigen waarden voor de identiteitskolom niet opgeven.De volgende bewerkingen worden niet ondersteund:
-
PARTITIONED BYeen identiteitskolom -
UPDATEeen identiteitskolom
Notitie
Als u een identiteitskolom in een tabel declareert, worden gelijktijdige transacties uitgeschakeld. Gebruik alleen identiteitskolommen in gebruiksvoorbeelden waarbij gelijktijdige schrijfbewerkingen naar de doeltabel niet vereist zijn.
-
standaardwaarde default_expression
Van toepassing op:
Databricks SQL
Databricks Runtime 11.3 LTS en hogerDefinieert een
DEFAULTwaarde voor de kolom die wordt gebruikt voorINSERT,UPDATEenMERGE ... INSERTwanneer de kolom niet is opgegeven.Als er geen standaardwaarde is opgegeven
DEFAULT NULLwordt toegepast op null-kolommen.default_expressionkan bestaan uit letterlijke waarden en ingebouwde SQL-functies of -operators, met uitzondering van:- Aggregerende functies
- Analytische vensterfuncties
- Rangschikkingsvensterfuncties
- Generatorfuncties met tabelwaarden
Mag ook
default_expressiongeen subquery bevatten.DEFAULTwordt ondersteund voorCSV,JSONenPARQUETORCbronnen.OPMERKING column_comment
Een letterlijke tekenreeks om de kolom te beschrijven.
-
Hiermee voegt u een primaire sleutel of refererende sleutelbeperking toe aan de kolom in een tabel.
Beperkingen worden niet ondersteund voor tabellen in de
hive_metastorecatalogus.Een controlebeperking toevoegen aan een tabelgebruik ALTER TABLE.
-
Van toepassing op:
Databricks SQL
Databricks Runtime 12.2 LTS en hoger
alleen Unity CatalogVoegt een kolommaskerfunctie toe om gevoelige gegevens anoniem te maken. Alle volgende query's van die kolom ontvangen het resultaat van het evalueren van die functie ten opzichte van de kolom in plaats van de oorspronkelijke waarde van de kolom. Dit kan handig zijn voor verfijnde toegangsbeheerdoeleinden, waarbij de functie de identiteit of groepslidmaatschappen van de aanroepende gebruiker kan inspecteren om te bepalen of de waarde moet worden bewerkt.
Als u een tabel vervangt en de nieuwe tabel dezelfde kolomnamen bevat als het origineel, blijven bestaande kolommaskers behouden, zelfs als ze niet expliciet opnieuw worden gedefinieerd. Dit voorkomt onbedoeld verlies van beleid voor gegevenstoegang.
-
Voegt een informatieve primaire sleutel of informatieve refererende sleutelbeperkingen toe aan de tabel.
Sleutelbeperkingen worden niet ondersteund voor tabellen in de
hive_metastore-catalogus.Een controlebeperking toevoegen aan een tabelgebruik ALTER TABLE.
-
DATA_SOURCE gebruiken
data_sourcekan een bestandsindeling of een federatieve JDBC-gegevensbron zijn.De bestandsindeling moet een van de volgende zijn:
AVROBINARYFILECSVDELTAICEBERGJSONORCPARQUETTEXT
Voor een andere bestandsindeling dan
DELTAofICEBERG, moet u ook eenLOCATIONopgegeven, tenzij de tabelcatalogushive_metastoreis.De volgende federatieve JDBC-bronnen worden ondersteund:
POSTGRESQLSQLSERVERMYSQLBIGQUERYNETSUITEORACLEREDSHIFTSNOWFLAKESQLDWSYNAPSESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB
Wanneer u een federatieve JDBC-bron opgeeft, moet u ook de
OPTIONScomponent opgeven met de benodigde verbindingsgegevens. Zie Querydatabases met JDBC voor meer informatie over het uitvoeren van query's op federatieve gegevensbronnen.De volgende aanvullende bestandsindelingen die voor de tabel moeten worden gebruikt, worden ondersteund in Databricks Runtime:
JDBCLIBSVM- een volledig gekwalificeerde klassenaam van een aangepaste implementatie van
org.apache.spark.sql.sources.DataSourceRegister.
Als
USINGwordt weggelaten, is de standaardDELTA.Het volgende is van toepassing op: Databricks Runtime
HIVEwordt ondersteund voor het maken van een Hive SerDe-tabel in Databricks Runtime. U kunt de Hive-specifiekefile_formatenrow_formatspecificeren met deOPTIONSclausule, wat een hoofdletterongevoelige tekenreeksmap is. Deoption_keyszijn:FILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
tabel_clausules
Geef desgewenst locatie, partitionering, clustering, opties, opmerkingen en door de gebruiker gedefinieerde eigenschappen voor de nieuwe tabel op. Elke subclausule mag slechts eenmaal worden gespecificeerd.
-
Een optionele component voor het partitioneren van de tabel door een subset van kolommen.
Notitie
Voor beheerde Iceberg-tabellen biedt Azure Databricks geen ondersteuning voor
PARTITIONED BY. Gebruik vloeibare clustering (CLUSTER BY) om in plaats daarvan de gegevensindeling te optimaliseren. Als u voor Delta-tabellen de tabeldefinitie weglaat, plaatst Azure Databricks partitioneringskolommen aan het einde van de tabel, zelfs als u deze eerder in de kolomspecificatie opgeeft. -
Van toepassing op:
Databricks SQL
Databricks Runtime 13.3 en hogerEen optionele component voor het clusteren van een Delta- of Iceberg-tabel door een subset van kolommen. Zie Liquid Clustering gebruiken voor tabellen. Als u andere tabellen wilt clusteren, gebruikt u
clustered_by_clause.Voor Iceberg-tabellen moet u verwijderingsvectoren en rij-id's expliciet uitschakelen wanneer u gebruikt
CLUSTER BY.Gebruik automatische liquide clustering met
CLUSTER BY AUTOen Databricks kiest op intelligente wijze clusteringsleutels om de queryprestaties te optimaliseren.U kunt vloeistofclustering niet combineren met
PARTITIONED BY. geclusterd_op_clausule
U kunt de tabel of elke partitie desgewenst in een vast aantal hash-buckets clusteren met behulp van een subset van de kolommen.
Deze component wordt niet ondersteund voor Delta- of Iceberg-tabellen. Gebruik in plaats daarvan
CLUSTER BY.GECLUSTERD OP
Hiermee geeft u de set kolommen op waarmee elke partitie moet worden geclusterd of de tabel als er geen partitionering is opgegeven.
-
Een id die verwijst naar een
column_identifierin de tabel. Als u meer dan één kolom opgeeft, mogen er geen duplicaten zijn. Aangezien een clustering op partitieniveau werkt, mag u een partitiekolom niet ook als clusterkolom benoemen.
-
GESORTEERD OP
Optioneel onderhoudt u een sorteervolgorde voor rijen in een bucket.
sort_column
Een kolom om de bucket op te sorteren. De kolom mag geen partitiekolom zijn. Sorteerkolommen moeten uniek zijn.
ASC of DESC
Hiermee geeft u optioneel op of
sort_columnwordt gesorteerd in oplopende (ASC) of aflopende (DESC) volgorde. De standaardwaarden zijnASC.
IN NUM_BUCKETS BUCKETS
Een letterlijk geheel getal dat het aantal buckets aangeeft waarin elke partitie (of de tabel als er geen partitionering is opgegeven) wordt verdeeld.
LOCATIEpad [ WITH ( CREDENTIAL credential_name ) ]
Een optioneel pad naar de map waarin tabelgegevens worden opgeslagen. Dit kan een pad zijn voor gedistribueerde opslag.
pathmoet een letterlijke tekenreeks zijn. Als u geen locatie opgeeft, wordt de tabel beschouwd als eenmanaged tableen maakt Azure Databricks een standaardtabellocatie.Als u een locatie opgeeft, wordt de tabel een externe tabel.
Voor tabellen die zich niet in de
hive_metastorecatalogus bevinden, moet de tabelpathworden beveiligd door een externe locatie , tenzij er een geldige opslagreferentie is opgegeven.U kunt geen externe tabellen maken op locaties die overlappen met de locatie van beheerde tabellen.
Voor Delta-tabellen neemt de tabel de configuratie over van de
LOCATIONals er al gegevens op dat pad aanwezig zijn. Als gevolg hiervan moeten opgegevenTBLPROPERTIES,table_specificationofPARTITIONED BYcomponenten exact overeenkomen met de bestaande gegevens op de Delta-locatie.Voor Iceberg-tabellen wordt de
LOCATIONcomponent niet ondersteund. Buitenlandse Iceberg-tabellen worden automatisch geregistreerd wanneer u een buitenlandse catalogus maakt en u moet beheerde Iceberg-tabellen maken zonder een locatie op te geven.-
Hiermee stelt u een of meer door de gebruiker gedefinieerde tabelopties in of stelt u deze opnieuw in.
OPMERKING table_comment
Een letterlijke tekenreeks om de tabel te beschrijven.
-
U kunt desgewenst een of meer door de gebruiker gedefinieerde eigenschappen instellen.
STANDAARDCOLLATIE default_collation_name
Van toepassing op:
Databricks SQL
Databricks Runtime 16.3 en hogerDefinieert de standaardsortering die moet worden gebruikt voor:
-
STRINGkolommen en velden van de tabel -
DEFAULT-expressie - De hoofdtekst van
CREATE TABLE AS query
CHECKbeperkingen en gegenereerde kolomexpressies vereisen een standaardsortering vanUTF8_BINARY.Als dit niet is opgegeven, wordt de standaardsortering afgeleid van het schema waarin de tabel wordt gemaakt.
-
-
Van toepassing op:
Databricks SQL
Databricks Runtime 12.2 LTS en hoger
alleen Unity CatalogHiermee voegt u een rijfilterfunctie toe aan de tabel. Alle volgende query's uit die tabel ontvangen een subset van de rijen waarbij de functie de booleanwaarde TRUE oplevert. Dit kan handig zijn voor verfijnde toegangsbeheerdoeleinden, waarbij de functie de identiteit of groepslidmaatschappen van de aanroepende gebruiker kan inspecteren om te bepalen of bepaalde rijen moeten worden gefilterd.
Als u een tabel vervangt, blijven bestaande rijfilters behouden, zelfs als ze niet expliciet opnieuw worden gedefinieerd. Dit voorkomt onbedoeld verlies van beleid voor gegevenstoegang.
-
-
Met deze optionele component wordt de tabel gevuld met behulp van de gegevens uit
query. Wanneer u eenqueryopgeeft, moet u tevens geentable_specificationspecificeren. Het tabelschema is afgeleid van de query.Houd er rekening mee dat Azure Databricks de onderliggende gegevensbron overschrijft met de gegevens van de invoerquery om ervoor te zorgen dat de tabel precies dezelfde gegevens bevat als de invoerquery.
Voorbeelden
-- 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;