Partilhar via


Partições

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime

Um partition é composto por um subconjunto de linhas de um table que compartilham o mesmo valor para um subconjunto predefinido de columns, chamado particionamento columns. O uso de partições pode acelerar consultas contra o table, bem como a manipulação de dados.

Para usar partições, você define o set de particionamento column quando cria um table incluindo a cláusula PARTICIONADO POR.

Ao inserir ou manipular linhas em um table o Azure Databricks despacha automaticamente as linhas para as partições apropriadas.

Você também pode especificar o partition diretamente usando uma cláusula PARTITION.

Essa sintaxe também está disponível para tables que não usam o formato Delta Lake, permitindo particionar rapidamente em DROP, ADD ou RENAME usando a instrução ALTER TABLE.

PARTICIONADO POR

A cláusula PARTITIONED BY especifica um list de columns ao longo do qual o novo table é particionado.

Sintaxe

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

Parameters

  • partition_column

    Um identifier pode fazer referência a um column_identifier no table. Se você especificar mais de um column não deve haver duplicatas. Se fizeres referência a todos os columns no column_specification do table, será gerado um erro.

  • column_type

    A menos que o partition_column se refira a um column_identifier no column_specificationdo table, column_type define o tipo de dados do partition_column.

    Nem todos os tipos de dados suportados pelo Databricks SQL são suportados por todas as fontes de dados.

Notas

A menos que você defina um Delta Lake table particionamento columns fazendo referência aos columns na especificação column são sempre movidos para o final do table.

PARTITION

Use a cláusula PARTITION para identificar um partition a ser consultado ou manipulado.

Um partition é identificado nomeando todos os seus columns e associando cada um a um valor. Você não precisa especificá-los em uma ordem específica.

A menos que você esteja adicionando um novo partition a um table existente, você pode omitir columns ou values para indicar que a operação se aplica a todas as partições correspondentes correspondentes ao subconjunto de columns.

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

Parameters

  • partition_column

    Um column nomeado como partitioncolumn do table. Você não pode especificar o mesmo column duas vezes.

  • = partition_value

    Uma constante de um tipo de dados que corresponda ao tipo de partitioncolumn. Caso omita um valor de partition, a especificação corresponderá a todos os values para este partitioncolumn.

  • LIKE pattern

    Este formulário só é permitido em ALTER SHARE ADD TABLE.

    Corresponde à representação de cadeia de caracteres de partition_column a pattern. patterndeve ser um literal de cadeia de caracteres como usado em LIKE.

Exemplos

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