Nesta postagem do blog, vamos mergulhar em como o Dataflow Gen 2 pode melhorar o desempenho, especialmente se você está enfrentando problemas de performance com o Dataflow Gen1.

Relembrando a trajetória de evolução do Power Query

Já falei sobre a evolução do Power Query em um post anterior, destacando sua jornada do Excel e Power BI Desktop para Dataflows Gen1 e Dataflows Gen2. A discussão esclareceu as diferenças na implementação e nas melhores práticas (que sim, são diferentes a depender do cliente que você está usando). Leia mais sobre isso aqui.

 

Por que usávamos o Dataflow Gen1

Antes, o Dataflow Gen1 era usado para fazer transformações no Power BI Serviço além de armazenar dados para compartilhamento. Isso facilitou o uso de dados novamente sem voltar à fonte original. Foi um excelente passo em direção a ter uma única verdade.

Este método funcionou bem, mas havia um problema. Os dados foram salvos como arquivos CSV. Você pode aprender mais sobre isso aqui. Este método não é bom para lidar com grandes volumes de dados.

Imagem original em: https://learn.microsoft.com/en-us/power-query/dataflows/what-is-the-cdm-storage-structure-for-analytical-dataflows

 

O Mecanismo de Computação Aprimorado

Para resolver o problema com muitos dados, o mecanismo de computação aprimorado (enhanced compute engine) foi criado para capacidades do Power BI Premium. Você pode encontrar mais detalhes aqui. O mecanismo de computação aprimorado, após salvar os dados no formato em CSV nas pastas do CDM, carrega os mesmos dados em um cache baseado em Azure SQL DB que torna o dataflow compatível com a dobragem de consulta (query folding). Isso produz melhorias significativas de desempenho para a atualização que dependam desses dataflows, inclusive com um maior volume de dados.

Esse novo mecanismo salva e utiliza de uma maneira melhor, incluindo a capacidade de tornar o dataflow uma fonte compatível com o query folding, tornando as coisas mais rápidas para a maioria das tarefas. Mas ainda não era perfeito para grandes volumes de dados.

 

Uma Nova Maneira: Dataflow Gen2

Imagem original de: https://blog.fabric.microsoft.com/en-us/blog/data-factory-spotlight-dataflows-gen2/

O Dataflow Gen2 é diferente. Quando você o utiliza, ele tem seu próprio local para armazenar dados. Você pode aprender mais aqui. Esta nova maneira é mais moderna e melhor do que as anteriores, como usar pastas CDM e alternativas baseadas em Azure SQL DB.

A melhor coisa sobre o Dataflow Gen2 é que ele pode manter o armazenamento e o processamento separados. Você pode salvar seus resultados diretamente em locais mais apropriados, como Fabric Lakehouse, Fabric Warehouse e outros. Essa flexibilidade permite o uso de formatos de armazenamento otimizados, como tabelas delta que salvam dados no formato de arquivo parquet. Também promove a transformação colaborativa de dados, aproveitando as capacidades de uma equipe diversificada, utilizando Pipelines de dados para ingestão e orquestração, e empregando Dataflow Gen2 ou Cadernos de Tecido (Python, R, SQL, Scala).

 

Melhores Práticas com Dataflow Gen2

É crucial entender que, se você optar por um destino externo usando Dataflow Gen2, provavelmente desejará desativar o “habliitar preparo” (em inglês enable staging), para maioria, senão todas, das suas consultas. Esta ação o transforma exclusivamente em uma ferramenta de extração/transformação, afastando-se de sua funcionalidade anterior de local de armazenamento. O principal benefício de usar um sistema de armazenamento externo sobre o integrado dos dataflows é a capacidade de compartilhar dados em um nível mais granular, em vez do compartilhamento de nível de espaço de trabalho (workspace) é a maior limitação de ambos os Dataflows Gen1 e Gen2. Mais detalhes sobre isso pode ser explorado aqui.

Para aqueles que desejam aproveitar as inovações do Dataflow Gen2 enquanto mantêm o dataflow como um contêiner de armazenamento, é recomendado habilitar o preparo (enable staging) em todas as consultas compartilháveis, pois apenas as consultas marcadas serão copiadas no lakehouse/warehouse interno ao dataflow, sendo capazes de aparecerem como tabelas quando você usa dataflow como uma fonte de dados para seu Power BI ou Excel.

 

Uma Análise Comparativa

Para colocar as coisas em perspectiva, considere minha experiência com um Dataflow Gen1 contendo 140 milhões de linhas. Eu precisava aplicar um filtro, reduzindo os dados para aproximadamente 12 milhões de linhas. Anteriormente, tinha apenas disponível o Dataflow Gen1 em capacidade premium, que se vale da otimização do enhanced compute engine, já que a fonte é um Gen1.

Esta operação de filtro direto variou entre 2,5 a 3,5 horas. No entanto, mudar o local de armazenamento do original não filtrado de 140 milhões de linhas para um Fabric Lakehouse e conectar um Dataflow Gen2 reduziu esse tempo para meros 2,5 a 3,5 minutos! Optar por um local de armazenamento Dataflow Gen2 (com enable staging habilitado) reduziu ainda mais essa duração para 2,5 a 3 minutos.

 

Conclusão

A evolução das ferramentas de gerenciamento e compartilhamento de dados sempre foi em direção à otimização e eficiência. Como demonstrado, a transição do Dataflow Gen1 para o Gen2 trouxe melhorias notáveis nos tempos de processamento de dados para grandes volumes de dados. Você deve prestar atenção, no entanto, que as melhores práticas dos Dataflows Gen2 são diferentes. A principal diferença é a decisão que você tem que tomar sobre usar o Dataflow como um contêiner de compartilhamento de dados ou não. Como a forma de compartilhamento de ambos os Dataflows Gen1 e Gen2 é a nível de workspace, recomendo que você deve fazer a transição para usar Dataflows apenas como um item de extração e transformação.