Share via


CREATE TABLE [USING]

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.

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 a megadott érték 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 a LOCATION 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, REPLACEami azt jelenti CREATE OR REPLACE TABLE IF NOT EXISTS , hogy nem engedélyezett.

  • table_name

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

    • column_identifier

      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 tartalmazhatják a " (szóköz), ",", ";", "{", "}", "(", ")" karaktereket. 'n', 't', and '='.

      A tábla oszlopazonosítóinak AVRO "" vagy Unicode betűvel kell kezdődniük (beleértve a nem ASCII betűket is), és a "", Unicode-betűk és számjegyek kombinációját kell követni.

    • column_type

      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:

      Emellett expr nem tartalmazhat alqueryt.

    • 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 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ő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 identitásoszlop
      • UPDATE 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: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

      DEFAULT Meghatározza a használt INSERToszlop értékét, UPDATEés MERGE ... 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:

      Emellett default_expression nem tartalmazhat alqueryt.

      DEFAULTa , JSON, PARQUETés ORC a források esetében CSVtámogatott.

    • MEGJEGYZÉS column_comment

      Sztringkonstans az oszlop leírásához.

    • column_constraint

      Fontos

      Ez a funkció a nyilvános előzetes verzióban érhető el.

      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.

    • MASZK záradék

      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 12.2 LTS és a Unity Catalog felett csak jelölje be az igennel jelölt jelölőnégyzetet

      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 jövőbeli 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, amelyek során a függvény megvizsgálhatja az invokáló felhasználó identitását és/vagy csoporttagságát annak eldöntéséhez, hogy újra ki kívánja-e használni az értéket.

    • table_constraint

      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.DataSourceRegisterteljes 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_sourceDELTA táblázatkatalógust hive_metastoreis 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-specifikus file_format és a OPTIONS záradékot, amely egy kis- és row_format nagybetűket megkülönböztető sztringtérkép. A option_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.

    • PARTICIONÁLT

      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.

    • FÜRT A KÖVETKEZŐ SZERINT:

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

        • cluster_column

          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-e sort_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á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 path külső helynekkell 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ármilyen TBLPROPERTIES, table_specificationvagy PARTITIONED BY záradék van megadva, azoknak pontosan meg kell egyezniük a Delta Lake helyadataival.

    • LEHETŐSÉGEK

      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.

    • TBLPROPERTIES

      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: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 12.2 LTS és a Unity Catalog felett csak jelölje be az igennel jelölt jelölőnégyzetet

      Fontos

      Ez a funkció a nyilvános előzetes verzióban érhető el.

      Sorszűrő függvényt ad hozzá a táblához. A tábla minden jövőbeli lekérdezése megkapja annak a sornak a részhalmazát, amelynek a függvénye igaz logikai értéket ad ki. Ez hasznos lehet részletes hozzáférés-vezérlési célokra, amelyek során a függvény megvizsgálhatja a meghívó felhasználó identitását és/vagy csoporttagságát, hogy eldöntse, szűr-e bizonyos sorokat.

  • 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 értéket query , akkor nem szabad megadnia egy table_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 '/mnt/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));