Partições

Aplica-se a:verificar a verificação sim Databricks SQL marcada como sim Databricks Runtime

Uma partição é composta por um subconjunto de linhas numa tabela que partilham o mesmo valor para um subconjunto predefinido de colunas denominadas colunas de criação de partições. A utilização de partições pode acelerar as consultas na tabela, bem como a manipulação de dados.

Para utilizar partições, defina o conjunto de colunas de criação de partições quando cria uma tabela, incluindo a cláusula PARTITIONED BY .

Ao inserir ou manipular linhas numa tabela, o Azure Databricks distribui automaticamente linhas para as partições adequadas.

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

Esta sintaxe também está disponível para tabelas que não utilizam o formato Delta Lake, para REMOVER, ADICIONAR ou MUDAR O NOME de partições rapidamente com a instrução ALTER TABLE.

PARTICIONADO POR

A PARTITIONED BY cláusula especificou uma lista de colunas ao longo das quais 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 especificar mais do que uma coluna, não tem de haver duplicados. Se referenciar todas as colunas na tabela column_specification , é gerado um erro.

  • column_type

    A menos que se partition_column refira a um column_identifier na tabela column_specification, column_type define o tipo de dados do partition_column.

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

Notas

A menos que defina uma tabela Delta Lake, as colunas de criação de partições que referenciam as colunas na especificação da coluna são sempre movidas para o fim da tabela.

PARTIÇÃO

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

Uma partição é identificada ao atribuir um nome a todas as colunas e associar cada uma a um valor. Não precisa de especificá-los por uma ordem específica.

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

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

Parâmetros

  • partition_column

    Uma coluna denominada coluna de partição da tabela. Pode não 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 omitir um valor de partição, a especificação corresponderá a todos os valores desta coluna de partição.

  • LIKE pattern

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

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