Megosztás a következőn keresztül:


CREATE TABLE [HASZNÁLAT]

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet 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.

    REPLACE Megő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 LOCATION záradékot is. Amikor egy külső táblát elvetnek, a LOCATION-nél található fájlok nem lesznek elvetve.

  • TEMP vagy IDEIGLENES

    A következőre vonatkozik:yes Databricks SQL check mark yes Databricks Runtime 17.3 és újabb

    Fontos

    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 EXISTS nem létezhet együtt REPLACE, ami azt jelenti, hogy CREATE OR REPLACE TABLE IF NOT EXISTS nem engedélyezett.

  • table_name

    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 a session vagy a systemsession alapjá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_metastore lé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_metastore Iceberg-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 query vagy a LOCATION.

    • column_identifier

      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 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.

      A táblák ICEBERG oszlopazonosí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.

    • oszlop_típus

      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- és Iceberg-táblák esetében támogatott.

    • RENDEZÉSI collation_name

      A következőkre vonatkozik: Databricks SQL igen jelöléssel ellátva Databricks Runtime 16.1 és újabb verziók

      STRINGéscolumn_type opcionálisan megadja az oszlopra vonatkozó sorrendet az összehasonlítási és rendezési műveletekhez. Az alapértelmezett rendezés az default_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_BINARY kell lennie.

      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:

      Emellett expr nem 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:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet 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 hozzárendel egy egyedi és statisztikailag növekvő értéket (illetve csökkenőt, ha a step negatí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 start kezdődnek és haladnak a következővel step: . 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 lehet 0.

      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 azonosító oszlop
      • UPDATE azonosí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:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 11.3 LTS és újabb

      Meghatároz egy DEFAULT értéket az oszlophoz, amelyet a INSERT, UPDATE és MERGE ... INSERT használ, amikor az oszlop nincs meghatározva.

      Ha nincs megadva alapértelmezett érték, a DEFAULT NULL alkalmazásra kerül a null értékű oszlopokhoz.

      default_expression lehetnek literálok, és beépített SQL-függvények vagy operátorok, kivéve:

      Emellett default_expression nem tartalmazhat lekérdezést.

      DEFAULT, CSV, JSON és PARQUET források esetében támogatott ORC.

    • MEGJEGYZÉS column_comment

      Karakterlánc-literál az oszlop leírására.

    • column_constraint

      Elsődleges kulcsot vagy idegenkulcs-korlátozást ad hozzá egy tábla oszlopához.

      A korlátozások nem támogatottak a hive_metastore kataló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:

    • MASZK záradék

      A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetetDatabricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 12.2 LTS és a Unity Catalog felett csak jelölje be az igennel jelölt jelölőnégyzetet

      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.

    • táblázat-korlátozás

      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_metastore kataló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_source lehet fájlformátum vagy összevont JDBC-adatforrás.

    A fájlformátumnak a következők egyikének kell lennie:

    • AVRO
    • BINARYFILE
    • CSV
    • DELTA
    • ICEBERG
    • JSON
    • ORC
    • PARQUET
    • TEXT

    Az DELTA vagy ICEBERG fájlformátumok esetén meg kell adnia egy LOCATION fájlt, kivéve, ha a táblakatalógus hive_metastore.

    A következő összevont JDBC-források támogatottak:

    • POSTGRESQL
    • SQLSERVER
    • MYSQL
    • BIGQUERY
    • NETSUITE
    • ORACLE
    • REDSHIFT
    • SNOWFLAKE
    • SQLDW
    • SYNAPSE
    • SALESFORCE
    • SALESFORCE_DATA_CLOUD
    • TERADATA
    • WORKDAY_RAAS
    • MONGODB

    Összevont JDBC-forrás megadásakor a OPTIONS zá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:

    • JDBC
    • LIBSVM
    • Egy teljesen minősített osztálynév egyéni implementációja org.apache.spark.sql.sources.DataSourceRegister.

    Ha USING nincs megadva, az alapértelmezett érték a következő DELTA.

    A következőkre vonatkozik: Databricks Runtime

    A Databricks Runtime támogatja HIVE Hive SerDe-tábla létrehozását. Megadhatja a Hive-specifikus file_format és row_format használatát a OPTIONS záradék segítségével, amely kis- és nagybetűket nem megkülönböztető sztringtérkép. A option_keys következők:

    • FILEFORMAT
    • INPUTFORMAT
    • OUTPUTFORMAT
    • SERDE
    • FIELDDELIM
    • ESCAPEDELIM
    • MAPKEYDELIM
    • LINEDELIM
  • 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.

    • PARTICIONÁLT

      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.

    • CLUSTER BY

      A következőkre vonatkozik: igen bejelölt Databricks SQL igen bejelölt Databricks Runtime 13.3 és újabb verzióira

      Opcioná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 BY haszná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 BY haszná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.

        • cluster_column

          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-e DESC 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 ú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. path karakterlánc-literálnak kell lennie. Ha nem ad meg helyet, a rendszer a táblát managed 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 hive_metastore kü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 LOCATION adott útvonalon már léteznek adatok. Ennek eredményeképpen minden megadott TBLPROPERTIES, table_specificationvagy PARTITIONED BY záradéknak pontosan meg kell egyeznie a Delta-helyen lévő meglévő adatokkal.

      Iceberg-táblák esetén a LOCATION zá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ÁSOK

      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.

    • TBLPROPERTIES

      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:igen Databricks SQL igen Databricks Runtime 16.3 és újabb

      A következőhöz használandó alapértelmezett rendezést határozza meg:

      • STRING tábla oszlopai és mezői
      • DEFAULT kifejezés
      • A CREATE TABLE AS query törzse

      CHECK korlátozásokhoz és a létrehozott oszlopkifejezésekhez a UTF8_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.

    • és ROW FILTER záradék

      A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetetDatabricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 12.2 LTS és a Unity Catalog felett csak jelölje be az igennel jelölt jelölőnégyzetet

      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.

  • AS-lekérdezés

    Ez az opcionális záradék feltölti a táblát a forrásból származó queryadatokkal. Ha megad egy query, akkor nem kell megadnia table_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