Respostas aproximadas, decisões exatas: novas funções de esboço para análise


Respostas aproximadas, decisões exatas: novas funções de esboço para análise
Conjuntos de dados em grande escala são compactados em esboços compactos e mescláveis, permitindo consultas e agregações rápidas de percentis sem verificar dados brutos.

Muitas questões analíticas são de apoio à decisão e não de auditoria. Se conhecer “~4,7 milhões de usuários únicos ±1%” leva à mesma decisão que “4.712.389 usuários únicos”, a resposta aproximada por uma fração do custo é estritamente melhor.

Cada warehouse tem um punhado de consultas que queimam a maior parte da computação: percentis que forçam classificações globais, contagens distintas que rastreiam cada valor único, classificações top-Ok que reorganizam conjuntos de dados inteiros. O Databricks agora oferece suporte a quatro novas famílias de funções de esboço, baseadas em Esboços de dados do Apacheque substituem esses cálculos exatos por aproximações de memória limitada. A compensação: erro relativo configurável de 1-2%. A recompensa: ordens de magnitude menos computação, além de esboços que você pode armazenar, mesclar e consultar novamente sem tocar nos dados brutos.

Cálculos percentuais em milissegundos, não em minutos

Quando você chama PERCENTILE(response_time_ms, 0.99) em uma tabela de bilhões de linhas, o mecanismo deve classificar cada valor globalmente. Uma mudança completa do cluster pode levar alguns minutos e consumir gigabytes de memória. Para um painel que é atualizado a cada 5 minutos, você paga esse custo continuamente.

Os esboços KLL são resumos compactos e mescláveis, criados para responder a questões quantílicas. Eles permitem substituir esse tipo usando a mesma memória limitada, independentemente de você processar mil valores ou um trilhão. O erro relativo típico é de 1 a 2% e é configurável, dentro da faixa acionável para monitoramento de latência, planejamento de capacidade e detecção de anomalias.

A verdadeira vantagem é a possibilidade de esboços de fluxo de trabalho. Crie-os uma vez durante seu ETL diário. Armazene-os como colunas em tabelas Delta. Quando um painel precisar de P50/P90/P99 para qualquer intervalo de tempo, mescle os esboços pré-computados em milissegundos em vez de verificar novamente os dados brutos. Extraia vários quantis de um único esboço em uma passagem com kll_get_quantile_bigint(sketch, ARRAY(0.5, 0.9, 0.99)).

Análise de sobreposição de público sem a conta de computação

Quantos usuários viram seu anúncio no Tremendous Bowl, mas não sua campanha no Instagram? A análise de sobreposição de público é elementary para a medição de advertising. Você precisa saber o alcance whole (usuários que viram alguma campanha), a sobreposição (usuários que viram várias campanhas) e o alcance exclusivo (usuários que viram apenas uma campanha). Mas a computação exata requer a coleta de cada ID de usuário na memória e a execução de operações definidas em potencialmente bilhões de identificadores. Em escala, isso se torna impraticável ou impossível.

Os esboços Theta resumem um conjunto de valores distintos na memória limitada e suportam álgebra de conjunto completo: uniões, interseções e diferenças. Crie um esboço por campanha e combine-os matematicamente:

A abordagem exata exigiria um UNION para desduplicar e, em seguida, um JOIN para encontrar a sobreposição, possivelmente embaralhando os IDs de usuário brutos duas vezes em seu cluster. Com os esboços Theta, você gera objetos binários compactos medidos em kilobytes, e o as operações definidas acontecem localmente em microssegundos. Isso torna práticas as curvas de alcance diário, a medição de incrementalidade e a desduplicação entre canais.

Tabelas de classificação em tempo actual sem reprocessamento de dados brutos

O que é tendência agora? É uma pergunta simples com uma resposta exata cara: conte cada valor distinto, armazene todas essas contagens, embaralhe-as em seu cluster, classifique globalmente. Para fluxos de eventos de alta cardinalidade, como logs de pesquisa ou fluxos de cliques, este é um trabalho em lote, não uma consulta ao vivo.

Os esboços aproximados dos principais Ok rastreiam os itens que ocorrem com mais frequência na memória limitada e permitem mesclar partições e janelas de tempo para extrair resultados instantaneamente. Itens raros podem ser descartados, o que é bom, porque não é isso que você está procurando.

Com approx_top_k_combine, seu painel de “tendências desta semana” torna-se uma fusão de 168 esboços pré-computados, em vez de uma varredura de bilhões de eventos brutos. Para cargas de trabalho de streaming, mescle o esboço de cada microlote em um whole em execução e exiba os resultados em tempo actual. O que antes period um trabalho em lote torna-se um placar ao vivo.

Cardinalidade e atribuição de receita em uma única passagem

Contar clientes distintos é uma questão. Somar suas receitas é outra. Fazer as duas coisas corretamente, sem contabilizar duas vezes os clientes que aparecem em vários períodos, é o desafio.

Considere uma pergunta analítica comum: “Quantos clientes únicos fizeram uma compra este mês e qual foi sua receita whole por região?” Normalmente, você começaria com um grande GROUP BY, desduplicando IDs de clientes e somando compras em bilhões de transações. E você não pode simplesmente somar os resultados anteriores; os clientes que aparecem em ambos os períodos são contabilizados duas vezes e suas receitas são exageradas.

Os esboços de tupla resolvem isso combinando contagem distinta e agregação métrica em uma estrutura única e mesclável.

Cada esboço mapeia um cliente distinto para seu gasto agregado. Quando você mescla vários dias, as contagens de clientes são desduplicadas automaticamente e as somas de receita são acumuladas. A computação incremental exata faria com que você reprocessasse os dados brutos sempre que o intervalo de dados mudasse.

Começando com o esboço certo

Família de funções

Casos de uso

Esboços de Quantil KLL

Percentis (P50, P90, P99)

Esboços Teta

Definir operações em valores distintos

Prime-Ok aproximado

Itens mais frequentes

Esboços de tupla

Contagens distintas e agregações de métricas

Quando usar esboços: Painéis, análise de tendências, monitoramento, atribuição de advertising – qualquer consulta em que respostas aproximadas sejam aceitáveis. Quanto maior for o seu conjunto de dados, melhor. Se você não tiver certeza de qual esboço usar, pergunte Código do Gênio para ajudá-lo a saber a escolha certa.

Quando ficar exato: auditoria financeira, relatórios de conformidade ou qualquer caso de uso em que requisitos regulatórios ou comerciais exijam valores precisos.

Essas quatro famílias de funções transformam consultas de longa duração nas mais baratas do seu warehouse. Crie esboços uma vez durante o ETL, armazene-os no Delta e mescle-os na leitura. Os dados brutos ainda estão lá quando os auditores os solicitam. Para todo o resto, uma margem de erro de 1% e uma aceleração de 1000x é uma compensação bem-vinda.

Todas as funções funcionam em pipelines SQL, DataFrame e Streaming Estruturado. Os esboços criados no Spark são interoperáveis ​​com outros sistemas no Esboços de dados do Apache ecossistema. Consulte a documentação (1, 2, 3, 4) para assinaturas de funções e exemplos e comece a fazer esboços hoje mesmo.

Menção especial a Christopher Boumalhab (cboumalh no GitHub) por implementar e contribuir com as famílias de funções Theta sketch e Tuple sketch no Apache Spark.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *