Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No Databricks Runtime 16.4 LTS e versões posteriores, especifique regras de agrupamento em campos de string de tabelas do Delta Lake para controlar comparações de strings e o comportamento de ordenação no nível da coluna, como habilitar correspondência sem distinção entre maiúsculas e minúsculas ou ordenação sensível à localidade.
Para obter uma explicação completa dos tipos de ordenação, convenções de nomenclatura e regras de precedência, consulte Ordenação.
Por padrão, Delta Lake define a ordenação de campos de cadeia de caracteres como UTF8_BINARY.
Important
Habilitar a ordenação adiciona o recurso de gravação de tabela collations à sua tabela do Delta Lake, o que afeta a compatibilidade com leitores externos e outros recursos da plataforma. Examine a seção Limitações antes de habilitar a ordenação em tabelas de produção.
Criar uma tabela com ordenação
Você pode especificar a ordenação no nível da coluna ao criar uma nova tabela. A ordenação pode ser aplicada a colunas de cadeia de caracteres de nível superior e campos de cadeia de caracteres dentro de tipos aninhados:
CREATE TABLE catalog.schema.my_table (
id BIGINT,
name STRING COLLATE UTF8_LCASE,
metadata STRUCT<label: STRING COLLATE UNICODE>,
tags ARRAY<STRING COLLATE UTF8_LCASE>,
properties MAP<STRING, STRING COLLATE UTF8_LCASE>
) USING delta
Note
As chaves MAP não podem usar ordenação. Somente os valores MAP oferecem suporte a cadeias de caracteres organizadas.
Alterar ordenação em uma coluna existente
Você pode alterar a ordenação de uma coluna existente usando ALTER TABLE.
Por exemplo, para definir uma coluna com ordenação que não diferencia maiúsculas de minúsculas:
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_LCASE
Por exemplo, para reverter uma coluna para a ordenação binária padrão:
--
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_BINARY
Atualizar estatísticas e layout de dados depois de alterar a ordenação
Alterar a ordenação de uma coluna não reescreve dados existentes nem atualiza estatísticas. As consultas retornam resultados corretos sob a nova ordenação imediatamente, mas ignorar arquivos e o clustering pode ser menos eficaz até que você execute as seguintes etapas:
- Atualize as estatísticas de ignorar arquivos para a coluna:
ANALYZE TABLE my_table COMPUTE DELTA STATISTICS
- Se a tabela usar clustering do Liquid, reescreva o layout de clustering:
OPTIMIZE FULL my_table
- Se a tabela usar o ZORDER, desative a otimização incremental e reescreva todos os arquivos:
SET spark.databricks.optimize.incremental = false;
OPTIMIZE my_table ZORDER BY zorder_column;
Ignorar essas etapas não causa resultados incorretos, mas pode reduzir o desempenho da consulta em dados históricos até a próxima reescrita completa.
A ordenação é sempre respeitada pelo Azure Databricks nos resultados da consulta.
Desativar a ordenação de uma tabela
Para remover o recurso de tabela de ordenação, defina cada coluna agrupada de volta como UTF8_BINARY.
Primeiro, execute este comando para cada coluna agrupada:
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_BINARY
Em seguida, remova o recurso da tabela:
ALTER TABLE my_table DROP FEATURE collations
Consulte Remover um recurso da tabela do Delta Lake e fazer downgrade do protocolo da tabela para obter mais detalhes.
Evolução e ordenação de esquema
Quando a evolução do esquema adiciona ou mescla colunas que têm a ordenação especificada, as seguintes regras se aplicam:
- Se uma coluna de origem já existir na tabela de destino, a ordenação da tabela de destino para essa coluna será preservada. A ordenação da coluna de origem é ignorada.
- Se uma coluna de origem for nova e tiver uma ordenação especificada, a tabela de destino adotará essa ordenação para a nova coluna.
- Se a tabela de destino ainda não tiver o recurso de
collationstabela habilitado, adicionar uma coluna agrupada a habilitará automaticamente.
Limitações
As limitações a seguir se aplicam às tabelas do Delta Lake com agrupamento habilitado:
Compatibilidade e interoperabilidade:
- Os leitores externos que não reconhecem o recurso de tabela
collationsrecorrem aoUTF8_BINARY, o que pode produzir ordens de classificação ou comparações incorretas. - O OpenSharing não dá suporte ao compartilhamento de partições individuais em colunas de ordenação não padrão. Em vez disso, compartilhe a tabela.
- UniForm não é compatível com tabelas com ordenação.
- Tabelas delta lake criadas externamente com uma ordenação não reconhecida pelo Databricks Runtime geram uma exceção quando consultadas.
- As APIs delta lake do OSS para Scala ou Python não dão suporte à ordenação. Use APIs de SQL ou DataFrame do Spark.
Restrições de consulta e recurso:
- Colunas ordenadas não podem ser usadas em restrições
CHECK - Colunas agrupadas não podem ser referenciadas em expressões de coluna geradas
- Colunas ordenadas não podem ser usadas com índices de filtro de bloom (preteridos)
- Colunas ordenadas não podem ser referenciadas em consultas com estado de Streaming Estruturado (agregações, junções, eliminação de duplicação)
- Uma
MAPchave não pode ser uma cadeia de caracteres agrupada. Somente valoresMAPdão suporte à ordenação