Ignorando dados
No Databricks Runtime 13.3 e versões superiores, Databricks recomenda o uso clustering líquido para tabelas de disposição. O agrupamento não é compatível com Z-ordering Consulte Usar clustering líquido para tabelas.
As informações sobre dados omitidos são coletadas automaticamente quando você insere dados em uma tabela. Databricks aproveita essas informações (valores mínimos e máximos, contagens de valores nulos e total de registros por arquivo) no momento da consulta para fornecer consultas mais rápidas.
Você deve coletar estatísticas para as colunas usadas nas declarações ZORDER. Veja o que é Z-ordering?.
Especificar colunas de estatísticas
Para tabelas externas Unity Catalog , as estatísticas são coletadas, por default nas primeiras 32 colunas definidas no esquema da tabela. Para tabelas gerenciadas Unity Catalog , as estatísticas de omissão 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. Databricks recomenda ativar a otimização preditiva para todas as tabelas gerenciadas Unity Catalog para simplificar a manutenção de dados e reduzir os custos de armazenamento. Consulte Otimização preditiva para Unity Catalog gerenciar tabelas.
Se você não estiver usando a otimização preditiva, poderá modificar o comportamento que limita as coletas de estatísticas a 32 colunas definindo uma das seguintes propriedades da tabela:
Propriedade da tabela | Databricks Runtime apoiado | Descrição |
|---|---|---|
| Todas as versões suportadas do Databricks Runtime | Aumentar ou diminuir o número de colunas nas quais as estatísticas são coletadas. Depende da ordem das colunas. |
| Databricks Runtime 13.3 LTS e acima | Especifique uma lista de nomes de colunas para as quais as estatísticas serão coletadas. Substitui |
As propriedades da tabela podem ser definidas 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 default de coleta de estatísticas para definir a coleta de estatísticas em colunas nomeadas:
-- For Delta tables
ALTER TABLE table_name SET TBLPROPERTIES('delta.dataSkippingStatsColumns' = 'col1, col2, col3')
-- For Iceberg tables
ALTER TABLE table_name SET TBLPROPERTIES('iceberg.dataSkippingStatsColumns' = 'col1, col2, col3')
A atualização dessas propriedades não recalcula automaticamente as estatísticas para os dados existentes. Em vez disso, afeta o comportamento da coleta futura de estatísticas ao adicionar ou atualizar dados na tabela. As estatísticas não são utilizadas para colunas que não estejam incluídas na lista atual de colunas estatísticas.
No Databricks Runtime 14.3 LTS e versões superiores, se você alterou as propriedades da tabela ou modificou as colunas especificadas para estatísticas, pode acionar manualmente o recálculo das estatísticas da tabela usando o seguinte comando:
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
strings longos são truncados durante a coleta de estatísticas. O senhor pode optar por excluir colunas de strings longas da coleta de estatísticas, especialmente se as colunas não forem usadas com frequência para filtrar consultas.
O que é Z-ordering?
A Databricks recomenda o uso de clustering líquido para todas as novas tabelas. Não é possível usar ZORDER em combinação com clustering líquido. Consulte Usar clustering líquido para tabelas.
Z-ordering é uma técnica para colocar informações relacionadas no mesmo conjunto de arquivos. Os algoritmos de exclusão de dados do Databricks utilizam automaticamente essa co-localidade. Esse comportamento reduz a quantidade de dados que precisam ser lidos. Para ordenar os dados Z-order , especifique as colunas pelas quais 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írgulas. No entanto, a eficácia da localidade diminui a cada coluna extra. O Z-ordering em colunas que não têm estatísticas coletadas seria ineficaz e um desperdício de recursos. Isso ocorre porque a omissão de dados exige estatísticas locais da coluna, como mínimo, máximo e contagem. Você pode configurar a coleta de estatísticas em determinadas colunas reordenando as colunas no esquema ou pode aumentar o número de colunas nas quais coletar estatísticas.
-
O Z-ordering não é idempotente , mas pretende ser uma operação incremental. Não é garantido que o tempo necessário para o Z-ordering seja reduzido em várias execuções. No entanto, se nenhum novo dado foi adicionado a uma partição que foi apenas Z-ordered, outro Z-ordering dessa partição não terá nenhum efeito.
-
O Z-Ordering visa produzir arquivos de dados equilibrados em relação ao número de tuplas, mas não necessariamente ao tamanho dos dados no disco.As duas medidas são frequentemente correlacionadas, mas pode haver situações em que esse não é o caso, levando a distorções na otimização dos tempos das tarefas.
Por exemplo, se o senhor
ZORDER BYdata e os registros mais recentes forem todos muito mais amplos (por exemplo, matrizes ou valores de strings mais longos) do que os anteriores, espera-se que a duração da tarefa doOPTIMIZEJob seja distorcida, bem como os tamanhos de arquivo resultantes. No entanto, isso é um problema apenas para o comandoOPTIMIZEem si; não deve ter nenhum impacto negativo nas consultas subsequentes.