Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применяется к:
Databricks SQL
Databricks Runtime
Определяет управляемую или внешнюю таблицу, при необходимости используя источник данных.
Синтаксис
{ { [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 }
До Databricks Runtime 16.1 START WITH должен предшествовать INCREMENT BY.
Параметры
ЗАМЕНЯТЬ
Если задано, заменит таблицу и его содержимое, если она уже существует. Этот пункт поддерживается только для таблиц Delta и Apache Iceberg.
REPLACEсохраняет журнал таблиц и предоставляет права, фильтры строк и маски столбцов.Примечание.
Azure Databricks настоятельно рекомендует использовать
REPLACEвместо удаления и повторного создания таблиц.ВНЕШНИЙ
При указании создает внешнюю таблицу. При создании внешней таблицы необходимо также указать предложение
LOCATION. При удалении внешней таблицы файлы вLOCATIONне будут удалены.TEMP или ВРЕМЕННЫЙ
Применяется к:
Databricks SQL
Databricks Runtime 17.3 и более поздним версиямЭто важно
Эта функция доступна в общедоступной предварительной версии.
При указании создаётся временная таблица, к которой доступ имеет только текущий сеанс.
ЕСЛИ НЕ СУЩЕСТВУЕТ
Если указано и таблица с тем же именем уже существует, инструкция игнорируется.
IF NOT EXISTSне может сосуществовать сREPLACE, что означаетCREATE OR REPLACE TABLE IF NOT EXISTSне разрешён.-
Имя создаваемой таблицы. Имя не должно включать темпоральную спецификацию или спецификацию параметров. Если таблица является временной таблицей,
table_nameможет быть квалифицированаsessionилиsystem.session. В противном случае, если имя не задано, таблица создается в текущей схеме.Таблицы, созданные в
hive_metastore, могут содержать только символы ASCII, являющиеся буквами или цифрами, и символы подчеркивания (INVALID_SCHEMA_OR_RELATION_NAME).Таблицы Iceberg должны быть созданы в каталоге Unity. Создание таблиц Iceberg в
hive_metastoreне поддерживается. спецификация таблицы
Это необязательное предложение определяет список столбцов, их типов, свойств, описаний и ограничений столбцов.
Если столбцы не определяются схемой таблицы, необходимо указать либо
AS query, либоLOCATION.-
Уникальное имя столбца.
Идентификаторы столбцов таблиц Delta без свойства сопоставления столбцов (
'delta.columnMapping.mode' = 'name') не должны содержать пробелы или следующие символы:, ; { } ( ) \n \t =Идентификаторы столбцов
AVROтаблиц должны начинаться с символа подчеркивания (_) или буквы Юникода (включая буквы, отличные от ASCII) и следовать сочетанию букв Юникода, цифр и подчеркивания.Идентификаторы столбцов
ICEBERGтаблиц должны быть уникальными, нечувствительными к регистру и соответствовать стандартным правилам идентификатора SQL. Избегайте использования пробелов или специальных символов, так как они могут не поддерживаться всеми обработчиками запросов. -
Указывает тип данных столбца. Не все типы данных , поддерживаемые Azure Databricks, поддерживаются всеми источниками данных.
НЕ NULL
Если это указано, столбец не допускает
NULLзначения. Это предложение поддерживается только для таблиц Delta и Iceberg.Коллация collation_name
Применяется к:
Databricks SQL
Databricks Runtime 16.1 и более поздним версиямДля
STRINGcolumn_typeпри необходимости присваивает имена параметров сортировки для применения для операций сравнения и сортировки в этом столбце. Сортировка по умолчанию — это таблицаdefault_collation_name.ГЕНЕРИРУЕТСЯ ВСЕГДА КАК ( expr )
При указании этого условия значение этого столбца определяется задаваемым
expr.DEFAULT COLLATIONтаблицы должен бытьUTF8_BINARY.exprмогут состоять из литералов, идентификаторов столбцов в таблице и детерминированных встроенных функций ИЛИ операторов SQL, кроме следующих:- Агрегатные функции
- Функции окна аналитики
- Ранжирование функций окна
- Генераторные функции, возвращающие табличные значения
- Столбцы с кодировкой, отличной от
UTF8_BINARY
Также
exprне должно содержать вложенного запроса.ГЕНЕРИРУЕТСЯ { ВСЕГДА | ПО УМОЛЧАНИЮ } КАК ИДЕНТИФИКАТОР [ ( [ НАЧИНАЯ С start ] [ УВЕЛИЧИВАЯ НА step ] ) ]
Применяется к:
Databricks SQL
Databricks Runtime 10.4 LTS и вышеОпределяет столбец идентификаторов. При записи в таблицу, если не предоставлено значение для столбца с идентификатором, ему автоматически назначается уникальное и статистически увеличивающееся (или уменьшающееся, если
stepотрицательное) значение. Это предложение поддерживается только для таблиц Delta. Это предложение можно использовать только для столбцов с типом данных BIGINT.Автоматически назначаемые значения начинаются с
startи увеличиваются наstep. Назначенные значения являются уникальными, но не гарантируют, что они являются смежными. Оба параметра являются необязательными, а значение по умолчанию — 1.stepне может иметь значение0.Если автоматически назначенные значения выходят за пределы диапазона типа столбца идентификаторов, запрос завершится ошибкой.
При использовании
ALWAYSнельзя указать собственные значения для столбца идентификаторов.Следующие операции не поддерживаются:
-
PARTITIONED BYидентификационный столбец -
UPDATEидентификационный столбец
Примечание.
Объявление идентификационного столбца в таблице отключает параллельные транзакции. Используйте столбцы идентификаторов только в тех случаях, когда одновременные записи в целевую таблицу не требуются.
-
DEFAULT выражение_по_умолчанию
Область применения:
Databricks SQL
Databricks Runtime 11.3 LTS и вышеОпределяет значение
DEFAULTдля столбца, которое применяется вINSERT,UPDATEиMERGE ... INSERT, если столбец не указан.Если значение по умолчанию не указано,
DEFAULT NULLприменяется для столбцов, допускающих значение NULL.default_expressionможет состоять из литералов и встроенных функций SQL или операторов за исключением следующих:- Агрегатные функции
- Функции окна аналитики
- Ранжирование функций окна
- Генераторные функции, возвращающие табличные значения
Также
default_expressionне должно содержать вложенного запроса.DEFAULTподдерживается для источниковCSV,JSON,PARQUETиORC.КОММЕНТАРИЙ column_comment
Строковый литерал для описания столбца.
-
Добавляет ограничение первичного ключа или внешнего ключа в столбец таблицы.
Ограничения не поддерживаются для таблиц в каталоге
hive_metastore.Чтобы добавить ограничение проверки к таблице, используйте ALTER TABLE.
-
Применяется к:
Databricks SQL
Databricks Runtime 12.2 LTS и выше
только каталог Unity.Добавляет функцию маски столбца для анонимизации конфиденциальных данных. Все последующие запросы из этого столбца получают результат оценки этой функции по столбцу вместо исходного значения столбца. Это может быть полезно для точного контроля доступа, где функция может инспектировать идентификацию или членство в группах вызывающего пользователя, чтобы решить, следует ли скрыть значение.
Если вы заменяете таблицу и новую таблицу содержит те же имена столбцов, что и исходные, все существующие маски столбцов сохраняются, даже если они не определены явным образом. Это предотвращает случайную потерю политик доступа к данным.
-
Добавляет в таблицу информационный первичный ключ или информационные ограничения внешнего ключа.
Ограничения ключей не поддерживаются для таблиц в каталоге
hive_metastore.Чтобы добавить ограничение проверки к таблице, используйте ALTER TABLE.
-
ИСПОЛЬЗОВАНИЕ data_source
data_sourceможет быть либо форматом файла, либо федеративным источником данных JDBC.Формат файла должен быть одним из следующих:
AVROBINARYFILECSVDELTAICEBERGJSONORCPARQUETTEXT
Для любого формата файла, отличного от
DELTAилиICEBERG, необходимо также указатьLOCATION, если каталог таблиц не имеетhive_metastoreзначения.Поддерживаются следующие федеративные источники JDBC:
POSTGRESQLSQLSERVERMYSQLBIGQUERYNETSUITEORACLEREDSHIFTSNOWFLAKESQLDWSYNAPSESALESFORCESALESFORCE_DATA_CLOUDTERADATAWORKDAY_RAASMONGODB
При указании федеративного источника JDBC необходимо также указать
OPTIONSусловие с необходимыми сведениями о подключении. Дополнительные сведения о запросе федеративных источников данных см. в базах данных запросов с помощью JDBC .В Databricks Runtime поддерживаются следующие дополнительные форматы файлов для таблицы:
JDBCLIBSVM- Полностью квалифицированное имя класса для пользовательской реализации
org.apache.spark.sql.sources.DataSourceRegister.
Если
USINGне указывается, по умолчанию используетсяDELTA.Следующее применимо к: Databricks Runtime
HIVEподдерживается для создания таблицы Hive SerDe в Databricks Runtime. Можно указать специфичные для Hive параметрыfile_formatиrow_format, используя предложениеOPTIONS, которое представляет собой не учитывающую регистр строковую карту.option_keysследующие:FILEFORMATINPUTFORMATOUTPUTFORMATSERDEFIELDDELIMESCAPEDELIMMAPKEYDELIMLINEDELIM
таблица_условий
При необходимости укажите расположение, секционирование, кластеризацию, параметры, комментарии и пользовательские свойства новой таблицы. Каждое подпункт может быть указано только один раз.
-
Необязательное предложение для секционирования таблицы по подмножествам столбцов.
Примечание.
Для управляемых таблиц Айсберга Azure Databricks не поддерживает
PARTITIONED BY. Вместо этого используйте кластеризацию жидкости (CLUSTER BY) для оптимизации макета данных. Для таблиц Delta, если не указано определение таблицы, Azure Databricks помещает секционирование столбцов в конец таблицы, даже если вы перечисляете их ранее в спецификации столбцов. -
Область применения:
Databricks SQL
Databricks Runtime 13.3 и вышеНеобязательное предложение для кластеризации таблицы Delta или Iceberg с помощью подмножества столбцов. См. раздел "Использование кластеризации жидкости" для таблиц. Для кластеризации других таблиц используйте
clustered_by_clause.Для таблиц Айсберга при использовании
CLUSTER BYнеобходимо явно отключить векторы удаления и идентификаторы строк.Используйте автоматическую кластеризацию с
CLUSTER BY AUTO, и Databricks интеллектуально выбирает ключи кластеризации для оптимизации производительности запросов.Вы не можете объединить кластеризацию жидкости с
PARTITIONED BY. клаузула кластеризации
При необходимости кластеризует таблицу или каждую секцию в фиксированное число хэш-контейнеров с помощью подмножества столбцов.
Это предложение не поддерживается для таблиц Delta или Iceberg. Вместо этого используйте
CLUSTER BY.КЛАСТЕРИЗОВАНО ПО
Задает набор столбцов, по которым выполняется кластеризация каждой секции, или таблицы, если секционирование не указано.
-
Идентификатор, ссылающийся на
column_identifierв таблице. Если указать несколько столбцов, не должно быть дубликатов. Так как кластеризация работает на уровне секции, не следует называть столбец секции также в качестве столбца кластера.
-
СОРТИРОВКА ПО
Опционально поддерживает порядок сортировки строк в бакете.
sort_column
Столбец, по которому следует сортировать контейнер. Столбец не должен быть разделительным столбцом. Сортировка столбцов должна быть уникальной.
ASC или DESC
При необходимости указывает, каким образом сортируется
sort_column: в порядке возрастания (ASC) или убывания (DESC). Значения по умолчанию —ASC.
В num_buckets КОРЗИНЫ
Литерал INTEGER, указывающий количество корзин, на которые делится каждый раздел (или таблица, если разделение не указано).
Путь LOCATION [ WITH ( CREDENTIAL credential_name ) ]
Необязательный путь к каталогу, в котором хранятся данные таблицы. Это может быть путь к распределённому хранилищу.
pathдолжен быть СТРОКОВЫМ литералом. Если вы не указываете расположение, таблица считается какmanaged table, а Azure Databricks создает стандартное местоположение таблицы.Указание расположения делает таблицу внешней таблицей.
Для таблиц, которые не находятся в
hive_metastoreкаталоге, таблицаpathдолжна быть защищена внешним расположением , если не указана допустимая учетная запись хранения .Нельзя создавать внешние таблицы в расположениях, перекрывающихся расположением управляемых таблиц .
Для таблиц Delta таблица наследует свою конфигурацию от
LOCATION, если данные уже существуют на этом пути. В результате все указанныеTBLPROPERTIES,table_specificationилиPARTITIONED BYусловия должны точно соответствовать существующим данным в расположении Delta.Для таблиц Iceberg
LOCATIONпредложение не поддерживается. Внешние таблицы Айсберга регистрируются автоматически при создании внешнего каталога, и необходимо создать управляемые таблицы Айсберга без указания расположения.-
Задает или сбрасывает один или несколько пользовательских параметров таблицы.
КОММЕНТАРИЙ table_comment
Строковый литерал для описания таблицы.
-
При необходимости задает одно или несколько свойств, определяемых пользователем.
ПАРАМЕТРЫ СОРТИРОВКИ ПО УМОЛЧАНИЮ default_collation_name
Применяется к:
Databricks SQL
Databricks Runtime 16.3 и более поздних версийОпределяет параметры сортировки по умолчанию, которые следует использовать для:
-
STRINGстолбцы и поля таблицы - выражение
DEFAULT - Тело
CREATE TABLE AS query
Для ограничений
CHECKи выражений, созданных в столбцах, требуется сортировка по умолчаниюUTF8_BINARY.Если параметр не указан, параметры сортировки по умолчанию являются производными от схемы, в которой создается таблица.
-
С предложением ROW FILTER WITH
Применяется к:
Databricks SQL
Databricks Runtime 12.2 LTS и выше
только каталог Unity.Добавляет функцию фильтра строк в таблицу. Все последующие запросы из этой таблицы получат подмножество строк, где функция возвращает TRUE. Это может быть полезно для точного контроля доступа, где функция может проверить удостоверение или членство в группах вызывающего пользователя, чтобы решить, следует ли фильтровать определенные строки.
Если вы заменяете таблицу, все существующие фильтры строк сохраняются, даже если они не определены явным образом. Это предотвращает случайную потерю политик доступа к данным.
-
AS ЗАПРОС
Это необязательное предложение заполняет таблицу с помощью данных из
query. При указанииqueryне следует также указыватьtable_specification. Схема таблицы является производным от запроса.Обратите внимание, что Azure Databricks перезаписывает базовый источник данных с данными входного запроса, чтобы убедиться, что созданная таблица содержит точно те же данные, что и входной запрос.
Примеры
-- 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