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 ordenações em campos de cadeia de caracteres e ler tabelas Delta que usam ordenações no Databricks Runtime 16.4 LTS e superior.
Habilitar a ordenação de uma tabela adiciona o recurso de tabela de gravação collations-preview. Consulte a compatibilidade de recursos e protocolos do Delta Lake.
Observação
Por padrão, Delta Lake define a ordenação de campos de cadeia de caracteres como UTF8_BINARY.
Criar uma tabela com ordenação no nível da coluna
Você pode criar uma nova tabela com ordenação no nível da coluna usando o seguinte comando:
CREATE TABLE $tableName (
nonCollatedColName STRING,
collatedColName STRING COLLATE UNICODE,
structColName STRUCT<nestedFieldName: STRING COLLATE UNICODE>,
mapColName MAP<STRING, STRING COLLATE UNICODE>,
arrayColName ARRAY<STRING COLLATE UNICODE>
) USING delta
Alterar uma coluna de tabela para especificar ordenação
Você pode atualizar uma coluna existente para usar a ordenação usando os seguintes comandos:
ALTER TABLE tableName ALTER COLUMN columnName TYPE newType
Para remover uma ordenação não padrão (se houver uma):
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_BINARY
Para alterar a ordenação de coluna para utf8_lcase:
ALTER TABLE tableName ALTER COLUMN columnName TYPE STRING COLLATE UTF8_LCASE
Alterar a ordenação de uma tabela não atualiza automaticamente estatísticas ou layout de dados para dados gravados anteriormente. Para melhorar o pulo de arquivos em relação a dados históricos com a nova ordenação, Databricks recomenda o seguinte:
Execute
ANALYZE table_name COMPUTE DELTA STATISTICSpara atualizar as estatísticas de pular arquivos para arquivos de dados existentes.Para tabelas com clustering líquido habilitado, execute
OPTIMIZE FULL table_namepara atualizar o clustering líquido.Para tabelas que usam
ZORDER, faça o seguinte:Desabilite a otimização incremental na Sessão do Spark substituindo a configuração padrão do Spark com o seguinte comando:
SET spark.databricks.optimize.incremental=falseExecute
OPTIMIZE table_name ZORDER BY zorder_columnpara reescrever todos os arquivos de dados existentes.
A ordem de classificação sempre será respeitada pelo Azure Databricks nos resultados da consulta.
Desabilitar a ordenação de uma tabela
Você deve desabilitar explicitamente a ordenação para cada coluna de cadeia de caracteres em uma tabela antes de remover o recurso de ordenação.
Use a sintaxe a seguir para definir a ordenação de uma coluna como UTF8_BINARY:
ALTER TABLE table_name
ALTER COLUMN column_name
TYPE STRING
COLLATE UTF8_BINARY
Para remover o recurso de tabela, execute o seguinte comando:
ALTER TABLE table_name
DROP FEATURE collations-preview
Confira Remover um recurso de tabela do Delta Lake e fazer downgrade do protocolo de tabela.
Evolução e ordenação de esquema
A ordenação interage com a evolução do esquema usando as seguintes regras:
- Se uma coluna de origem já existir na tabela de destino, a ordenação da coluna na tabela de destino permanecerá inalterada.
- Se uma coluna de origem tiver a ordenação especificada, a coluna adicionada à tabela de destino usará a ordenação especificada.
- Se a tabela de destino não tiver classificação ativada quando uma coluna com classificação for adicionada, o recurso de
collations-previewtabela será ativado.
Limitações
As seguintes limitações existem para tabelas com ordenação habilitada:
- Tabelas delta criadas externamente com uma ordenação não reconhecida pelo Databricks Runtime geram uma exceção quando consultadas.
- Não há suporte para o Compartilhamento Delta.
- Colunas agrupadas não podem ser usadas com
CHECKrestrições. - Colunas geradas não podem usar ordenação.
- Colunas agrupadas não podem ser usadas com colunas de índice de filtro de flores.
- Não há suporte para ordenação em APIs delta lake do OSS para Scala ou Python. Você deve usar APIs do Spark SQL ou DataFrame para habilitar a ordenação.
- Não há suporte para substituição de partição dinâmica em colunas agrupadas.
- Colunas agrupadas não podem ser referenciadas em consultas com estado de Streaming Estruturado.
- Leitores externos que não respeitam a funcionalidade da tabela
collations-preview, retornam à ordenação padrão deUTF8_BINARY. - Não
MAPpode ter uma chave que seja uma cadeia de caracteres ordenada. - O UniForm não funciona com colações.