Particiones
Se aplica a: Databricks SQL 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
-
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ámetrocolumn_specification
de la tabla, se produce un error. -
A menos que el parámetro
partition_column
haga referencia acolumn_identifier
en el parámetrocolumn_specification
de la tabla,column_type
define el tipo de datos departition_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
-
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
enpattern
.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
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');