Секции
Область применения: Databricks SQL Databricks Runtime
Секция состоит из подмножества строк в таблице, имеющих одинаковое значение для предопределенного подмножества столбцов, называемых столбцами секционирования. Использование секций может ускорить выполнение запросов к таблице, а также обработку данных.
Для использования секций необходимо определить набор столбцов секционирования при создании таблицы, включив предложение PARTITIONED BY.
При вставке или управлении строками в таблице Azure Databricks автоматически отправляет строки в соответствующие секции.
Можно также указать секцию напрямую, используя предложение PARTITION.
Этот синтаксис также доступен для таблиц, которые не используют формат Delta Lake, и позволяет ускорить операции DROP, ADD или RENAME с секциями с помощью инструкции ALTER TABLE.
PARTITIONED BY
В предложении 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_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');