Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения:
Databricks SQL
Databricks Runtime
Замечание
В управляемых таблицах Apache Iceberg каталог Unity поддерживает только жидкую кластеризацию и интерпретирует разделы, указанные в предложении PARTITION BY, как ключи кластеризации для жидкой кластеризации.
Databricks рекомендует кластеризацию жидкости для всех новых таблиц Delta и управляемых таблиц Iceberg. См. таблицы, управляемые каталогом Unity в Azure Databricks для Delta Lake и Apache Iceberg и используйте жидкую кластеризацию для таблиц.
Секция состоит из подмножества строк в таблице, которая использует то же значение для предопределенного подмножества столбцов, называемых столбцами секционирования . Использование секций может ускорить запросы к таблице, а также обработку данных.
Чтобы использовать секции, необходимо определить набор столбцов секционирования при создании таблицы, включив предложение PARTITIONED BY.
При вставке или управлении строками в таблице Azure Databricks автоматически отправляет строки в соответствующие секции.
Вы также можете указать раздел непосредственно с помощью оператора PARTITION.
Этот синтаксис также доступен для таблиц, которые не используют формат Delta Lake, чтобы быстро выполнять секционирование по DROP, ADD или RENAME с помощью инструкции ALTER TABLE.
РАЗДЕЛЕНО ПО
Предложение PARTITIONED BY указало список столбцов, по которым секционируется новая таблица.
Синтаксис
PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )
Параметры
-
Идентификатор может ссылать на
column_identifierв таблице. Если указать несколько столбцов, не должно быть дубликатов. Если вы ссылаетесь на все столбцы таблицыcolumn_specification, возникает ошибка. -
Если
partition_columnне относится кcolumn_identifierв таблицеcolumn_specification,column_typeопределяет тип данныхpartition_column.Не все типы данных, поддерживаемые SQL Databricks, поддерживаются всеми источниками данных.
Примечания.
Если вы не определяете столбцы для секционирования таблицы Delta Lake, столбцы, указанные в спецификации, всегда перемещаются в конец таблицы.
PARTITION
Для идентификации раздела, который будет запрашиваться или подвергаться манипулированию, используется условие PARTITION.
Раздел идентифицируется путем указания всех его столбцов и присвоения каждому значения. Нет необходимости указывать их в определенном порядке.
Если вы не добавляете новую секцию в существующую таблицу, можно опустить столбцы или значения, чтобы указать, что операция применяется ко всем соответствующим секциям, соответствующим подмножеству столбцов.
PARTITION ( { partition_column [ = partition_value | LIKE pattern ] } [ , ... ] )
Параметры
-
Столбец, названный столбцом секционирования таблицы. Вы не можете указать один и тот же столбец дважды.
= partition_valueЛитерал типа данных, соответствующий типу столбца раздела. Если опустить значение секции, спецификация будет соответствовать всем значениям для этого столбца секционирования.
LIKE patternЭта форма разрешена только в ALTER SHARE ADD TABLE.
Сопоставляет строковое представление
partition_columnсpattern. Объектpatternдолжен быть строковым литералом, как используется в LIKE.
Примеры
-- Use the PARTTIONED BY clause in a table definition
> CREATE TABLE student(university STRING,
major STRING,
name STRING)
PARTITIONED BY(university, major)
> CREATE TABLE professor(name STRING)
PARTITIONED BY(university STRING,
department STRING);
-- Use the PARTITION specification to INSERT into a table
> INSERT INTO student
PARTITION(university= 'TU Kaiserslautern') (major, name)
SELECT major, name FROM freshmen;
-- Use the partition specification to add and drop a partition
> CREATE TABLE log(date DATE, id INT, event STRING)
USING CSV
PARTITIONED BY (date);
> ALTER TABLE log ADD PARTITION(date = DATE'2021-09-10');
> ALTER TABLE log DROP PARTITION(date = DATE'2021-09-10');
-- Drop all partitions from the named university, independent of the major.
> ALTER TABLE student DROP PARTITION(university = 'TU Kaiserslautern');