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.
Você pode especificar agrupamentos em campos de texto em tabelas Delta Lake para controlar como as comparações de texto e a ordenação se comportam, como habilitar a correspondência sem diferenciar maiúsculas de minúsculas ou a ordenação sensível à localidade. Isso requer o Databricks Runtime 16.4 LTS e superior.
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 o agrupamento adiciona o recurso de gravação de tabela collations à sua tabela 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
MAP as chaves 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:
-- Set a column to case-insensitive collation
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_LCASE
-- Revert a column to the default binary collation
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 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 líquido, reescreva o layout de clustering:
OPTIMIZE FULL my_table
- Se a tabela usar o ZORDER, desabilite 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 causará resultados incorretos, mas poderá 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.
Desabilitar a ordenação de uma tabela
Para remover o recurso de tabela de ordenação, primeiro defina cada coluna agrupada de volta como UTF8_BINARY:
-- Repeat for each collated column
ALTER TABLE my_table ALTER COLUMN name TYPE STRING COLLATE UTF8_BINARY
Em seguida, solte o recurso de tabela:
ALTER TABLE my_table DROP FEATURE collations
Confira Remover um recurso de tabela do Delta Lake e rebaixar o 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 recorrem ao
collations, 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.
- Não há suporte para UniForm para 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 agrupadas não podem ser usadas em
CHECKrestrições - Colunas agrupadas não podem ser referenciadas em expressões de coluna geradas
- Colunas agrupadas não podem ser usadas com índices de filtro de flores (preteridos)
- Colunas agrupadas 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