Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: Databricks SQL
Databricks Runtime
Definierar en hanterad eller extern tabell, om du vill använda en datakälla.
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 }
Innan Databricks Runtime 16.1 måste START WITH
föregå INCREMENT BY
.
Parameterar
ERSÄTTA
Om det anges ersätter du tabellen och dess innehåll om den redan finns. Den här satsen stöds endast för Delta- och Apache Iceberg-tabeller.
REPLACE
bevarar tabellhistorik samt beviljade rättigheter.Anteckning
Azure Databricks rekommenderar starkt att du använder
REPLACE
i stället för att släppa och återskapa tabeller.EXTERN
Om det anges skapar du en extern tabell. När du skapar en extern tabell måste du också ange en
LOCATION
sats. När en extern tabell tas bort tas inte filernaLOCATION
bort.OM DET INTE FINNS
Om det anges och det redan finns en tabell med samma namn, ignoreras meningen.
IF NOT EXISTS
kan inte samexistera medREPLACE
, vilket innebär attCREATE OR REPLACE TABLE IF NOT EXISTS
inte tillåts.-
Namnet på tabellen som ska skapas. Namnet får inte innehålla en temporal specifikation eller alternativspecifikation. Om namnet inte är kvalificerat skapas tabellen i det aktuella schemat.
Tabeller som skapas i
hive_metastore
får bara innehålla alfanumeriska ASCII-tecken och understreck (INVALID_SCHEMA_OR_RELATION_NAME).Isbergstabeller måste skapas i Unity Catalog. Det är inte möjligt att skapa isbergstabeller i
hive_metastore
. tabellspecifikation
Den här valfria satsen definierar listan över kolumner, deras typer, egenskaper, beskrivningar och kolumnbegränsningar.
Om du inte definierar kolumner i tabellschemat måste du ange antingen
AS query
ellerLOCATION
.-
Ett unikt namn för kolumnen.
Kolumnidentifierare för Delta-tabeller utan kolumnmappningsegenskap (
'delta.columnMapping.mode' = 'name'
) får inte innehålla blanksteg eller följande tecken:, ; { } ( ) \n \t =
.Kolumnidentifierare för
AVRO
tabeller måste börja med ett understreck (_
) eller en Unicode-bokstav (inklusive icke-ASCII-bokstäver) och följas av en kombination av Unicode-bokstäver, siffror och understreck.Kolumnidentifierare för
ICEBERG
tabeller måste vara unika, skiftlägesokänsliga och följa standardreglerna för SQL-identifierare. Undvik att använda blanksteg eller specialtecken eftersom de kanske inte stöds av alla sökmotorer. -
Anger kolumnens datatyp. Alla datatyper som stöds av Azure Databricks stöds inte av alla datakällor.
INTE NULL
Om det anges accepterar
NULL
kolumnen inte värden. Den här satsen stöds endast för Delta- och Iceberg-tabeller.KOLLATIONERA kollationsnamn
gäller för:
Databricks SQL
Databricks Runtime 16.1 och senare
För
STRING
column_type
kan du välja att namnge sorteringen som ska användas för jämförelse- och sorteringsåtgärder på den här kolumnen. Standardsortering är tabellendefault_collation_name
.GENERERAS ALLTID SOM ( uttr )
När du anger den här satsen bestäms värdet för den här kolumnen av den angivna
expr
.Tabellens
DEFAULT COLLATION
måste varaUTF8_BINARY
.expr
kan bestå av literaler, kolumnidentifierare i tabellen och deterministiska, inbyggda SQL-funktioner eller operatorer förutom:- Mängdfunktioner
- Analysfönsterfunktioner
- Funktioner för rangordningsfönster
- Generatorfunktioner som returnerar tabellvärden
- Kolumner med en annan teckenkodning än
UTF8_BINARY
Får inte heller
expr
innehålla någon underfråga.GENERERAD { ALLTID | SOM STANDARDVÄRDE } SOM IDENTIFIERING [ ( [ STARTA MED start ] [ ÖKA MED steg ] ) ]
Gäller för:
Databricks SQL
Databricks Runtime 10.4 LTS och senare
Definierar en identitetskolumn. När du skriver till tabellen och inte anger värden för identitetskolumnen, kommer den automatiskt att tilldelas ett unikt och statistiskt ökat värde (eller minskat om
step
är negativt). Den här satsen stöds endast för Delta-tabeller. Den här satsen kan endast användas för kolumner med BIGINT-datatyp.De automatiskt tilldelade värdena börjar med
start
och ökar medstep
. Tilldelade värden är unika men garanteras inte vara sammanhängande. Båda parametrarna är valfria och standardvärdet är 1.step
kan inte vara0
.Om de automatiskt tilldelade värdena ligger utanför intervallet för identitetskolumntypen misslyckas frågan.
När
ALWAYS
används kan du inte ange egna värden för identitetskolumnen.Följande åtgärder stöds inte:
-
PARTITIONED BY
en identitetskolumn -
UPDATE
en identitetskolumn
Anteckning
Om du deklarerar en identitetskolumn i en tabell inaktiveras samtidiga transaktioner. Använd endast identitetskolumner i användningsfall där samtidiga skrivningar till måltabellen inte krävs.
-
STANDARD default_expression
Gäller för:
Databricks SQL
Databricks Runtime 11.3 LTS och senare
Definierar ett
DEFAULT
värde för kolumnen som används påINSERT
,UPDATE
ochMERGE ... INSERT
när kolumnen inte har angetts.Om inget standardvärde anges
DEFAULT NULL
tillämpas för nullbara kolumner.default_expression
kan bestå av literaler och inbyggda SQL-funktioner eller -operatorer förutom:- Mängdfunktioner
- Analysfönsterfunktioner
- Funktioner för rangordningsfönster
- Generatorfunktioner som returnerar tabellvärden
Får inte heller
default_expression
innehålla någon underfråga.DEFAULT
stöds förCSV
,JSON
,PARQUET
ochORC
källor.KOMMENTAR column_comment
En textsträng som beskriver kolumnen.
-
Lägger till en primärnyckelbegränsning eller en utländsk nyckelbegränsning i kolumnen i en tabell.
Begränsningar stöds inte för tabeller i
hive_metastore
katalogen.Om du vill lägga till en kontrollbegränsning i en tabell använder du ALTER TABLE.
-
gäller för:
Databricks SQL
Databricks Runtime 12.2 LTS och senare
endast Unity Catalog
Viktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Lägger till en kolumnmaskfunktion för att anonymisera känsliga data. Alla efterföljande frågor från den kolumnen får resultatet av utvärderingen av funktionen över kolumnen i stället för kolumnens ursprungliga värde. Detta kan vara användbart för detaljerad åtkomstkontroll där funktionen kan kontrollera identitets- eller gruppmedlemskapen för den anropande användaren för att avgöra om värdet ska redigeras.
-
Lägger till antingen en informerande primärnyckel eller en informerande främmande nyckelbegränsning i tabellen.
Viktiga begränsningar stöds inte för tabeller i
hive_metastore
katalogen.Om du vill lägga till en kontrollbegränsning i en tabell använder du ALTER TABLE.
-
ANVÄNDNING AV data_source
data_source
kan vara antingen ett filformat eller en federerad JDBC-datakälla.Filformatet måste vara något av följande:
AVRO
BINARYFILE
CSV
DELTA
ICEBERG
JSON
ORC
PARQUET
TEXT
För varje annat filformat än
DELTA
ellerICEBERG
måste du ange enLOCATION
, såvida inte tabellkatalogen ärhive_metastore
.Följande federerade JDBC-källor stöds:
POSTGRESQL
SQLSERVER
MYSQL
BIGQUERY
NETSUITE
ORACLE
REDSHIFT
SNOWFLAKE
SQLDW
SYNAPSE
SALESFORCE
SALESFORCE_DATA_CLOUD
TERADATA
WORKDAY_RAAS
MONGODB
När du anger en federerad JDBC-källa måste du också ange
OPTIONS
satsen med nödvändig anslutningsinformation. Mer information om hur du frågar federerade datakällor finns i Fråga databaser med JDBC .Följande ytterligare filformat som ska användas för tabellen stöds i Databricks Runtime:
JDBC
LIBSVM
- ett fullständigt kvalificerat klassnamn för en anpassad implementering av
org.apache.spark.sql.sources.DataSourceRegister
.
Om
USING
utelämnas ärDELTA
standardvärdet .Följande gäller för: Databricks Runtime
HIVE
stöds för att skapa en Hive SerDe-tabell i Databricks Runtime. Du kan ange den Hive-specifikafile_format
ochrow_format
genom att användaOPTIONS
-satsen, som är en skiftlägesokänslig strängkarta. Deoption_keys
är:FILEFORMAT
INPUTFORMAT
OUTPUTFORMAT
SERDE
FIELDDELIM
ESCAPEDELIM
MAPKEYDELIM
LINEDELIM
tabellklausuler
Du kan också ange egenskaper för plats, partitionering, klustring, alternativ, kommentarer och användardefinierade egenskaper för den nya tabellen. Varje undersats kan endast anges en gång.
-
En valfri sats för att partitionera tabellen med en delmängd av kolumner.
Anteckning
För hanterade Iceberg-tabeller stöder Azure Databricks inte
PARTITIONED BY
. Använd flytande klustring (CLUSTER BY
) för att optimera datalayouten i stället. Om du utelämnar tabelldefinitionen för Delta-tabeller placerar Azure Databricks partitioneringskolumner i slutet av tabellen, även om du listar dem tidigare i kolumnspecifikationen. -
Gäller för:
Databricks SQL
Databricks Runtime 13.3 och senare
Ett valfritt villkor för att klustra en Delta- eller Iceberg-tabell med en delmängd av kolumner. Se Använda flytande klustring för tabeller. Om du vill klustra andra tabeller använder du
clustered_by_clause
.För Isbergstabeller måste du uttryckligen inaktivera borttagningsvektorer och rad-ID:t när du använder
CLUSTER BY
.
Du kan inte kombinera flytande klustring med
PARTITIONED BY
.clustered_by_clause
Du kan också gruppera tabellen eller varje partition till ett fast antal hash-bucketar med hjälp av en delmängd av kolumnerna.
Den här satsen stöds inte för Delta- eller Iceberg-tabeller. Använd
CLUSTER BY
i stället.KLUSTRAD AV
Anger vilken uppsättning kolumner som varje partition ska klustras med, eller tabellen om ingen partitionering har angetts.
-
En identifierare som refererar till en
column_identifier
i tabellen. Om du anger fler än en kolumn får det inte finnas några dubbletter. Eftersom en klustring fungerar på partitionsnivå får du inte namnge en partitionskolumn även som en klusterkolumn.
-
SORTERAT EFTER
Du kan också behålla en sorteringsordning för rader i en bucket.
sort_column
En kolumn att sortera bucketen efter. Kolumnen får inte vara partitionskolumn. Sorteringskolumner måste vara unika.
ASC eller DESC
Du kan också ange om
sort_column
sorteras i stigande (ASC
) eller fallande (DESC
) ordning. Standardvärdena ärASC
.
IN I NUM_BUCKETS BUCKETS
En INTEGER-literal som anger antalet bucketar som varje partition (eller tabellen om ingen partitionering anges) delas upp i.
PLATS-sökväg [ MED ( CREDENTIAL credential_name ) ]
En valfri sökväg till katalogen där tabelldata lagras, vilket kan vara en sökväg för distribuerad lagring.
path
måste vara en STRING-literal. Om du inte anger någon plats betraktas tabellen som enmanaged table
och Azure Databricks skapar en standardtabellplats.Om du anger en plats blir tabellen en extern tabell.
För tabeller som inte finns i
hive_metastore
katalogen måste tabellenpath
skyddas av en extern plats om inte en giltig lagringsautentiseringsuppgift har angetts.Du kan inte skapa externa tabeller på platser som överlappar platsen för hanterade tabeller.
För Delta-tabeller ärver tabellen sin konfiguration från
LOCATION
om data redan finns på den sökvägen. Därför måste alla angivnaTBLPROPERTIES
,table_specification
ellerPARTITIONED BY
-satser exakt matcha befintliga data på Delta-platsen.För Iceberg-tabeller stöds inte
LOCATION
-villkoret. Utländska isbergstabeller registreras automatiskt när du skapar en utländsk katalog, och du måste skapa hanterade tabeller utan att ange någon plats.-
Anger eller återställer ett eller flera användardefinierade tabellalternativ.
KOMMENTAR table_comment
En textsträng som beskriver tabellen.
-
Du kan också ange en eller flera användardefinierade egenskaper.
STANDARDSORTERING default_collation_name
Gäller för:
Databricks SQL
Databricks Runtime 16.3 och senare
Definierar standardsortering som ska användas för:
-
STRING
kolumner och fält i tabellen -
DEFAULT
uttryck - Kroppen av
CREATE TABLE AS query
CHECK
begränsningar och genererade kolumnuttryck kräver en standardsortering avUTF8_BINARY
.Om det inte anges är standardsortering
UTF8_BINARY
.-
-
gäller för:
Databricks SQL
Databricks Runtime 12.2 LTS och senare
endast Unity Catalog
Lägger till en radfilterfunktion i tabellen. Alla efterföljande frågor från tabellen får en delmängd av raderna där funktionen utvärderas till boolesk TRUE. Detta kan vara användbart för detaljerad åtkomstkontroll där funktionen kan kontrollera identitets- eller gruppmedlemskapen för den anropande användaren för att avgöra om vissa rader ska filtreras.
-
-
Den här valfria satsen fyller i tabellen med hjälp av data från
query
. När du anger enquery
får du inte också ange entable_specification
. Tabellschemat härleds från frågan.Observera att Azure Databricks skriver över den underliggande datakällan med data i indatafrågan för att se till att tabellen som skapas innehåller exakt samma data som indatafrågan.
Exempel
-- 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;