Секции
Область применения: 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 ( { 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');