Поделиться через


Секции

Область применения: флажок 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 ] } [, ...] )

Параметры

  • partition_column

    Идентификатор может ссылаться на column_identifier в таблице. При указании более чем одного столбца не должно быть дубликатов. При ссылке на все столбцы в column_specification таблицы возникает ошибка.

  • column_type

    Если partition_column не ссылается на column_identifier в column_specification таблицы, column_type определяет тип данных для partition_column.

    Не все типы данных, поддерживаемые SQL Databricks, поддерживаются всеми источниками данных.

Примечания.

Если не определить секционирование таблиц Delta Lake, столбцы, которые ссылаются на столбцы в спецификации столбцов, всегда перемещаются в конец таблицы.

СЕКЦИЯ

Используйте предложение PARTITION, чтобы указать секцию для запроса или управления.

Секция указывается путем перечисления имен всех ее столбцов и связывания каждого столбца со значением. Нет необходимости указывать столбцы в определенном порядке.

Можно опустить столбцы или значения для указания того, что операция применяется ко всем секциям, соответствующим подмножеству столбцов. Если только вы не добавляете новую секцию в существующую таблицу.

PARTITION ( { partition_column  [ = partition_value | LIKE pattern ] } [ , ... ] )

Параметры

  • partition_column

    Столбец, названный как столбец секционирования таблицы. Нельзя указать один и тот же столбец дважды.

  • = 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');