Udostępnij za pośrednictwem


CREATE TABLE [USING]

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Definiuje zarządzaną lub zewnętrzną tabelę, opcjonalnie przy użyciu źródła danych.

Składnia

{ { [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 }

Parametry

  • ZASTĄPIĆ

    Jeśli zostanie określona, zastępuje tabelę i jej zawartość, jeśli już istnieje. Ta klauzula jest obsługiwana tylko w przypadku tabel usługi Delta Lake.

    REPLACEzachowuje historię tabeli.

    Uwaga

    Usługa Azure Databricks zdecydowanie zaleca użycie REPLACE zamiast upuszczania i ponownego tworzenia tabel usługi Delta Lake.

  • ZEWNĘTRZNY

    Jeśli zostanie określona, zostanie utworzona tabela zewnętrzna. Podczas tworzenia tabeli zewnętrznej należy również podać klauzulę LOCATION . Gdy tabela zewnętrzna zostanie porzucona, pliki w obiekcie LOCATION nie zostaną usunięte.

  • JEŚLI NIE ISTNIEJE

    Jeśli określono i tabela o tej samej nazwie już istnieje, instrukcja jest ignorowana.

    IF NOT EXISTS program nie może współistnieć z parametrem REPLACE, co oznacza CREATE OR REPLACE TABLE IF NOT EXISTS , że nie jest dozwolone.

  • table_name

    Nazwa tabeli do utworzenia. Nazwa nie może zawierać specyfikacji czasowej ani specyfikacji opcji. Jeśli nazwa nie jest kwalifikowana, tabela zostanie utworzona w bieżącym schemacie.

    Tabele utworzone w programie hive_metastore mogą zawierać tylko znaki alfanumeryczne ASCII i podkreślenia (INVALID_SCHEMA_OR_RELATION_NAME).

  • table_specification

    Ta klauzula opcjonalna definiuje listę kolumn, ich typów, właściwości, opisów i ograniczeń kolumn.

    Jeśli nie zdefiniujesz kolumn schematu tabeli, musisz określić AS query wartość lub LOCATION.

    • column_identifier

      Unikatowa nazwa kolumny.

      Identyfikatory kolumn tabel usługi Delta Lake bez właściwości mapowania kolumn ('delta.columnMapping.mode' = 'name') nie mogą zawierać spacji ani następujących znaków: , ; { } ( ) \n \t = .

      Identyfikatory AVRO kolumn tabeli muszą zaczynać się od podkreślenia () lub litery Unicode (_w tym liter innych niż ASCII), a następnie kombinacji liter Unicode, cyfr i podkreśleń.

    • column_type

      Określa typ danych kolumny. Nie wszystkie typy danych obsługiwane przez usługę Azure Databricks są obsługiwane przez wszystkie źródła danych.

    • NOT NULL

      Jeśli zostanie określona kolumna, nie zaakceptuje NULL wartości. Ta klauzula jest obsługiwana tylko w przypadku tabel usługi Delta Lake.

    • WYGENEROWANE ZAWSZE JAKO ( wyrażenie )

      Po określeniu tej klauzuli wartość tej kolumny jest określana przez określony exprelement .

      expr Może składać się z literałów, identyfikatorów kolumn w tabeli oraz deterministycznych, wbudowanych funkcji LUB operatorów SQL, z wyjątkiem:

      Ponadto expr nie może zawierać żadnego podzapytania.

    • GENERATED { ALWAYS | DOMYŚLNIE } JAKO TOŻSAMOŚĆ [ [ ROZPOCZNIJ OD POCZĄTKU ] [ INCREMENT BY STEP ] ] ]

      Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 10.4 LTS i nowsze

      Definiuje kolumnę tożsamości. Podczas zapisywania w tabeli i nie podajesz wartości dla kolumny tożsamości, zostanie ona automatycznie przypisana unikatowa i statystycznie rosnąca (lub malejąca, jeśli step jest ujemna). Ta klauzula jest obsługiwana tylko w przypadku tabel usługi Delta Lake. Tej klauzuli można używać tylko w przypadku kolumn z typem danych BIGINT.

      Automatycznie przypisane wartości zaczynają się od start i zwiększają się o stepwartość . Przypisane wartości są unikatowe, ale nie mają gwarancji, że są ciągłe. Oba parametry są opcjonalne, a wartość domyślna to 1. step nie może być 0.

      Jeśli wartości przypisane automatycznie wykraczają poza zakres typu kolumny tożsamości, zapytanie zakończy się niepowodzeniem.

      W ALWAYS przypadku użycia nie można podać własnych wartości dla kolumny tożsamości.

      Następujące operacje nie są obsługiwane:

      • PARTITIONED BY kolumna tożsamości
      • UPDATE kolumna tożsamości

      Uwaga

      Deklarowanie kolumny tożsamości w tabeli delty powoduje wyłączenie współbieżnych transakcji. Używaj kolumn tożsamości tylko w przypadkach użycia, w których współbieżne zapisy do tabeli docelowej nie są wymagane.

    • DEFAULT_EXPRESSION DOMYŚLNE

      Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 11.3 LTS i nowsze

      DEFAULT Definiuje wartość kolumny, która jest używana w INSERTkolumnie , UPDATEi MERGE ... INSERT gdy kolumna nie jest określona.

      Jeśli nie określono DEFAULT NULL wartości domyślnej, zostanie zastosowana dla kolumn dopuszczanych do wartości null.

      default_expression może składać się z literałów i wbudowanych funkcji LUB operatorów SQL, z wyjątkiem:

      Ponadto default_expression nie może zawierać żadnego podzapytania.

      DEFAULT program jest obsługiwany w przypadku CSVźródeł , JSON, PARQUETi ORC .

    • COLUMN_COMMENT KOMENTARZ

      Literał ciągu opisujący kolumnę.

    • column_constraint

      Dodaje ograniczenie klucza podstawowego lub klucza obcego do kolumny w tabeli usługi Delta Lake.

      Ograniczenia nie są obsługiwane w przypadku tabel w wykazie hive_metastore .

      Aby dodać ograniczenie sprawdzania do tabeli usługi Delta Lake, użyj polecenia ALTER TABLE.

    • KLAUZULA MASK

      Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 12.2 LTS i nowszy zaznacz pole wyboru oznaczone jako tak tylko wykaz aparatu Unity

      Ważne

      Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

      Dodaje funkcję maski kolumn do anonimowości poufnych danych. Wszystkie kolejne zapytania z tej kolumny otrzymują wynik oceny tej funkcji w kolumnie zamiast oryginalnej wartości kolumny. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość lub członkostwo w grupach użytkownika wywołującego, aby zdecydować, czy zredagować wartość.

    • table_constraint

      Dodaje informacyjny klucz podstawowy lub informacyjne ograniczenia klucza obcego do tabeli usługi Delta Lake.

      Ograniczenia klucza nie są obsługiwane w przypadku tabel w wykazie hive_metastore .

      Aby dodać ograniczenie sprawdzania do tabeli usługi Delta Lake, użyj polecenia ALTER TABLE.

  • UŻYWANIE data_source

    data_source może być źródłem danych JDBC w formacie pliku lub federacyjnym.

    Format pliku musi być jednym z następujących elementów:

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

    W przypadku dowolnego formatu pliku innego niż DELTA należy również określić wartość , LOCATION chyba że wykaz tabel ma wartość hive_metastore.

    Obsługiwane są następujące federacyjne źródła JDBC:

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

    Podczas określania federacyjnego źródła JDBC należy również określić klauzulę OPTIONS z niezbędnymi informacjami o połączeniu. Aby uzyskać więcej informacji na temat wykonywania zapytań dotyczących źródeł danych federacyjnych, zobacz Tworzenie zapytań dotyczących baz danych przy użyciu JDBC .

    Następujące dodatkowe formaty plików do użycia w tabeli są obsługiwane w środowisku Databricks Runtime:

    • JDBC
    • LIBSVM
    • w pełni kwalifikowana nazwa klasy niestandardowej implementacji org.apache.spark.sql.sources.DataSourceRegister.

    Jeśli USING zostanie pominięty, wartość domyślna to DELTA.

    Dotyczy to następujących elementów: Databricks Runtime

    HIVE Program jest obsługiwany do tworzenia tabeli Usługi Hive SerDe w środowisku Databricks Runtime. Można określić specyficzne dla file_format programu Hive i row_format użyć OPTIONS klauzuli , która jest mapą ciągów bez uwzględniania wielkości liter. Oto option_keys :

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

    Opcjonalnie określ lokalizację, partycjonowanie, klastrowanie, opcje, komentarze i właściwości zdefiniowane przez użytkownika dla nowej tabeli. Każda klauzula podrzędna może być określona tylko raz.

    • PARTYCJONOWANE PRZEZ

      Klauzula opcjonalna do partycjonowania tabeli według podzestawu kolumn.

      Uwaga

      Jeśli nie zdefiniujesz tabeli delty, kolumny partycjonowania są umieszczane na końcu tabeli, nawet jeśli są zdefiniowane wcześniej w specyfikacji kolumny. Rozważ użycie CLUSTER BY zamiast PARTITIONED BY dla tabel delty.

    • KLASTER WEDŁUG

      Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 13.3 i nowsze

      Klauzula opcjonalna do klastrowania tabeli delty według podzestawu kolumn. Aby klasterować inne tabele, użyj polecenia clustered_by_clause.

      Klastrowanie cieczy usługi Delta Lake nie może być łączone z PARTITIONED BY.

    • clustered_by_clause

      Opcjonalnie należy klasterować tabelę lub każdą partycję do stałej liczby zasobników skrótów przy użyciu podzestawu kolumn.

      Klastrowanie nie jest obsługiwane w przypadku tabel usługi Delta Lake.

      • KLASTROWANE PRZEZ

        Określa zestaw kolumn, według których należy klasterować każdą partycję lub tabelę, jeśli nie określono partycjonowania.

        • cluster_column

          Identyfikator odwołujący column_identifier się do elementu w tabeli. Jeśli określisz więcej niż jedną kolumnę, nie może istnieć duplikaty. Ponieważ klaster działa na poziomie partycji, nie można nazwać kolumny partycji również jako kolumny klastra.

      • SORTOWANE WEDŁUG

        Opcjonalnie utrzymuje kolejność sortowania wierszy w zasobniku.

        • sort_column

          Kolumna do sortowania zasobnika według. Kolumna nie może być kolumną partycji. Sortowanie kolumn musi być unikatowe.

        • Usługa ASC lub DESC

          Opcjonalnie określa, czy sort_column jest sortowana w kolejności rosnącej (ASC) lub malejącej (DESC). Wartości domyślne to ASC.

      • DO ZASOBNIKÓW NUM_BUCKETS

        Literał INTEGER określający liczbę zasobników, do których jest podzielona każda partycja (lub tabela, jeśli nie określono partycjonowania).

    • ŚCIEŻKA LOKALIZACJI [ WITH ( CREDENTIAL credential_name ) ]

      Opcjonalna ścieżka do katalogu, w którym są przechowywane dane tabeli, która może być ścieżką do magazynu rozproszonego. path musi być literałem STRING. Jeśli nie określisz lokalizacji, tabela zostanie uznana za lokalizację, a managed table usługa Azure Databricks utworzy domyślną lokalizację tabeli.

      Określenie lokalizacji powoduje, że tabela jest tabelą zewnętrzną.

      W przypadku tabel, które nie znajdują się w wykaziehive_metastore, tabela path musi być chroniona przez lokalizację zewnętrzną, chyba że określono prawidłowe poświadczenia magazynu.

      Nie można tworzyć tabel zewnętrznych w lokalizacjach nakładających się na lokalizację zarządzanych tabel.

      W przypadku tabeli usługi Delta Lake konfiguracja tabeli jest dziedziczona z tabeli LOCATION , jeśli dane są obecne. W związku z tym, jeśli jakiekolwiek TBLPROPERTIESklauzule , table_specificationlub PARTITIONED BY są określone dla tabel usługi Delta Lake, muszą dokładnie odpowiadać danym lokalizacji usługi Delta Lake.

    • OPTIONS

      Ustawia lub resetuje co najmniej jedną opcję tabeli zdefiniowanej przez użytkownika.

    • TABLE_COMMENT KOMENTARZ

      Literał ciągu opisujący tabelę.

    • TBLPROPERTIES

      Opcjonalnie ustawia co najmniej jedną właściwość zdefiniowaną przez użytkownika.

    • WITH ROW FILTER, klauzula

      Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 12.2 LTS i nowszy zaznacz pole wyboru oznaczone jako tak tylko wykaz aparatu Unity

      Dodaje do tabeli funkcję filtru wierszy. Wszystkie kolejne zapytania z tej tabeli otrzymają podzbiór wierszy, w których funkcja oblicza wartość logiczną TRUE. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość lub członkostwo w grupach użytkownika wywołującego, aby zdecydować, czy filtrować niektóre wiersze.

  • Zapytanie AS

    Ta klauzula opcjonalna wypełnia tabelę przy użyciu danych z query. Po określeniu parametru query nie można również określić .table_specification Schemat tabeli pochodzi z zapytania.

    Pamiętaj, że usługa Azure Databricks zastępuje bazowe źródło danych danymi zapytania wejściowego, aby upewnić się, że utworzona tabela zawiera dokładnie te same dane co zapytanie wejściowe.

Przykłady

-- 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 '/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 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;