Particiones

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Una partición se compone de un subconjunto de filas de una tabla que comparten el mismo valor para un subconjunto predefinido de columnas denominado columnas de partición. El uso de particiones puede acelerar las consultas en la tabla, así como la manipulación de datos.

Para usar particiones, defina el conjunto de columnas de partición al crear una tabla mediante la inclusión de la cláusula PARTITIONED BY.

Al insertar o manipular filas de una tabla, Azure Databricks distribuye automáticamente las filas en las particiones adecuadas.

También puede especificar la partición directamente mediante una cláusula PARTITION.

Esta sintaxis también está disponible para tablas que no usan el formato de Delta Lake, para descartar, agregar o cambiar de nombre (DROP, ADD o RENAME) rápidamente las particiones mediante la instrucción ALTER TABLE.

PARTITIONED BY

La cláusula PARTITIONED BY especificaba una lista de columnas a lo largo de las cuales se particiona la nueva tabla.

Sintaxis

PARTITIONED BY ( { partition_column [ column_type ] } [, ...] )

Parámetros

  • partition_column

    Un identificador puede hacer referencia a un elemento column_identifier de la tabla. Si especifica más de una columna, no debe haber duplicados. Si hace referencia a todas las columnas en el parámetro column_specification de la tabla, se produce un error.

  • column_type

    A menos que el parámetro partition_column haga referencia a column_identifier en el parámetro column_specification de la tabla, column_type define el tipo de datos de partition_column.

    No todos los tipos de datos admitidos por Databricks SQL admiten todos los orígenes de datos.

Notas

A menos que defina una tabla de Delta Lake, las columnas de partición que hacen referencia a las de la especificación de columna siempre se mueven al final de la tabla.

PARTITION

Use la cláusula PARTITION para identificar una partición que se vaya a consultar o manipular.

Una partición se identifica nombrando todas sus columnas y asociando a cada una un valor. No es necesario especificarlas en un orden determinado.

A menos que vaya a agregar una nueva partición a una tabla existente, puede omitir columnas o valores para indicar que la operación se aplica a todas las particiones que coinciden con el subconjunto de columnas.

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

Parámetros

  • partition_column

    Columna denominada columna de partición de la tabla. No puede especificar la misma columna dos veces.

  • = partition_value

    Literal de un tipo de datos que coincide con el tipo de la columna de partición. Si omite un valor de partición, la especificación coincidirá con todos los valores de esta columna de partición.

  • LIKE pattern

    Este formato solo se permite en ALTER SHARE ADD TABLE.

    Coincide con la representación de cadena de partition_column en pattern. pattern debe ser un literal de cadena como se usa en LIKE.

Ejemplos

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