CREATE TABLE [USING]
A következőkre vonatkozik: Databricks SQL Databricks Runtime
Felügyelt vagy külső táblát határoz meg, opcionálisan adatforrás használatával.
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 |
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 |
WITH { ROW FILTER clause } } [...]
clustered_by_clause
{ CLUSTERED BY ( cluster_column [, ...] )
[ SORTED BY ( { sort_column [ ASC | DESC ] } [, ...] ) ]
INTO num_buckets BUCKETS }
Paraméterek
HELYETTESÍT
Ha meg van adva, lecseréli a táblát és annak tartalmát, ha már létezik. Ez a záradék csak Delta Lake-táblák esetében támogatott.
REPLACE
megőrzi a táblaelőzményeket.Feljegyzés
Az Azure Databricks határozottan javasolja a Delta Lake-táblák elvetése és újbóli létrehozása helyett a használatát
REPLACE
.KÜLSŐ
Ha meg van adva, létrehoz egy külső táblát. Külső tábla létrehozásakor záradékot
LOCATION
is meg kell adnia. Ha egy külső táblát elvet, a fájlokat aLOCATION
program nem fogja elvetni.HA NEM LÉTEZIK
Ha meg van adva, és már létezik ilyen nevű tábla, a rendszer figyelmen kívül hagyja az utasítást.
IF NOT EXISTS
nem lehet együtt létezni,REPLACE
ami azt jelentiCREATE OR REPLACE TABLE IF NOT EXISTS
, hogy nem engedélyezett.-
A létrehozandó tábla neve. A név nem tartalmazhat időbeli specifikációt. Ha a név nincs minősítve, a tábla az aktuális sémában jön létre.
A
hive_metastore
létrehozott táblák csak alfanumerikus ASCII-karaktereket és aláhúzásjeleket (INVALID_SCHEMA_OR_RELATION_NAME) tartalmazhatnak. table_specification
Ez az opcionális záradék határozza meg az oszlopok listáját, azok típusait, tulajdonságait, leírását és oszlopkorlátjait.
Ha nem definiálja az oszlopokat, a táblázatsémát meg kell adnia vagy
AS query
LOCATION
.-
Az oszlop egyedi neve.
A Delta Lake-táblák oszlopazonosítói oszlopleképezési tulajdonság (
'delta.columnMapping.mode' = 'name'
) nélkül nem tartalmazhatnak szóközöket vagy a következő karaktereket:, ; { } ( ) \n \t =
.A tábla oszlopazonosítóinak
AVRO
aláhúzásjellel () vagy Unicode betűvel (_
beleértve a nem ASCII betűket is) kell kezdődniük, és Unicode-betűk, számjegyek és aláhúzásjelek kombinációjával kell követni. -
Az oszlop adattípusát adja meg. Az Azure Databricks által támogatott adattípusokat nem minden adatforrás támogatja.
NOT NULL
Ha meg van adva, az oszlop nem fogadja el
NULL
az értékeket. Ez a záradék csak Delta Lake-táblák esetében támogatott.GENERÁLT ALWAYS AS ( expr )
A záradék megadásakor az oszlop értékét a megadott
expr
érték határozza meg.expr
A tábla literálokból, oszlopazonosítókból és determinisztikus, beépített SQL-függvényekből vagy operátorokból állhat, kivéve:- Függvények összesítése
- Elemzési ablakfüggvények
- Rangsorolási ablakfüggvények
- Táblaértékelő generátorfüggvények
GENERÁLVA { ALWAYS | ALAPÉRTELMEZÉS SZERINT } IDENTITÁSKÉNT [ ( [ KEZDÉS ] [ NÖVEKMÉNY LÉPÉSENKÉNT ] ) ] ]
A következőkre vonatkozik: Databricks SQL Databricks Runtime 10.4 LTS és újabb
Identitásoszlopot definiál. Amikor a táblába ír, és nem ad meg értékeket az identitásoszlophoz, a rendszer automatikusan egyedi és statisztikailag növekvő (negatív)
step
értéket rendel hozzá. Ez a záradék csak Delta Lake-táblák esetében támogatott. Ez a záradék csak BIGINT adattípusú oszlopokhoz használható.Az automatikusan hozzárendelt értékek a következővel
start
kezdődnek és haladnak a következővelstep
: . A hozzárendelt értékek egyediek, de nem garantáltan egybefüggőek. Mindkét paraméter megadása nem kötelező, az alapértelmezett érték pedig 1.step
nem lehet0
.Ha az automatikusan hozzárendelt értékek túllépik az identitásoszlop típusának tartományát, a lekérdezés sikertelen lesz.
Használat esetén
ALWAYS
nem adhat meg saját értékeket az identitásoszlophoz.A következő műveletek nem támogatottak:
PARTITIONED BY
identitásoszlopUPDATE
identitásoszlop
Feljegyzés
Ha egy identitásoszlopot deklarál egy Delta-táblában, azzal letiltja az egyidejű tranzakciókat. Csak olyan esetekben használjon identitásoszlopokat, amikor nincs szükség egyidejű írásra a céltáblába.
ALAPÉRTELMEZETT default_expression
A következőkre vonatkozik: Databricks SQL Databricks Runtime 11.3 LTS és újabb
DEFAULT
Meghatározza a használtINSERT
oszlop értékét,UPDATE
ésMERGE ... INSERT
ha az oszlop nincs megadva.Ha nincs megadva
DEFAULT NULL
alapértelmezett érték a null értékű oszlopokhoz.default_expression
lehetnek literálok, és beépített SQL-függvények vagy operátorok, kivéve:- Függvények összesítése
- Elemzési ablakfüggvények
- Rangsorolási ablakfüggvények
- Táblaértékelő generátorfüggvények
Emellett
default_expression
nem tartalmazhat alqueryt.DEFAULT
a ,JSON
,PARQUET
ésORC
a források esetébenCSV
támogatott.MEGJEGYZÉS column_comment
Sztringkonstans az oszlop leírásához.
-
Elsődleges vagy idegenkulcs-korlátozást ad hozzá egy Delta Lake-tábla oszlopához.
A katalógus táblái nem támogatják a
hive_metastore
korlátozásokat.Ha ellenőrző korlátozást szeretne hozzáadni egy Delta Lake-táblához, használja az ALTER TABLE függvényt.
-
A következőkre vonatkozik: Databricks SQL Databricks Runtime 12.2 LTS és a Unity Catalog felett csak
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
Oszlopmaszk-függvényt ad hozzá a bizalmas adatok anonimizálásához. Az oszlop minden további lekérdezése megkapja a függvény kiértékelésének eredményét az oszlopon az oszlop eredeti értéke helyett. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, ahol a függvény megvizsgálhatja az invokáló felhasználó identitását vagy csoporttagságát, hogy eldöntse, újra ki kívánja-e használni az értéket.
-
Információs elsődleges kulcsot vagy információs idegenkulcs-korlátozásokat ad hozzá a Delta Lake-táblához.
A katalógus táblái nem támogatják a
hive_metastore
fő korlátozásokat.Ha ellenőrző korlátozást szeretne hozzáadni egy Delta Lake-táblához, használja az ALTER TABLE függvényt.
-
DATA_SOURCE HASZNÁLATA
A tábla fájlformátuma.
data_source
A következő egyiknek kell lennie:AVRO
BINARYFILE
CSV
DELTA
JSON
ORC
PARQUET
TEXT
A Databricks Runtime a következő további fájlformátumokat támogatja a táblához:
JDBC
LIBSVM
- a . egyéni implementációjának
org.apache.spark.sql.sources.DataSourceRegister
teljes osztályneve.
Ha
USING
nincs megadva, az alapértelmezett érték a következőDELTA
.A táblázatkatalógus kivételével a
data_source
DELTA
táblázatkatalógusthive_metastore
is meg kell adniaLOCATION
.A következőkre vonatkozik: Databricks Runtime
HIVE
a Databricks Runtime-ban támogatott Hive SerDe-tábla létrehozása. Megadhatja a Hive-specifikusfile_format
és aOPTIONS
záradékot, amely egy kis- ésrow_format
nagybetűket megkülönböztető sztringtérkép. Aoption_keys
következők:FILEFORMAT
INPUTFORMAT
OUTPUTFORMAT
SERDE
FIELDDELIM
ESCAPEDELIM
MAPKEYDELIM
LINEDELIM
table_clauses
Opcionálisan megadhatja az új tábla helyét, particionálását, fürtözését, beállításait, megjegyzéseit és felhasználó által definiált tulajdonságait. Minden al záradék csak egyszer adható meg.
-
Nem kötelező záradék a tábla oszlopok egy részhalmaza szerinti particionálásához.
Feljegyzés
Ha nem határoz meg Delta-táblát, a particionálási oszlopok akkor is a tábla végén lesznek elhelyezve, ha azokat korábban definiálták az oszlop specifikációjában. Fontolja meg a
PARTITIONED BY
Delta-táblák helyett a használatátCLUSTER BY
. -
A következőkre vonatkozik: Databricks SQL Databricks Runtime 13.3 és újabb verziók
Nem kötelező záradék egy Delta-tábla oszlopok egy részhalmaza alapján történő fürtözéséhez. Más táblák fürtözéséhez használja a következőt
clustered_by_clause
: .A Delta Lake folyékony fürtözés nem kombinálható a
PARTITIONED BY
. clustered_by_clause
A tábla vagy az egyes partíciók fürtözhetők rögzített számú kivonatgyűjtőbe az oszlopok egy részhalmazával.
A fürtszolgáltatás nem támogatott a Delta Lake-táblák esetében.
FÜRTÖZÖTT
Megadja azokat az oszlopokat, amelyekkel az egyes partíciókat fürtözheti, vagy a táblát, ha nincs megadva particionálás.
-
A táblában egy azonosítóra hivatkozik
column_identifier
. Ha egynél több oszlopot ad meg, nem lehetnek ismétlődések. Mivel a fürtszolgáltatás a partíció szintjén működik, nem nevezhet el egy partícióoszlopot fürtoszlopként sem.
-
RENDEZÉS SZERINT
Igény szerint rendezési sorrendet tart fenn a gyűjtőben lévő sorokhoz.
sort_column
Egy oszlop, amely alapján rendezheti a gyűjtőt. Az oszlop nem lehet partícióoszlop. A rendezési oszlopoknak egyedinek kell lenniük.
ASC vagy DESC
Megadhatja, hogy növekvő (
ASC
) vagy csökkenő (DESC
) sorrendben van-esort_column
rendezve. Az alapértelmezett értékek a következőASC
: .
NUM_BUCKETS GYŰJTŐKBE
Egy EGÉSZ SZÁM konstans, amely megadja, hogy hány gyűjtőbe vannak osztva az egyes partíciók (vagy a tábla, ha nincs megadva particionálás).
LOCATION path [ WITH ( CREDENTIAL credential_name ) ]
A táblaadatok tárolására szolgáló könyvtár opcionális elérési útja, amely az elosztott tároló elérési útja lehet.
path
KARAKTERLÁNC-literálnak kell lennie. Ha nem ad meg helyet, a rendszer a táblátmanaged table
tekinti, és az Azure Databricks létrehoz egy alapértelmezett táblahelyet.A hely megadása külső táblává teszi a táblát.
A katalógusban nem található táblák esetében a táblát
path
külső helynek kell védenie, hacsak nincs megadva érvényes tárolási hitelesítő adat.hive_metastore
Nem hozhat létre külső táblákat olyan helyeken, amelyek átfedésben vannak a felügyelt táblák helyével.
Delta Lake-tábla esetén a táblakonfiguráció a
LOCATION
jelen lévő adatoktól öröklődik. Ezért ha a Delta Lake-táblákhoz bármilyenTBLPROPERTIES
,table_specification
vagyPARTITIONED BY
záradék van megadva, azoknak pontosan meg kell egyezniük a Delta Lake helyadataival.-
Beállít vagy alaphelyzetbe állít egy vagy több felhasználó által megadott táblabeállítást.
MEGJEGYZÉS table_comment
Sztringkonstans a táblázat leírásához.
-
Igény szerint beállíthat egy vagy több felhasználó által definiált tulajdonságot.
WITH ROW FILTER záradék
A következőkre vonatkozik: Databricks SQL Databricks Runtime 12.2 LTS és a Unity Catalog felett csak
Sorszűrő függvényt ad hozzá a táblához. A tábla minden további lekérdezése megkapja azoknak a soroknak a részhalmazát, amelyekben a függvény logikai IGAZ értéket ad ki. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, ahol a függvény megvizsgálhatja a behívó felhasználó identitását vagy csoporttagságát, hogy eldöntse, szűr-e bizonyos sorokat.
-
-
Ez az opcionális záradék feltölti a táblát a forrásból származó
query
adatokkal. Ha megad egy értéketquery
, akkor nem szabad megadnia egytable_specification
. A táblaséma a lekérdezésből származik.Vegye figyelembe, hogy az Azure Databricks felülírja a mögöttes adatforrást a bemeneti lekérdezés adataival, hogy a tábla létrehozása pontosan ugyanazokat az adatokat tartalmazza, mint a bemeneti lekérdezés.
Példák
-- Creates a Delta table
> CREATE TABLE student (id INT, name STRING, age INT);
-- 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));