SKAPA TABELL [ANVÄNDA]

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Definierar en hanterad eller extern tabell, om du vill använda en datakälla.

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 }

Parametrar

  • ERSÄTTA

    Om det anges ersätter tabellen och dess innehåll om den redan finns. Den här satsen stöds endast för Delta Lake-tabeller.

    REPLACEbevarar tabellhistoriken.

    Kommentar

    Azure Databricks rekommenderar starkt att du använder REPLACE i stället för att släppa och återskapa Delta Lake-tabeller.

  • EXTERNA

    Om det anges skapar du en extern tabell. När du skapar en extern tabell måste du också ange en LOCATION sats. När en extern tabell tas bort tas inte filerna LOCATION bort.

  • OM INTE FINNS

    Om det anges och det redan finns en tabell med samma namn ignoreras -instruktionen.

    IF NOT EXISTS kan inte samexistera med REPLACE, vilket innebär att CREATE OR REPLACE TABLE IF NOT EXISTS inte tillåts.

  • Table_name

    Namnet på tabellen som ska skapas. Namnet får inte innehålla någon temporal specifikation. Om namnet inte är kvalificerat skapas tabellen i det aktuella schemat.

    Tabeller som skapas i hive_metastore får bara innehålla alfanumeriska ASCII-tecken och understreck (INVALID_SCHEMA_OR_RELATION_NAME).

  • table_specification

    Den här valfria satsen definierar listan över kolumner, deras typer, egenskaper, beskrivningar och kolumnbegränsningar.

    Om du inte definierar kolumner måste du ange antingen AS query eller LOCATION.

    • column_identifier

      Ett unikt namn för kolumnen.

      Kolumnidentifierare för Delta Lake-tabeller utan kolumnmappningsegenskap ('delta.columnMapping.mode' = 'name') får inte innehålla tecknen ' (blanksteg), ',', ';', '{', '}', '(', ')'. 'n', 't' och '='.

      Kolumnidentifierare för AVRO tabellen måste börja med "" eller en Unicode-bokstav (inklusive icke-ASCII-bokstäver) och följas av en kombination av "", Unicode-bokstäver och siffror.

    • column_type

      Anger kolumnens datatyp. Alla datatyper som stöds av Azure Databricks stöds inte av alla datakällor.

    • INTE NULL

      Om det anges accepterar NULL kolumnen inte värden. Den här satsen stöds endast för Delta Lake-tabeller.

    • GENERERAS ALLTID SOM ( uttr )

      När du anger den här satsen bestäms värdet för den här kolumnen av den angivna expr.

      expr kan bestå av literaler, kolumnidentifierare i tabellen och deterministiska, inbyggda SQL-funktioner eller operatorer förutom:

      Får inte heller expr innehålla någon underfråga.

    • GENERERAD { ALWAYS | SOM STANDARD } SOM IDENTITET [ ( [ BÖRJA MED start ] [ STEGVISA STEG ] ) ] ]

      Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 10.4 LTS och senare

      Definierar en identitetskolumn. När du skriver till tabellen och inte anger värden för identitetskolumnen tilldelas den automatiskt ett unikt och statistiskt ökande (eller minskande om step det är negativt). Den här satsen stöds endast för Delta Lake-tabeller. Den här satsen kan endast användas för kolumner med BIGINT-datatyp.

      De automatiskt tilldelade värdena börjar med start och ökar med step. Tilldelade värden är unika men garanteras inte vara sammanhängande. Båda parametrarna är valfria och standardvärdet är 1. step kan inte vara 0.

      Om de automatiskt tilldelade värdena ligger utanför intervallet för identitetskolumntypen misslyckas frågan.

      När ALWAYS används kan du inte ange egna värden för identitetskolumnen.

      Följande åtgärder stöds inte:

      • PARTITIONED BY en identitetskolumn
      • UPDATE en identitetskolumn

      Kommentar

      Om du deklarerar en identitetskolumn i en Delta-tabell inaktiveras samtidiga transaktioner. Använd endast identitetskolumner i användningsfall där samtidiga skrivningar till måltabellen inte krävs.

    • STANDARD default_expression

      Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 11.3 LTS och senare

      Definierar ett DEFAULT värde för kolumnen som används på INSERT, UPDATEoch MERGE ... INSERT när kolumnen inte har angetts.

      Om inget standardvärde anges DEFAULT NULL tillämpas för nullbara kolumner.

      default_expression kan bestå av literaler och inbyggda SQL-funktioner eller -operatorer förutom:

      Får inte heller default_expression innehålla någon underfråga.

      DEFAULT stöds för CSV, JSON, PARQUEToch ORC källor.

    • KOMMENTAR column_comment

      En strängliteral som beskriver kolumnen.

    • column_constraint

      Viktigt!

      Den här funktionen finns som allmänt tillgänglig förhandsversion.

      Lägger till en primärnyckel eller sekundärnyckelbegränsning i kolumnen i en Delta Lake-tabell.

      Begränsningar stöds inte för tabeller i hive_metastore katalogen.

      Om du vill lägga till en kontrollbegränsning i en Delta Lake-tabell använder du ALTER TABLE.

    • MASK-sats

      Gäller endast för:markerad ja Databricks SQL markerad ja Databricks Runtime 12.2 LTS och senare markerad ja i Unity Catalog

      Viktigt!

      Den här funktionen finns som allmänt tillgänglig förhandsversion.

      Lägger till en kolumnmaskfunktion för att anonymisera känsliga data. Alla framtida frågor från den kolumnen får resultatet av utvärderingen av funktionen över kolumnen i stället för kolumnens ursprungliga värde. Detta kan vara användbart för detaljerade åtkomstkontrollsyften där funktionen kan inspektera identitets- och/eller gruppmedlemskap för den anropande användaren för att avgöra om värdet ska redigeras.

    • table_constraint

      Lägger till en informations primärnyckel eller informationsbegränsningar för sekundärnyckel i Delta Lake-tabellen.

      Viktiga begränsningar stöds inte för tabeller i hive_metastore katalogen.

      Om du vill lägga till en kontrollbegränsning i en Delta Lake-tabell använder du ALTER TABLE.

  • ANVÄNDA data_source

    Det filformat som ska användas för tabellen. data_source måste vara något av följande:

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

    Följande ytterligare filformat som ska användas för tabellen stöds i Databricks Runtime:

    • JDBC
    • LIBSVM
    • ett fullständigt kvalificerat klassnamn för en anpassad implementering av org.apache.spark.sql.sources.DataSourceRegister.

    Om USING utelämnas är DELTAstandardvärdet .

    För andra data_source än DELTA du måste också ange en LOCATION om inte tabellkatalogen är hive_metastore.

    Följande gäller för: Databricks Runtime

    HIVE stöds för att skapa en Hive SerDe-tabell i Databricks Runtime. Du kan ange Hive-specifik file_format och row_format använda OPTIONS -satsen, som är en skiftlägeskänslig strängkarta. Är option_keys :

    • FILEFORMAT
    • INPUTFORMAT
    • OUTPUTFORMAT
    • SERDE
    • FIELDDELIM
    • ESCAPEDELIM
    • MAPKEYDELIM
    • LINEDELIM
  • table_clauses

    Du kan också ange egenskaper för plats, partitionering, klustring, alternativ, kommentarer och användardefinierade egenskaper för den nya tabellen. Varje undersats kan bara anges en gång.

    • PARTITIONERAD AV

      En valfri sats för att partitioneras tabellen med en delmängd kolumner.

      Kommentar

      Om du inte definierar en Delta-tabell placeras partitioneringskolumner i slutet av tabellen, även om de definieras tidigare i kolumnspecifikationen. Överväg att använda CLUSTER BY i stället PARTITIONED BY för för Delta-tabeller.

    • KLUSTER EFTER

      Gäller för: markerad ja Databricks SQL markerad ja Databricks Runtime 13.3 och senare

      En valfri sats för att klustra en Delta-tabell med en delmängd kolumner. Om du vill klustra andra tabeller använder du clustered_by_clause.

      Delta Lake liquid clustering kan inte kombineras med PARTITIONED BY.

    • clustered_by_clause

      Du kan också gruppera tabellen eller varje partition till ett fast antal hash-bucketar med hjälp av en delmängd av kolumnerna.

      Klustring stöds inte för Delta Lake-tabeller.

      • KLUSTRAD AV

        Anger vilken uppsättning kolumner som varje partition ska klustras med, eller tabellen om ingen partitionering har angetts.

        • cluster_column

          En identifierare som refererar till en column_identifier i tabellen. Om du anger fler än en kolumn får det inte finnas några dubbletter. Eftersom en klustring fungerar på partitionsnivå får du inte namnge en partitionskolumn även som en klusterkolumn.

      • SORTERAT EFTER

        Du kan också behålla en sorteringsordning för rader i en bucket.

        • sort_column

          En kolumn att sortera bucketen efter. Kolumnen får inte vara partitionskolumn. Sorteringskolumner måste vara unika.

        • ASC eller DESC

          Du kan också ange om sort_column sorteras i stigande (ASC) eller fallande (DESC) ordning. Standardvärdena är ASC.

      • IN I NUM_BUCKETS BUCKETS

        En INTEGER-literal som anger antalet bucketar som varje partition (eller tabellen om ingen partitionering anges) delas upp i.

    • PLATSsökväg [ MED ( CREDENTIAL credential_name ) ]

      En valfri sökväg till katalogen där tabelldata lagras, vilket kan vara en sökväg för distribuerad lagring. path måste vara en STRING-literal. Om du inte anger någon plats betraktas tabellen som en managed table och Azure Databricks skapar en standardtabellplats.

      Om du anger en plats blir tabellen en extern tabell.

      För tabeller som inte finns i hive_metastore katalogen måste tabellen path skyddas av en extern plats om inte en giltig lagringsautentiseringsuppgift har angetts.

      Du kan inte skapa externa tabeller på platser som överlappar platsen för hanterade tabeller.

      För en Delta Lake-tabell ärvs tabellkonfigurationen LOCATION från om data finns. Om några TBLPROPERTIES, table_specificationeller PARTITIONED BY -satser anges för Delta Lake-tabeller måste de därför exakt matcha Platsdata för Delta Lake.

    • ALTERNATIV

      Anger eller återställer ett eller flera användardefinierade tabellalternativ.

    • KOMMENTAR table_comment

      En strängliteral som beskriver tabellen.

    • TBLPROPERTIES

      Du kan också ange en eller flera användardefinierade egenskaper.

    • MED ROW FILTER-sats

      Gäller endast för:markerad ja Databricks SQL markerad ja Databricks Runtime 12.2 LTS och senare markerad ja i Unity Catalog

      Viktigt!

      Den här funktionen finns som allmänt tillgänglig förhandsversion.

      Lägger till en radfilterfunktion i tabellen. Alla framtida frågor från tabellen tar emot delmängden av dess rader som funktionen utvärderar till boolesk TRUE. Detta kan vara användbart för detaljerade åtkomstkontrollsyften där funktionen kan inspektera identitets- och/eller gruppmedlemskap för den anropande användaren för att avgöra om vissa rader ska filtreras.

  • AS-fråga

    Den här valfria satsen fyller i tabellen med hjälp av data från query. När du anger en query får du inte också ange en table_specification. Tabellschemat härleds från frågan.

    Observera att Azure Databricks skriver över den underliggande datakällan med data i indatafrågan för att se till att tabellen som skapas innehåller exakt samma data som indatafrågan.

Exempel

-- 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));