À medida que as empresas crescem, os volumes de dados escalam de GBs para TBs (ou mais), e as demandas de latência passam de horas para minutos (ou menos), tornando cada vez mais caro fornecer insights atualizados para o negócio. Historicamente, engenheiros de dados Python e Scala recorreram ao streaming para atender a essas demandas, processando eficientemente novos dados em tempo real, mas engenheiros de análise que precisavam escalar pipelines dbt baseados em SQL não tinham essa opção.
Chega de esperar! Este blog busca ilustrar como podemos usar as novas Tabelas de Streaming e Visualizações Materializadas no Databricks para fornecer insights frescos e em tempo real para empresas com a simplicidade de SQL e dbt.
No Data + AI Summit de 2023, introduzimos Tabelas de Streaming e Visualizações Materializadas no Databricks SQL. Essa capacidade incrível deu aos usuários do Databricks SQL acesso fácil a novas e poderosas materializações de tabelas, introduzidas pela primeira vez no Delta Live Tables, permitindo-lhes incrementalizar grandes consultas, fazer streaming diretamente de fontes de dados de eventos e muito mais.
Além de usar nativamente Tabelas de Streaming e Visualizações Materializadas em um ambiente Databricks, elas também funcionam para usuários dbt no Databricks. dbt-databricks se tornou uma das maneiras mais populares de construir modelos de dados no Databricks, aproveitando todas as capacidades poderosas do Databricks SQL, incluindo o motor de computação Photon, escalando instantaneamente os SQL Warehouses Serverless e o modelo de governança do Unity Catalog, com a ubiquidade do framework de transformação do dbt.
A partir do dbt v1.6+, dbt-databricks evoluiu em três facetas principais:
Observação: Fique de olho no próximo lançamento do dbt v1.7.3, que refinará ainda mais as capacidades acima!
Vamos dar uma olhada em como podemos usar esses novos recursos com a demonstração Airline Trips.
A demonstração Airline Trips foi criada para mostrar como ingerir e transformar incrementalmente dados de eventos ao vivo para insights de negócios atualizados no Databricks, seja para um dashboard ou um modelo de IA. O conjunto de dados representa todas as viagens aéreas realizadas nos Estados Unidos ao longo do tempo, capturando os atrasos nas partidas e chegadas de cada viagem.
Um notebook auxiliar incluído estabelece um stream simulado a partir deste conjunto de dados, enquanto o projeto dbt exibe um modelo de dados que pega esses eventos JSON brutos e os transforma via ETL de streaming em uma camada de Visualizações Materializadas, tabelas de features e muito mais.
O repositório está publicamente disponível aqui e utiliza dados de exemplo empacotados em todos os workspaces Databricks out-of-the-box. Sinta-se à vontade para acompanhar!
Uma das maneiras mais simples de começar a usar Tabelas de Streaming é para ingestão de dados de armazenamento de dados na nuvem, como S3 para AWS ou ADLS para Azure. Você pode ter uma fonte de dados upstream gerando dados de eventos em alto volume e um processo para pousar esses dados como arquivos brutos em um local de armazenamento, tipicamente json, csv, parquet ou avro.
Em nossa demonstração, imagine que recebemos um feed ao vivo de todas as viagens aéreas realizadas nos Estados Unidos de um terceiro, e queremos ingeri-las incrementalmente à medida que chegam.
Em vez de usar os arquivos como uma tabela externa, ou usar uma ferramenta de terceiros para materializar uma Tabela Delta para a fonte de dados, podemos simplesmente usar Tabelas de Streaming para resolver isso. Veja o modelo abaixo para nosso feed de viagens aéreas bronze:
Os dois pontos chave a serem observados são:
Como observação, embora o Auto Loader exija a menor configuração, você também pode fazer streaming diretamente de uma plataforma de streaming de eventos como Kafka, Kinesis ou Event Hubs para latência ainda menor, usando uma sintaxe muito semelhante. Veja aqui para mais detalhes.
O streaming não precisa parar na etapa de ingestão. Se quisermos realizar algumas junções downstream ou adicionar uma chave substituta, mas quisermos restringir isso apenas a novos dados para economizar em computação, podemos continuar usando a materialização de Tabela de Streaming. Por exemplo, veja o trecho do nosso próximo modelo para a camada silver, feed enriquecido de viagens aéreas, onde juntamos tabelas de mapeamento de códigos de aeroporto ao conjunto de dados brutos:
Mais uma vez, utilizamos a materialização de Tabela de Streaming e conseguimos aproveitar a funcionalidade padrão do dbt para toda a nossa lógica. Isso inclui:
Com nossas tabelas silver enriquecidas prontas, podemos agora pensar em como queremos servir insights agregados para nossos consumidores finais de negócios. Normalmente, se usássemos uma materialização de tabela, teríamos que recalcular todos os resultados históricos a cada vez.
Para aproveitar as Tabelas de Streaming upstream que processam apenas novos dados em cada execução, recorremos às Visualizações Materializadas para a tarefa!
A boa notícia no Databricks é que um modelo que constrói uma Visualização Materializada não se parece em nada com um modelo que constrói uma tabela! Veja nosso exemplo para uma Visualização Materializada de camada gold para calcular a porcentagem de voos atrasados a cada dia:
Tudo o que mudamos foi a configuração de materialização!
Lembre-se, Visualizações Materializadas podem ser atualizadas incrementalmente quando há alterações nas tabelas base. No cenário acima, à medida que transmitimos novos dados, a Visualização Materializada determina quais grupos precisam ser recalculados e apenas computa esses, deixando as agregações inalteradas como estão e reduzindo os custos gerais de computação. Isso é mais fácil de visualizar no exemplo, pois agregamos por ArrDate, a data de chegada dos voos, o que significa que novos dias de dados naturalmente cairão em novos grupos e os grupos existentes permanecerão inalterados.
Analisando os logs de eventos da Visualização Materializada (na imagem abaixo) após várias execuções do modelo, podemos ver a incrementalização em ação. A primeira execução é uma computação completa como qualquer tabela, mas uma segunda execução para atualizar as agregações com novos dados utiliza uma atualização incremental linha a linha. Uma execução final do modelo reconheceu que nenhum novo dado havia sido ingerido upstream e simplesmente não fez nada.
Cobrimos o básico para levar dados diretamente da fonte de eventos até uma Visualização Materializada pronta para BI, mas o repositório de demonstração contém muito mais.
O repositório inclui exemplos de como monitorar logs para Tabelas de Streaming e Visualizações Materializadas para entender como os dados estão sendo processados, além de um exemplo avançado não abordado neste blog de como juntar dois fluxos em uma junção de fluxo-fluxo apenas com SQL!
Clone o repositório para o seu ambiente Databricks para começar, ou conecte o dbt Cloud ao Databricks sem custo adicional com o partner connect. Você também pode aprender mais com a documentação para Visualizações Materializadas e Tabelas de Streaming.
(Esta publicação no blog foi traduzida utilizando ferramentas baseadas em inteligência artificial) Publicação original
