Partições

Aplica-se a: marca de seleção positiva Databricks SQL marca de seleção positiva Azure Databricks Runtime

A partição é composta por um subconjunto de linhas de uma tabela que compartilham o mesmo valor de um subconjunto predefinido de colunas chamadas colunas de particionamento. O uso de partições pode acelerar as consultas na tabela e a manipulação de dados.

Para usar partições, você define o conjunto de colunas de particionamento ao criar uma tabela incluindo a cláusula PARTITIONED BY.

Ao inserir ou manipular linhas em uma tabela, o Azure Databricks distribui automaticamente as linhas nas partições apropriadas.

Você também pode especificar a partição diretamente com uma cláusula PARTITION.

Essa sintaxe também está disponível em tabelas que não usam o formato Delta Lake, para DROP (soltar), ADD (adicionar) ou RENAME (renomear) partições rapidamente com a instrução ALTER TABLE.

PARTITIONED BY

A cláusula PARTITIONED BY especificou uma lista de colunas ao longo da qual a nova tabela é particionada.

Sintaxe

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

Parâmetros

  • partition_column

    Um identificador pode referenciar um column_identifier na tabela. Se você especificar mais de uma coluna, não poderá haver colunas duplicadas. Se você referencia todas as colunas na tabela column_specification, um erro é gerado.

  • column_type

    A menos que partition_column referencie-se a um column_identifier na column_specification da tabela, column_type define o tipo de dados da partition_column.

    Nem todos os tipos de dados com o suporte do Databricks SQL têm suporte de todas as fontes de dados.

Observações

A menos que você defina uma tabela do Delta Lake, as colunas de particionamento que referenciam as colunas na especificação de coluna sempre serão movidas para o final da tabela.

PARTITION

Use a cláusula PARTITION para identificar a partição a ser consultada ou manipulada.

Para identificar uma partição, é necessário nomear todas as suas colunas e associar cada uma a um valor. Você não precisa determinar uma ordem específica para elas.

A menos que você esteja adicionando uma nova partição a uma tabela existente, você pode omitir colunas ou valores para indicar que a operação se aplica a todas as partições associadas que correspondem ao subconjunto de colunas.

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

Parâmetros

  • partition_column

    Uma coluna chamada coluna de partição da tabela. Não é possível especificar a mesma coluna duas vezes.

  • = partition_value

    Um literal de um tipo de dados que corresponde ao tipo da coluna de partição. Se você omite um valor de partição, a especificação corresponde-se a todos os valores dessa coluna de partição.

  • LIKE pattern

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

    Corresponde a representação de cadeia de caracteres de partition_column para pattern. pattern deve ser um literal de cadeia de caracteres, conforme 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');