Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Szintaxis
{ { [CREATE OR] REPLACE TABLE | CREATE [EXTERNAL | { TEMP | TEMPORARY } ] 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 }
Mielőtt a Databricks Runtime 16.1 START WITH-t alkalmazná, annak meg kell előznie a INCREMENT BY-et.
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- és Apache Iceberg-táblák esetében támogatott.
REPLACEMegőrzi a táblaelőzményeket , és jogosultságokat, sorszűrőket és oszlopmaszkokat biztosít.Megjegyzés
Az Azure Databricks határozottan javasolja a 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 meg kell adnia egy
LOCATIONzáradékot is. Amikor egy külső táblát elvetnek, aLOCATION-nél található fájlok nem lesznek elvetve.TEMP vagy IDEIGLENES
A következőre vonatkozik:
Databricks SQL
Databricks Runtime 17.3 és újabbFontos
Ez a funkció nyilvános előzetes verzióban van.
Ha meg van adva, létrehoz egy ideiglenes táblát, amelyhez csak az aktuális munkamenet fér hozzá.
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 EXISTSnem létezhet együttREPLACE, ami azt jelenti, hogyCREATE OR REPLACE TABLE IF NOT EXISTSnem engedélyezett.-
A létrehozandó tábla neve. A név nem tartalmazhat időbeli specifikációt vagy beállításspecifikációt. Ha a tábla ideiglenes tábla
table_name, akkor meg lehet adni asessionvagy asystemsessionalapján. Ellenkező esetben, ha a név nincs minősítve, a tábla az aktuális sémában jön létre.A
hive_metastorelétrehozott táblák csak alfanumerikus ASCII-karaktereket és aláhúzásjeleket (INVALID_SCHEMA_OR_RELATION_NAME) tartalmazhatnak.A jéghegytáblákat a Unity Katalógusban kell létrehozni. Nem támogatott az
hive_metastoreIceberg-táblák létrehozása. tábla-meghatározás
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ában, meg kell adnia vagy a
AS queryvagy aLOCATION.-
Az oszlop egyedi neve.
Az oszlopleképezési tulajdonság (
'delta.columnMapping.mode' = 'name') nélküli Delta-táblák oszlopazonosítói nem tartalmazhatnak szóközöket vagy a következő karaktereket:, ; { } ( ) \n \t =.A táblák oszlopazonosítóinak
AVROalá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.A táblák
ICEBERGoszlopazonosítóinak egyedinek, kis- és nagybetűket nem megkülönböztetőnek kell lenniük, és a szabványos SQL-azonosító szabályokat kell követniük. Kerülje a szóközök vagy speciális karakterek használatát, mivel előfordulhat, hogy az összes lekérdezési motor nem támogatja őket. -
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
NULLaz értékeket. Ez a záradék csak Delta- és Iceberg-táblák esetében támogatott.RENDEZÉSI collation_name
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime 16.1 és újabb verziókSTRINGéscolumn_typeopcionálisan megadja az oszlopra vonatkozó sorrendet az összehasonlítási és rendezési műveletekhez. Az alapértelmezett rendezés azdefault_collation_nametábla.MINDIG GENERÁLT ( expr )
A záradék megadásakor az oszlop értékét a megadott
exprérték határozza meg.A táblázatnak
DEFAULT COLLATIONUTF8_BINARYkell lennie.exprA 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áblázatos értékű generátor függvények
- Olyan oszlopok, amelyek nem
UTF8_BINARYtípusú rendezéssel rendelkeznek
Emellett
exprnem tartalmazhat lekérdezést.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 újabbIdentitásoszlopot definiál. Amikor a táblába ír, és nem ad meg értékeket az identitásoszlophoz, a rendszer automatikusan hozzárendel egy egyedi és statisztikailag növekvő értéket (illetve csökkenőt, ha a
stepnegatív). Ez a záradék csak Delta-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
startkezdő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.stepnem 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
ALWAYSnem adhat meg saját értékeket az identitásoszlophoz.A következő műveletek nem támogatottak:
-
PARTITIONED BYazonosító oszlop -
UPDATEazonosító oszlop
Megjegyzés
Az identitásoszlop táblán való deklarálása 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 újabbMeghatároz egy
DEFAULTértéket az oszlophoz, amelyet aINSERT,UPDATEésMERGE ... INSERThasznál, amikor az oszlop nincs meghatározva.Ha nincs megadva alapértelmezett érték, a
DEFAULT NULLalkalmazásra kerül a null értékű oszlopokhoz.default_expressionlehetnek 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áblázatos értékű generátor függvények
Emellett
default_expressionnem tartalmazhat lekérdezést.DEFAULT,CSV,JSONésPARQUETforrások esetében támogatottORC.MEGJEGYZÉS column_comment
Karakterlánc-literál az oszlop leírására.
-
Elsődleges kulcsot vagy idegenkulcs-korlátozást ad hozzá egy tábla oszlopához.
A korlátozások nem támogatottak a
hive_metastorekatalógus tábláiban.Ha ellenőrző korlátozást szeretne hozzáadni egy táblához, használja a következőt ALTER TABLE:
-
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime 12.2 LTS és a Unity Catalog felett csak 
Oszlopmaszk funkciót ad hozzá, amely anonimizálja a bizalmas adatokat. 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ó azonosságát vagy csoporttagságát annak eldöntésére, hogy el kell-e rejteni az értéket.
Ha lecserél egy táblát, és az új tábla ugyanazokat az oszlopneveket tartalmazza, mint az eredeti, akkor a meglévő oszlopmaszkok megmaradnak, még akkor is, ha azok nincsenek explicit módon újradefiniálva. Ez megakadályozza az adatelérési szabályzatok véletlen elvesztését.
-
Információs elsődleges kulcsot vagy információs idegenkulcs-korlátozásokat ad hozzá a táblához.
A kulcsfontosságú korlátozások nem támogatottak a
hive_metastorekatalógus tábláinál.Ha ellenőrző korlátozást szeretne hozzáadni egy táblához, használja a következőt ALTER TABLE:
-
DATA_SOURCE HASZNÁLATA
data_sourcelehet fájlformátum vagy összevont JDBC-adatforrás.A fájlformátumnak a következők egyikének kell lennie:
AVROBINARYFILECSVDELTAICEBERGJSONORCPARQUETTEXT
Az
DELTAvagyICEBERGfájlformátumok esetén meg kell adnia egyLOCATIONfájlt, kivéve, ha a táblakatalógushive_metastore.A következő összevont JDBC-források támogatottak:
POSTGRESQLSQLSERVERMYSQLBIGQUERYNETSUITEORACLEREDSHIFTSNOWFLAKESQLDWSYNAPSESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB
Összevont JDBC-forrás megadásakor a
OPTIONSzáradékot is meg kell adnia a szükséges kapcsolati adatokkal. Az összevont adatforrások lekérdezéséről további információt a JDBC-t használó adatbázisok lekérdezése című témakörben talál.A Databricks Runtime a következő további fájlformátumokat támogatja a táblához:
JDBCLIBSVM- Egy teljesen minősített osztálynév egyéni implementációja
org.apache.spark.sql.sources.DataSourceRegister.
Ha
USINGnincs megadva, az alapértelmezett érték a következőDELTA.A következőkre vonatkozik: Databricks Runtime
A Databricks Runtime támogatja
HIVEHive SerDe-tábla létrehozását. Megadhatja a Hive-specifikusfile_formatésrow_formathasználatát aOPTIONSzáradék segítségével, amely kis- és nagybetűket nem megkülönböztető sztringtérkép. Aoption_keyskövetkezők:FILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
táblázat_feltételek
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.
Megjegyzés
Az Azure Databricks a felügyelt Iceberg-táblák esetén nem támogatja
PARTITIONED BY. Ehelyett használjon folyékony fürtözést (CLUSTER BY) az adatelrendezés optimalizálásához. A Delta-táblák esetében, ha kihagyja a tábladefiníciót, az Azure Databricks particionálási oszlopokat helyez el a tábla végén, még akkor is, ha az oszlop specifikációjában korábban felsorolta őket. -
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime 13.3 és újabb verzióiraOpcionális záradék egy Delta- vagy Iceberg tábla oszlopainak egy részhalmaza alapján történő fürtözéséhez. Lásd: Táblákhoz folyékony klaszterezés használata. Más táblák fürtözéséhez használja ezt:
clustered_by_clause.Iceberg-táblák esetén le kell tiltania a törlési vektorokat és a sorazonosítókat a
CLUSTER BYhasználatakor.Használjon automatikus folyékony fürtözést,
CLUSTER BY AUTOés a Databricks intelligensen választja ki a fürtözési kulcsokat a lekérdezési teljesítmény optimalizálásához.A folyékony fürtözés nem kombinálható a
PARTITIONED BY-val. csoportosító_záradék
Opcionálisan csoportosíthatja a táblát vagy az egyes partíciókat az oszlopok részhalmazával rögzített számú hash vödörbe.
Ez a záradék delta- vagy Iceberg-táblák esetében nem támogatott. A
CLUSTER BYhasználható helyette.FÜRTÖZÖTT
Meghatározza azokat az oszlopokat, amelyek szerint az egyes partíciókat, vagy a táblát fürtösítené, ha partícionálás nincs megadva.
-
Egy azonosító, amely a táblában lévő
column_identifier-ra hivatkozik. Ha egynél több oszlopot ad meg, nem lehetnek ismétlődések. Mivel a különválasztás a partíció szintjén működik, nem nevezhet el egy partícióoszlopot különválasztó oszlopként sem.
-
RENDEZVE
Opcionálisan fenntart egy rendezési sorrendet minden gyűjtő sorához.
sort_column
Egy oszlop, amely szerint rendezheti a tartályt. Az oszlop nem lehet partícióoszlop. A rendezési oszlopoknak egyedinek kell lenniük.
ASC vagy DESC
Megadhatja, hogy növekvő (
sort_column) vagy csökkenő (ASC) sorrendben van-eDESCrendezve. 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 útvonal [ 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.
pathkarakterlánc-literálnak kell lennie. Ha nem ad meg helyet, a rendszer a táblátmanaged tabletekinti, é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
hive_metastorekülső helynekpathkell védenie, hacsak nincs megadva érvényes tárolási hitelesítő adat.Nem hozhat létre külső táblákat olyan helyeken, amelyek átfedésben vannak a felügyelt táblák helyével.
A Delta-táblák esetében a tábla a konfigurációját attól az időponttól örökli, ha az
LOCATIONadott útvonalon már léteznek adatok. Ennek eredményeképpen minden megadottTBLPROPERTIES,table_specificationvagyPARTITIONED BYzáradéknak pontosan meg kell egyeznie a Delta-helyen lévő meglévő adatokkal.Iceberg-táblák esetén a
LOCATIONzáradék nem támogatott. A külföldi Iceberg-táblák automatikusan regisztrálva lesznek egy külföldi katalógus létrehozásakor, és felügyelt Iceberg-táblákat kell létrehoznia hely megadása nélkül.-
Beállít vagy alaphelyzetbe állít egy vagy több felhasználó által megadott táblabeállítást.
MEGJEGYZÉS table_comment
String literál 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.
ALAPÉRTELMEZETT BETŰREND default_collation_name
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime 16.3 és újabbA következőhöz használandó alapértelmezett rendezést határozza meg:
-
STRINGtábla oszlopai és mezői -
DEFAULTkifejezés - A
CREATE TABLE AS querytörzse
CHECKkorlátozásokhoz és a létrehozott oszlopkifejezésekhez aUTF8_BINARYalapértelmezett rendezés szükséges.Ha nincs megadva, az alapértelmezett rendezés abból a sémából származik, amelyben a tábla létrejön.
-
-
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 értéke IGAZ. 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.
Táblázat cseréjekor a meglévő sorszűrők megmaradnak, még akkor is, ha nincsenek explicit módon újradefiniáltak. Ez megakadályozza az adatelérési szabályzatok véletlen elvesztését.
-
-
Ez az opcionális záradék feltölti a táblát a forrásból származó
queryadatokkal. Ha megad egyquery, akkor nem kell megadniatable_specification-t. 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);
-- 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;
> CREATE TEMP TABLE temp_1 (a INT);
> INSERT INTO temp_1 VALUES (1);
> SELECT * FROM temp_1;
1