Omissão de dados

Note

No Databricks Runtime 13.3 e versões superiores, o Databricks recomenda o uso de clustering dinâmico para o layout de tabelas. O clustering não é compatível com a ordem Z. Veja Utilizar clustering líquido para tabelas.

As estatísticas de salto de dados são recolhidas automaticamente quando escreve dados numa tabela de Delta Lake ou Apache Iceberg gerida. O Azure Databricks utiliza estatísticas por ficheiro (valores mínimos e máximos, contagens nulas e registos totais) no momento da consulta para saltar ficheiros irrelevantes e acelerar consultas.

Você deve ter estatísticas coletadas para colunas que são usadas em ZORDER declarações. Consulte O que é Z-ordering?.

Especificar colunas de estatísticas

Para as tabelas externas do Unity Catalog, as estatísticas são recolhidas nas primeiras 32 colunas definidas no seu esquema de tabela por defeito. Para tabelas geridas pelo Unity Catalog, as estatísticas de salto de ficheiros são escolhidas de forma inteligente usando otimização preditiva, e não têm um limite de 32 colunas. A otimização preditiva executa ANALYZEautomaticamente , um comando para coletar estatísticas. A Databricks recomenda habilitar a otimização preditiva para todas as tabelas gerenciadas pelo Unity Catalog para simplificar a manutenção de dados e reduzir os custos de armazenamento. Consulte Otimização preditiva para tabelas gerenciadas do Unity Catalog.

Se não estiver a usar otimização preditiva, pode modificar o comportamento que limita as coleções estatísticas a 32 colunas definindo uma das seguintes propriedades da tabela:

Propriedade da Tabela Databricks Runtime suportado Description
dataSkippingNumIndexedCols Todas as versões suportadas do Databricks Runtime Aumentar ou diminuir o número de colunas onde as estatísticas são recolhidas. Depende da ordem das colunas.
dataSkippingStatsColumns Databricks Runtime 13.3 LTS ou superior Especifique uma lista de nomes de colunas para os quais as estatísticas são recolhidas. Substitui dataSkippingNumIndexedCols.

As propriedades da tabela podem ser definidas na criação da tabela ou através de instruções ALTER TABLE. Consulte Referência de Propriedades da Tabela. O exemplo a seguir substitui o comportamento padrão de coleta de estatísticas para definir a coleta de estatísticas em colunas nomeadas:

Lago Delta

ALTER TABLE table_name SET TBLPROPERTIES('delta.dataSkippingStatsColumns' = 'col1, col2, col3')

Tabela de iceberg

ALTER TABLE table_name SET TBLPROPERTIES('iceberg.dataSkippingStatsColumns' = 'col1, col2, col3')

Atualizar estas propriedades não recalcula automaticamente as estatísticas dos dados existentes. Em vez disso, 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 que não estão incluídas na lista atual de colunas estatísticas.

No Databricks Runtime 14.3 LTS e superiores, se tiver alterado as propriedades da tabela ou alterado as colunas especificadas para estatísticas, pode ativar manualmente o recálculo das estatísticas para uma tabela usando o seguinte comando:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

Note

Cadeias de caracteres longas são truncadas durante a coleta de estatísticas. Você pode optar por excluir colunas longas de cadeia de caracteres da coleção de estatísticas, especialmente se as colunas não forem usadas com frequência para filtrar consultas.

O que é Z-ordering?

Note

A Databricks recomenda o uso de clustering líquido para todas as novas tabelas. Não podes usar ZORDER em conjunto com liquid clustering. Veja Utilizar clustering líquido para tabelas.

Z-ordering é uma técnica para agrupar informações relacionadas no mesmo conjunto de arquivos. Os algoritmos de salto de dados do Azure Databricks usam automaticamente esta co-localidade. Este comportamento reduz a quantidade de dados que precisam de ser lidos. Para ordenar os dados pelo método Z-order, especifique as colunas a ordenar 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 uma lista separada por vírgula. No entanto, a eficácia diminui a cada coluna extra.

O Databricks recomenda que não uses ZORDER BY em colunas que não têm estatísticas recolhidas porque é ineficaz e consome recursos computacionais desnecessários. Saltar dados requer estatísticas locais por colunas como min, max e contagem. Você pode configurar a coleta de estatísticas em determinadas colunas reordenando colunas no esquema ou pode aumentar o número de colunas nas quais coletar estatísticas.

Note

  • A ordenação Z não é idempotente, mas pretende ser uma operação incremental. Não é garantido 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 tem qualquer efeito.

  • A ordenação Z visa produzir ficheiros de dados equilibrados em relação ao número de tuplas, mas não necessariamente ao tamanho dos dados em armazenamento. Embora os tamanhos dos ficheiros e o número de tuplas estejam correlacionados, podem existir situações em que não há essa correlação, o que distorce os tempos das tarefas de otimização.

    Por exemplo, se ZORDER BYdatar e os teus registos mais recentes forem todos muito maiores (como arrays mais longos ou valores de cadeias de caracteres) do que os do passado, as durações das tarefas do OPTIMIZE job e os tamanhos dos ficheiros resultantes podem ficar enviesados. Isto, no entanto, é apenas um problema do OPTIMIZE comando em si; provavelmente não tem quaisquer efeitos negativos nas consultas subsequentes.