Разделов
Область применения: Databricks SQL Databricks Runtime
Секция состоит из подмножества строк в таблице, которые используют одно и то же значение для предопределенного подмножества столбцов, называемых столбцами секционирования. Использование секций может ускорить запросы к таблице, а также обработку данных.
Чтобы использовать секции, необходимо определить набор столбцов секционирования при создании таблицы, включив предложение 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
данных .Не все типы данных , поддерживаемые Databricks SQL, поддерживаются всеми источниками данных.
Примечания
Если не определить секционирование таблицы 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 LOCATION 'dbfs:/log'
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');