Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: Databricks SQL
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 |
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 }
Zanim Databricks Runtime 16.1, START WITH
musi poprzedzać INCREMENT BY
.
Parametry
ZAMIEŃ
Jeśli zostanie określona, zastępuje tabelę i jej zawartość, jeśli już istnieje. Ta klauzula jest obsługiwana tylko w przypadku tabel Delta i Apache Iceberg.
REPLACE
zachowuje zarówno historię tabeli , jak i przyznane uprawnienia.Uwaga
Usługa Azure Databricks zdecydowanie zaleca używanie
REPLACE
zamiast usuwania i ponownego tworzenia tabel.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 usunięta, pliki w lokalizacjiLOCATION
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
nie może współistnieć zREPLACE
, co oznacza, żeCREATE OR REPLACE TABLE IF NOT EXISTS
nie jest dozwolone.-
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).Tabele Iceberg należy utworzyć w katalogu Unity. Tworzenie tabel Iceberg w
hive_metastore
nie jest obsługiwane. specyfikacja_tabeli
Ta klauzula opcjonalna definiuje listę kolumn, ich typów, właściwości, opisów i ograniczeń kolumn.
Jeśli nie zdefiniujesz kolumn w schemacie tabeli, musisz określić albo
AS query
, alboLOCATION
.-
Unikatowa nazwa kolumny.
Identyfikatory kolumn tabel delty bez właściwości mapowania kolumn (
'delta.columnMapping.mode' = 'name'
) nie mogą zawierać spacji ani następujących znaków:, ; { } ( ) \n \t =
.Identyfikatory kolumn
AVRO
tabel muszą zaczynać się od podkreślenia (_
) lub litery Unicode (w tym liter niebędących ASCII) i być kontynuowane przez kombinację liter Unicode, cyfr i podkreślników.Identyfikatory kolumn w tabelach
ICEBERG
muszą być unikatowe, niewrażliwe na wielkość liter i zgodne ze standardowymi regułami identyfikatorów SQL. Unikaj używania spacji lub znaków specjalnych, ponieważ mogą nie być obsługiwane przez wszystkie aparaty zapytań. -
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 akceptuje
NULL
wartości. Ta klauzula jest obsługiwana tylko w przypadku tabel Delta i Iceberg.SORTOWANIE collation_name
Dotyczy:
Databricks SQL
Databricks Runtime 16.1 i nowsze
Opcjonalnie, dla
STRING
column_type
, określ nazwę sortowania, które ma być używane do operacji porównania i sortowania w tej kolumnie. Sortowanie domyślne to tabeladefault_collation_name
.WYGENEROWANE ZAWSZE JAKO ( wyrażenie )
Gdy określisz tę klauzulę, wartość tej kolumny jest ustalana przez określony
expr
.DEFAULT COLLATION
tabeli musi byćUTF8_BINARY
.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:- Funkcje agregujące
- Funkcje okna analitycznego
- Funkcje okna klasyfikacji
- Funkcje generatora wartości tabeli
- Kolumny z sortowaniem innym niż
UTF8_BINARY
Ponadto
expr
nie może zawierać żadnego podzapytania.GENERATED { ALWAYS | DOMYŚLNIE } JAKO IDENTITY [ ( [ ROZPOCZNIJ OD start ] [ ZWIĘKSZ O krok ] ) ]
Dotyczy:
Databricks SQL
Databricks Runtime 10.4 LTS i nowsze
Definiuje kolumnę tożsamości. Kiedy zapisujesz dane w tabeli, a gdy nie podajesz wartości dla kolumny tożsamości, zostanie jej automatycznie przypisana unikatowa wartość wzrastająca (lub malejąca, jeśli
step
jest ujemne). Ta klauzula jest obsługiwana tylko w przypadku tabel Delta. 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ą ostep
. 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.
Kiedy
ALWAYS
jest używany, 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 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.
-
DOMYŚLNE default_expression
Dotyczy:
Databricks SQL
Databricks Runtime 11.3 LTS i nowsze
DEFAULT
Definiuje wartość kolumny, która jest używana wINSERT
kolumnie ,UPDATE
iMERGE ... INSERT
gdy kolumna nie jest określona.Jeśli nie określono wartości domyślnej,
DEFAULT NULL
zostanie zastosowany dla kolumn dopuszczających wartości null.default_expression
może składać się z literałów i wbudowanych funkcji LUB operatorów SQL, z wyjątkiem:- Funkcje agregujące
- Funkcje okna analitycznego
- Funkcje okna klasyfikacji
- Funkcje generatora wartości tabeli
Ponadto
default_expression
nie może zawierać żadnego podzapytania.DEFAULT
jest obsługiwany dla źródełCSV
,JSON
,PARQUET
iORC
.KOMENTARZ KOLUMNY
Ciąg znaków opisujący kolumnę.
-
Dodaje ograniczenie klucza podstawowego lub klucza obcego do kolumny w tabeli.
Ograniczenia nie są obsługiwane w przypadku tabel w wykazie
hive_metastore
.Aby dodać ograniczenie sprawdzania do tabeli, użyj polecenia ALTER TABLE.
-
Dotyczy:
Databricks SQL
Databricks Runtime 12.2 LTS i nowsze
tylko Unity Catalogu
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ść.
-
Dodaje do tabeli ograniczenia informacyjnego klucza głównego lub informacyjnego klucza obcego.
Ograniczenia klucza nie są obsługiwane w przypadku tabel w wykazie
hive_metastore
.Aby dodać ograniczenie sprawdzania do tabeli, 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
ICEBERG
JSON
ORC
PARQUET
TEXT
W przypadku dowolnego formatu pliku innego niż
DELTA
lubICEBERG
, 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 kwalifikowaną nazwę klasy niestandardowej implementacji
org.apache.spark.sql.sources.DataSourceRegister
.
Jeśli
USING
zostanie pominięty, wartość domyślna toDELTA
.Dotyczy to następujących elementów: Databricks Runtime
HIVE
jest obsługiwane do tworzenia tabeli Hive SerDe w środowisku Databricks Runtime. Można określić specyficzne dlafile_format
programu Hive irow_format
użyćOPTIONS
klauzuli , która jest mapą ciągów bez uwzględniania wielkości liter. Otooption_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.
-
Klauzula opcjonalna do partycjonowania tabeli według podzestawu kolumn.
Uwaga
W przypadku zarządzanych tabel Iceberg Azure Databricks nie obsługuje
PARTITIONED BY
. Użyj płynnego klastrowania (CLUSTER BY
), aby zamiast tego zoptymalizować układ danych. Jeśli w przypadku tabel Delta pominiesz definicję tabeli, usługa Azure Databricks umieszcza kolumny partycjonowania na końcu tabeli, nawet jeśli zostaną wymienione wcześniej w specyfikacji kolumny. -
Dotyczy:
Databricks SQL
Databricks Runtime 13.3 lub nowsze
Klauzula opcjonalna do klastrowania tabeli delty lub góry lodowej według podzbioru kolumn. Zobacz Używaj płynnego grupowania dla tabel. Aby klasterować inne tabele, użyj polecenia
clustered_by_clause
.W przypadku tabel Iceberg należy jawnie wyłączyć wektory usuwania i identyfikatory wierszy, kiedy korzystasz z
CLUSTER BY
.
Nie można łączyć klasteryzacji cieczy z
PARTITIONED BY
.klauzula_grupowania
Opcjonalnie należy klasterować tabelę lub każdą partycję do stałej liczby zasobników skrótów przy użyciu podzestawu kolumn.
Ta klauzula nie jest obsługiwana w przypadku tabel Delta ani Iceberg. Użyj
CLUSTER BY
zamiast tego.KLASTROWANE PRZEZ
Określa zestaw kolumn, według których należy klasterować każdą partycję lub tabelę, jeśli nie określono partycjonowania.
-
Identyfikator, który odnosi się do
column_identifier
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.
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 toASC
.
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).
LOKALIZACJA ścieżki [ 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 typu STRING. Jeśli nie określisz lokalizacji, tabela zostanie uznana zamanaged table
, a 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 katalogu
, tabela musi być chroniona przez zewnętrzną lokalizację , chyba że określono prawidłowe poświadczenie magazynu.Nie można tworzyć tabel zewnętrznych w lokalizacjach nakładających się na lokalizację zarządzanych tabel.
W przypadku tabel delty tabela dziedziczy konfigurację z
LOCATION
, jeśli dane już istnieją w tej ścieżce. W związku z tym wszystkie określoneTBLPROPERTIES
,table_specification
lubPARTITIONED BY
klauzule muszą dokładnie odpowiadać istniejącym danym w lokalizacji Delta.W przypadku tabel Iceberg klauzula
LOCATION
nie jest obsługiwana. Obce tabele Iceberg są rejestrowane automatycznie, gdy tworzysz zagraniczny katalog. Należy utworzyć zarządzane tabele Iceberg bez określania lokalizacji.-
Ustawia lub resetuje co najmniej jedną opcję tabeli zdefiniowanej przez użytkownika.
Komentarz do tabeli
Literał ciągowy opisujący tabelę.
-
Opcjonalnie ustawia co najmniej jedną właściwość zdefiniowaną przez użytkownika.
DOMYŚLNE SORTOWANIE default_collation_name
Dotyczy:
Databricks SQL
Databricks Runtime 16.3 lub nowszego
Definiuje sortowanie domyślne do użycia w następujących celach:
-
STRING
kolumny i pola tabeli - wyrażenie
DEFAULT
- Część główna
CREATE TABLE AS query
CHECK
ograniczenia i wygenerowane wyrażenia kolumn wymagają domyślnego sortowaniaUTF8_BINARY
.Jeśli nie zostanie określony, sortowanie domyślne to
UTF8_BINARY
.-
Z klauzulą ROW FILTER
Dotyczy:
Databricks SQL
Databricks Runtime 12.2 LTS i nowsze
tylko Unity Catalogu
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.
-
-
Ta klauzula opcjonalna wypełnia tabelę przy użyciu danych z
query
. Jeśli określiszquery
, nie możesz 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);
-- 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;