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.
Note
No Databricks Runtime 13.3 ou superior, a Databricks recomenda o uso do agrupamento líquido para o layout de tabelas. O clustering não é compatível com a ordenação Z. Consulte Usar clustering líquido para tabelas.
As estatísticas de salto de dados são coletadas automaticamente ao gravar dados em uma tabela Delta Lake ou Apache Iceberg gerenciada. Azure Databricks usa estatísticas por arquivo (valores mínimos e máximos, contagens nulas e registros totais) no momento da consulta para ignorar arquivos irrelevantes e acelerar as consultas.
Você precisa coletar as estatísticas para as colunas usadas nas instruções do ZORDER. Confira O que é ordenação Z?.
Especificar colunas de estatísticas
Para tabelas externas do Catálogo do Unity, as estatísticas são coletadas nas primeiras 32 colunas definidas em seu esquema de tabela por padrão. Para as tabelas gerenciadas do Unity Catalog, as estatísticas de salto de arquivos são escolhidas de forma inteligente, usando otimização preditiva, e não possuem um limite de 32 colunas. A otimização preditiva executa automaticamente ANALYZE, um comando para coletar estatísticas. O Databricks recomenda habilitar a otimização preditiva para todas as tabelas gerenciadas do Catálogo do Unity para simplificar a manutenção de dados e reduzir os custos de armazenamento. Consulte Otimização Preditiva para Tabelas Gerenciadas do Unity Catalog.
Se você não estiver usando a otimização preditiva, poderá modificar o comportamento que limita as coleções de estatísticas a 32 colunas definindo uma das seguintes propriedades da tabela:
| Propriedade da tabela | Databricks Runtime com suporte | Description |
|---|---|---|
dataSkippingNumIndexedCols |
Todas as versões com suporte do Databricks Runtime | Aumente ou diminua o número de colunas nas quais as estatísticas são coletadas. Depende da ordem das colunas. |
dataSkippingStatsColumns |
Databricks Runtime 13.3 LTS e versões posteriores | Especifique uma lista de nomes de coluna para os quais as estatísticas são coletadas. Substitui dataSkippingNumIndexedCols. |
As propriedades da tabela podem ser configuradas na criação da tabela ou com instruções ALTER TABLE. Consulte a referência de propriedades da tabela. O exemplo a seguir substitui o comportamento de coleta de estatísticas padrão para definir a coleção de estatísticas em colunas nomeadas:
Lago Delta
ALTER TABLE table_name SET TBLPROPERTIES('delta.dataSkippingStatsColumns' = 'col1, col2, col3')
Tabela iceberg
ALTER TABLE table_name SET TBLPROPERTIES('iceberg.dataSkippingStatsColumns' = 'col1, col2, col3')
Atualizar essas propriedades não recompila automaticamente estatísticas para dados existentes. Na verdade, afeta o comportamento da coleta de estatísticas futuras ao adicionar ou atualizar dados na tabela. As estatísticas não são usadas para colunas não incluídas na lista atual de colunas de estatísticas.
No Databricks Runtime 14.3 LTS e posteriores, se você alterou as propriedades da tabela ou alterou as colunas especificadas para estatísticas, poderá disparar manualmente a recomputação de estatísticas para uma tabela usando o seguinte comando:
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
Note
As cadeias de caracteres longas são truncadas durante a coleta de estatísticas. Você pode optar por excluir colunas de cadeia de caracteres longas da coleção de estatísticas, especialmente se as colunas não forem usadas com frequência para filtrar consultas.
O que é ordenação Z?
Note
Databricks recomenda o uso de agrupamento líquido para todas as novas tabelas. Você não pode usar ZORDER junto com o liquid clustering. Consulte Usar clustering líquido para tabelas.
A ordenação Z é uma técnica para colocar informações relacionadas no mesmo conjunto de arquivos. Algoritmos de pular dados do Azure Databricks automaticamente usam essa co-localidade. Esse comportamento reduz a quantidade de dados que precisam ser lidos. Para aplicar a ordem Z nos dados, especifique as colunas a serem ordenadas na cláusula ZORDER BY.
OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)
Se você espera que uma coluna seja comumente usada em predicados de consulta e se essa coluna tiver alta cardinalidade (ou seja, um grande número de valores distintos), use ZORDER BY.
Você pode especificar várias colunas para ZORDER BY como lista separada por vírgulas. No entanto, a eficácia cai com cada coluna extra.
O Databricks recomenda que você não use ZORDER BY colunas que não têm estatísticas coletadas porque ela é ineficaz e usa recursos de computação desnecessários. O salto de dados requer estatísticas locais de coluna, como mínimo, máximo e contagem. Você pode configurar a coleta de estatísticas em determinadas colunas reordenando a colunas no esquema, ou pode aumentar o número de colunas nas quais as estatísticas são coletadas.
Note
A ordenação Z não é idempotente, mas visa ser uma operação incremental. Não há garantia de que o tempo necessário para a ordenação Z diminua ao longo de várias execuções. No entanto, se nenhum novo dado foi adicionado a uma partição que foi apenas ordenada por Z, outra ordenação Z dessa partição não terá nenhum efeito.
A ordenação Z visa produzir arquivos de dados equilibrados em relação ao número de tuplas, mas não necessariamente ao tamanho dos dados no armazenamento. Embora os tamanhos dos arquivos e o número de tuplas estejam correlacionados, pode haver situações em que isso não ocorra, o que distorce os tempos das tarefas de otimização.
Por exemplo, se você
ZORDER BYdata e seus registros mais recentes forem todos muito mais largos (como arrays mais longos ou valores de string) do que os anteriores, as durações das tarefas doOPTIMIZEjob e os tamanhos de arquivo resultantes poderão ficar distorcidos. No entanto, isso é apenas um problema para oOPTIMIZEcomando em si; provavelmente não tem efeitos negativos em consultas subsequentes.