Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Databricks Runtime
Definuje spravovanou nebo externí tabulkuvolitelně pomocí zdroje dat.
Syntaxe
{ { [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 }
Před Databricks Runtime 16.1 musí START WITH předcházet INCREMENT BY.
Parametry
NAHRADIT
Pokud je tato hodnota zadaná, nahradí tabulku a její obsah, pokud již existuje. Tato klauzule je podporována pouze pro tabulky Delta a Apache Iceberg.
REPLACEzachovává historii tabulek a udělená oprávnění, filtry řádků a masky sloupců.Poznámka:
Azure Databricks důrazně doporučuje místo vyřazování a opětovného vytváření tabulek používat
REPLACE.EXTERNÍ
Pokud je zadáno, vytvoří externí tabulku. Při vytváření externí tabulky musíte také zadat klauzuli
LOCATION. Když dojde k vyřazení externí tabulky, soubory vLOCATIONse nezahodí.POKUD NEEXISTUJE
Pokud je zadána a tabulka se stejným názvem již existuje, příkaz je ignorován.
IF NOT EXISTSnemůže existovat společně sREPLACE, což znamená, žeCREATE OR REPLACE TABLE IF NOT EXISTSnení povoleno.-
Název tabulky, kterou chcete vytvořit. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností. Pokud název není kvalifikovaný, vytvoří se tabulka v aktuálním schématu.
Tabulky vytvořené v
hive_metastoremůžou obsahovat pouze alfanumerické znaky a podtržítka (INVALID_SCHEMA_OR_RELATION_NAME).Tabulky Iceberg musí být vytvořeny v katalogu Unity. Vytváření tabulek Iceberg v tabulkách
hive_metastorenení podporováno. specifikace_tabulek
Tato volitelná klauzule definuje seznam sloupců, jejich typů, vlastností, popisů a omezení sloupců.
Pokud nedefinujete sloupce schématu tabulky, je nutné zadat
AS queryneboLOCATION.-
Jedinečný název sloupce
Identifikátory sloupců tabulek Delta bez vlastnosti mapování sloupců (
'delta.columnMapping.mode' = 'name') nesmí obsahovat mezery ani následující znaky:, ; { } ( ) \n \t =.Identifikátory
AVROsloupců tabulek musí začínat podtržítkem (_) nebo písmenem Unicode (včetně písmen jiného typu než ASCII) a za ním musí následovat kombinace písmen Unicode, číslic a podtržítka.Identifikátory
ICEBERGsloupců tabulek musí být jedinečné, nerozlišují velká a malá písmena a dodržují standardní pravidla identifikátorů SQL. Nepoužívejte mezery nebo speciální znaky, protože je nemusí podporovat všechny dotazovací moduly. -
Určuje datový typ sloupce. Ne všechny datové typy podporované službou Azure Databricks jsou podporovány všemi zdroji dat.
NOT NULL
Pokud je zadaný, sloupec nepřijímá
NULLhodnoty. Tato klauzule se podporuje jenom pro tabulky Delta a Iceberg.KOLAT collation_name
platí pro:
Databricks SQL
Databricks Runtime 16.1 a vyššíPro
STRINGcolumn_typevolitelně pojmenovává kolaci, která se má použít pro operace porovnání a řazení v tomto sloupci. Výchozí řazení je tabulkadefault_collation_name.VYGENEROVÁNO VŽDY JAKO ( výraz )
Při zadání této klauzule je hodnota tohoto sloupce určena zadaným
expr.DEFAULT COLLATIONtabulky musí býtUTF8_BINARY.exprse můžou skládat z literálů, identifikátorů sloupců v tabulce a deterministických integrovaných funkcí nebo operátorů SQL s výjimkou:- Agregační funkce
- Analytické okenní funkce
- funkce okna Řazení
- Funkce generující hodnoty tabulek
- Sloupce s jiným tříděním než
UTF8_BINARY
Také
exprnesmí obsahovat žádný poddotaz.VYGENEROVÁNO { ALWAYS | VE VÝCHOZÍM REŽIMU } AS IDENTITY [ ( [ START WITH start ] [ INCREMENT BY step ] ) ]
Platí pro:
Databricks SQL
Databricks Runtime 10.4 LTS a novějšíDefinuje sloupec s identitou. Při zápisu do tabulky, pokud nezadáte hodnoty pro sloupec identity, bude automaticky přiřazena jedinečná hodnota, která se statisticky zvyšuje (nebo snižuje, pokud je
stepzáporné). Tato klauzule je podporována pouze pro tabulky Delta. Tuto klauzuli lze použít pouze pro sloupce s datovým typem BIGINT.Automaticky přiřazené hodnoty začínají
starta zvyšují se ostep. Přiřazené hodnoty jsou jedinečné, ale nejsou zaručené, že budou souvislé. Oba parametry jsou volitelné a výchozí hodnota je 1.stepnemůže být0.Pokud jsou automaticky přiřazené hodnoty nad rámec rozsahu typu sloupce identity, dotaz selže.
Při použití
ALWAYSnemůžete pro sloupec identity zadat vlastní hodnoty.Následující operace nejsou podporovány:
-
PARTITIONED BYidentifikační sloupec -
UPDATEidentifikační sloupec
Poznámka:
Deklarace sloupce identity v tabulce zakáže souběžné transakce. Sloupce identity používejte jenom v případech, kdy nejsou vyžadovány souběžné zápisy do cílové tabulky.
-
DEFAULT výchozí_výraz
Platí pro:
Databricks SQL
Databricks Runtime 11.3 LTS a novějšíDefinuje hodnotu
DEFAULTpro sloupec, který se používá proINSERT,UPDATEaMERGE ... INSERT, pokud sloupec není zadaný.Pokud není zadán žádný výchozí
DEFAULT NULLse použije pro sloupce s možnou hodnotou null.default_expressionmohou se skládat z literálů a integrovaných funkcí nebo operátorů SQL s výjimkou:- Agregační funkce
- Analytické okenní funkce
- funkce okna Řazení
- Funkce generující hodnoty tabulek
Také
default_expressionnesmí obsahovat žádný poddotaz.DEFAULTpodporuje se proCSV,JSONPARQUET, aORCzdroje.KOMENTÁŘ column_comment
Řetězcový literál popis sloupce.
-
Přidá omezení primárního klíče nebo cizího klíče do sloupce v tabulce.
Omezení nejsou podporována pro tabulky v katalogu
hive_metastore.Chcete-li přidat omezení kontroly do tabulky, použijte ALTER TABLE.
-
platí pro:
Databricks SQL
Databricks Runtime 12.2 LTS a vyšší,
Unity Catalog.Přidá funkci masky sloupce pro anonymizaci citlivých dat. Všechny následné dotazy z tohoto sloupce obdrží výsledek vyhodnocení této funkce místo původní hodnoty sloupce. To může být užitečné pro účely podrobného řízení přístupu, kde může funkce zkontrolovat identitu nebo členství ve skupině vyvolávajícího uživatele a rozhodnout se, zda by měla být hodnota redigována.
Pokud nahrazujete tabulku a nová tabulka obsahuje stejné názvy sloupců jako původní, zachovají se všechny existující masky sloupců, i když nejsou explicitně předdefinované. Tím zabráníte náhodné ztrátě zásad přístupu k datům.
-
Přidá do tabulky omezení informačního primárního klíče nebo informačního cizího klíče.
U tabulek v katalogu
hive_metastorenejsou podporována klíčová omezení.Chcete-li přidat omezení kontroly do tabulky, použijte ALTER TABLE.
-
POUŽITÍ data_source
data_sourcemůže být buď formát souboru, nebo federovaný zdroj dat JDBC.Formát souboru musí být jeden z následujících:
AVROBINARYFILECSVDELTAICEBERGJSONORCPARQUETTEXT
Pro jakýkoli jiný formát souboru než
DELTAneboICEBERG, musíte také zadatLOCATION, pokud katalog tabulek neníhive_metastore.Podporují se následující federované zdroje JDBC:
POSTGRESQLSQLSERVERMYSQLBIGQUERYNETSUITEORACLEREDSHIFTSNOWFLAKESQLDWSYNAPSESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB
Při zadávání federovaného zdroje JDBC musíte také zadat
OPTIONSklauzuli s potřebnými informacemi o připojení. Další informace o dotazování federovaných zdrojů dat najdete v tématu Dotazování databází pomocí JDBC .Databricks Runtime podporují následující další formáty souborů, které se mají použít pro tabulku:
JDBCLIBSVM- plně kvalifikovaný název třídy vlastní implementace
org.apache.spark.sql.sources.DataSourceRegister.
Pokud
USINGje vynechán, výchozí hodnota jeDELTA.Toto se vztahuje na: Databricks Runtime
Podporuje se vytvoření tabulky Hive SerDe pomocí
HIVEv Databricks Runtime. Můžete zadat Hive-specifickéfile_formatarow_formatpomocí klauzuleOPTIONS, což je mapa řetězců bez rozlišování malých a velkých písmen. Jedná se ooption_keys:FILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
tabulkové klauzule
Volitelně můžete zadat umístění, dělení, clustering, možnosti, komentáře a vlastnosti definované uživatelem pro novou tabulku. Každou dílčí klauzuli lze zadat pouze jednou.
-
Volitelná klauzule pro rozdělení tabulky podle podmnožiny sloupců.
Poznámka:
U spravovaných tabulek Iceberg, Azure Databricks nepodporuje
PARTITIONED BY. K optimalizaci rozložení dat použijte liquid clustering (CLUSTER BY). Pokud u tabulek Delta vynecháte definici tabulky, Azure Databricks umístí sloupce dělení na konec tabulky, i když je vypíšete dříve ve specifikaci sloupce. -
Platí pro:
Databricks SQL
Databricks Runtime 13.3 a vyššíVolitelná klauzule pro seskupení tabulky Delta nebo Iceberg podle podmnožiny sloupců. Viz Použití metody 'liquid clustering' pro tabulky. Pokud chcete seskupit jiné tabulky, použijte
clustered_by_clause.U tabulek Iceberg je nutné explicitně zakázat vektory odstranění a ID řádků při použití
CLUSTER BY.Pomocí automatického liquid clusteringu s
CLUSTER BY AUTOa Databricks inteligentně vybírá klíče seskupování pro optimalizaci výkonu dotazů.Nemůžete kombinovat shlukování kapalin s
PARTITIONED BY. shlukováno_podle_klauzule
Volitelně seskupte tabulku nebo každou část do pevného počtu hashovacích košů pomocí podmnožiny sloupců.
Tato klauzule není podporovaná pro tabulky Delta ani Iceberg. Místo toho použijte
CLUSTER BY.SEŘAZENO PODLE
Určuje sadu sloupců, podle kterých se mají jednotlivé oddíly seskupit, nebo tabulku, pokud není zadáno žádné dělení.
-
Identifikátor odkazující na
column_identifierv tabulce. Pokud zadáte více než jeden sloupec, nesmí existovat žádné duplicity. Vzhledem k tomu, že shlukování funguje na úrovni partyce, nesmíte sloupec partyce pojmenovat i jako sloupec clusteru.
-
SEŘAZENO PODLE
Volitelně udržuje pořadí řazení řádků v bloku.
sort_column
Sloupec, podle kterého chcete kontejner seřadit. Sloupec nesmí být sloupcem pro oddíly. Řadicí sloupce musí být jedinečné.
ASC nebo DESC
Volitelně určuje, jestli
sort_columnje seřazený vzestupně (ASC) nebo sestupně (DESC). Výchozí hodnoty jsouASC.
INTO num_buckets BUCKETS
Literál INTEGER určující počet košů, do kterých se rozdělí každá partice (nebo tabulka, pokud není zadáno žádné particionování).
CESTA UMÍSTĚNÍ [ WITH ( CREDENTIAL credential_name ) ]
Volitelná cesta k adresáři, kde jsou uložena data tabulky, což může být cesta v distribuovaném úložišti.
pathmusí být textový literál. Pokud nezadáte žádné umístění, považuje se tabulka zamanaged tablea Azure Databricks vytvoří výchozí umístění tabulky.Uvedení umístění tím vytvoří z tabulky externí tabulku.
Pro tabulky, které se nenachází v katalogu
hive_metastore, musí být tabulkypathchráněny externím umístěním, pokud nejsou zadány platné přihlašovací údaje úložiště.Nelze vytvořit externí tabulky v umístěních, která se překrývají s umístěním spravovaných tabulek.
U tabulek Delta tabulka zdědí svou konfiguraci z
LOCATION, pokud již na této cestě existují data. V důsledku toho musí jakékoliv zadanéTBLPROPERTIES,table_specificationneboPARTITIONED BYklauzule přesně odpovídat existujícím datům v umístění Delta.U tabulek Iceberg se
LOCATIONklauzule nepodporuje. Při vytváření cizího katalogu se automaticky zaregistrují cizí tabulky Iceberg a musíte vytvořit spravované tabulky Iceberg bez zadání umístění.-
Nastaví nebo obnoví jednu nebo více uživatelsky definovaných možností tabulky.
TABLE_COMMENT KOMENTÁŘ
Řetězcový literál popisující tabulku.
-
Volitelně nastaví jednu nebo více uživatelem definovaných vlastností.
výchozí kolace default_collation_name
Platí pro:
Databricks SQL
Databricks Runtime 16.3 a vyššíDefinuje výchozí kolaci, která se má použít pro:
-
STRINGsloupce a pole tabulky - výraz
DEFAULT - Tělo
CREATE TABLE AS query
CHECKomezení a vygenerované výrazy sloupců vyžadují výchozí kolaciUTF8_BINARY.Pokud není zadáno, výchozí kolace je odvozena ze schématu, ve kterém je tabulka vytvořena.
-
-
platí pro:
Databricks SQL
Databricks Runtime 12.2 LTS a vyšší,
Unity Catalog.Přidá do tabulky funkci filtru řádků. Všechny následné dotazy k této tabulce obdrží podmnožinu řádků, ve kterých se funkce vyhodnotí jako PRAVDA. To může být užitečné pro jemné řízení přístupu, kdy funkce může zkontrolovat identitu nebo členství ve skupině vyvolávajícího uživatele a rozhodnout se, jestli se mají určitě řádky filtrovat.
Pokud nahrazujete tabulku, zachovají se všechny existující filtry řádků, i když nejsou explicitně předdefinované. Tím zabráníte náhodné ztrátě zásad přístupu k datům.
-
AS Dotaz
Tato volitelná klauzule naplní tabulku pomocí dat z
query. Pokud zadátequery, nesmíte také zadattable_specification. Schéma tabulky je odvozeno z dotazu.Všimněte si, že Azure Databricks přepíše podkladový zdroj dat dat vstupním dotazem, aby se zajistilo, že tabulka bude obsahovat přesně stejná data jako vstupní dotaz.
Příklady
-- 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;