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


Секции

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