Разделов

Область применения:проверка помечено да Databricks SQL проверка помечено да Databricks Runtime

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

Чтобы использовать секции, необходимо определить набор столбцов секционирования при создании таблицы, включив предложение PARTITIONED BY .

При вставке строк в таблице или управлении ими Azure Databricks автоматически отправляет строки в соответствующие секции.

Вы также можете указать секцию напрямую с помощью предложения PARTITION .

Этот синтаксис также доступен для таблиц, которые не используют формат Delta Lake, а также для быстрой настройки разделов DROP, ADD или RENAME с помощью инструкции ALTER TABLE.

СЕКЦИОНИРОВАНО ПО

Предложение 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данных .

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

Примечания

Если не определить секционирование таблицы 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');