6 Setembro 2024
Key takeways
O volume de dados com que lidamos tem crescido exponencialmente. Quantidades grandes de dados – Large Datasets -, que antes eram a exceção, são agora a regra. Aproveitar todo o seu potencial pode ser um fator decisivo entre o sucesso e o fracasso das empresas. Cabe a estas escolher a melhor ferramenta e aplicar as melhores práticas para conseguir aproveitar os Large Datasets.
Este artigo irá explicar o que caracteriza um Large Dataset, mostrando as suas principais características e, em seguida, explicar os maiores desafios que estes apresentam e também quais são as boas práticas que devem ser implementadas para garantir uma boa utilização de Large Datasets.
1. O que é um Large Dataset?
Em Power BI, um Large Dataset é caracterizado, principalmente, por 2 aspetos:
1.1 Tamanho:
Tem um tamanho excecionalmente grande, normalmente ultrapassando as centenas de milhões, ou mesmo biliões, de registos e assim supera facilmente o limite de 1GB que a licença Pro de Power BI permite publicar.
1.2 Complexidade:
Contém um número elevado de tabelas e relações entre elas muitas vezes complexas e com métricas e cálculos também eles complexos.
Estas duas características juntamente com a necessidade de acesso imediato aos dados torna difícil, ou quase impossível, de alinhar com as limitações de capacidade e performance do Power BI.
2. Principais desafios de Large Datasets
A utilização de Large Datasets pode apresentar uma série de desafios se não forem bem geridos. Esta má gestão pode ter consequências na performance, usabilidade e até na qualidade dos dados. Os principais desafios na utilização de Large Datasets são:
2.1 Performance dos reports
À medida que a quantidade de dados aumenta, mais tempo demora o Power BI a obter os dados. Isto quer dizer que a utilização de Large Datasets, muitas vezes, traduz-se em reports lentos e não responsivos, o que piora a experiência do utilizador, tornando-a, na maior parte das vezes, frustrante. Esta lentidão pode até, no limite, fazer com que o utilizador desista de consultar o report, desperdiçando assim o esforço e os recursos gastos na sua criação.
Para além disto, as queries lançadas, devido à sua complexidade, consomem muitos recursos, nomeadamente, memória e CPU, podendo causar o overload do sistema, contribuindo também para uma má performance dos reports.
2.2 Limitações do modelo de dados
Como mencionado anteriormente, o Power BI tem um limite de 1GB de dados em memória na licença Pro. Apesar de existirem outras licenças que permitem limites maiores, gerir datasets que excedam o 1GB de tamanho, que é frequente quando se lida com Large Datesets, torna-se mais complexo e exige um planeamento mais minucioso para assegurar o seu acesso total. Conjugar dados em memória com o modo Direct Query pode ser uma ajuda para esta limitação porque permite ter acesso à totalidade dos dados sem ter de os guardar em memória. No entanto, o modo Direct Query também pode ter impacto na performance do report, uma vez que as queries são lançadas diretamente à fonte no momento em que o report é aberto, o que implica mais tempo para retornar resultados. Para além disto, o Direct Query tem um limite de queries que correm em paralelo. Sendo assim, reports com muitos visuais vão ser ainda mais lentos.
2.3 Qualidade e consistência de dados
Assegurar a boa qualidade e consistência de dados torna-se mais complicado e complexo quando se trata de um Large Dataset. Isto porque confirmar os dados e até a limpeza dos dados como por exemplo, eliminação de dados duplicados ou em blank, reformulação de cálculos torna-se mais demorado devido à quantidade de dados que têm de ser processados.
2.4 Data Refresh
Os Large Datasets por terem uma elevada quantidade de dados demoram muito tempo a atualizar, podendo demorar várias horas por cada atualização. Isto pode causar atrasos nas atualizações, uma vez que podem terminar mais tarde ou até mesmo ficarem bloqueadas, e consequentemente não mostrar os dados mais recentes no report, podendo induzir em erro quem o está a consultar.
3. Boas práticas para lidar com Large Datasets
Para fazer face aos desafios mencionados anteriormente e ter uma boa relação com Large Datasets e tirar o melhor destes, podem ser implementadas as seguintes sugestões:
3.1 Tabelas agregadas
Os visuais de um report não precisam sempre de consultar a menor granularidade dos factos. Na maior parte das vezes, consultam uma granularidade mais elevada. Uma maneira de tomar partido destas observações e melhorar a performance de um report ligado a um Large Dataset é utilizar as chamadas Tabelas agregadas.
As Tabelas agregadas sumarizam os dados da factual a um nível mais alto de agregação, o que as torna menores em número de linhas e em recursos e memória consumidos, tornando-as mais leves de processar no Power BI. Para além disto, as tabelas agregadas contêm cálculos pré-calculados, como SUMs e COUNTs, por exemplo, valor de compras, frequentemente usados nos reports. Ter estes valores já pré-calculados na tabela torna mais rápido e eficiente o seu cálculo e a sua consequente apresentação no report, uma vez que os cálculos que anteriormente eram feitos no momento da consulta, agora estão já calculados na tabela não sendo preciso operações complexas para os obter.
As tabelas agregadas podem ser criadas no Power BI, através do Power Query, ou na base de dados diretamente. Quando no Power BI, basta usar a funcionalidade “Gerir Agregações” (em inglês, “Manage Aggregations”) e definir a correspondência de colunas e agregações entre a tabela agregada e a factual. Ter em atenção que a factual tem de estar no modo Direct Query.
Depois disto, ao contrário do que poderíamos pensar, as métricas devem continuar a consultar a factual em Direct Query, isto é, devem continuar a ter na sua fórmula a factual e não a agregada. O que vai acontecer é que o motor do Power BI vai ter a responsabilidade de decidir se, tendo em conta os filtros feitos nos cálculos e nos visuais, consegue consultar a agregada para retornar o resultado, ou se tem de consultar a tabela em Direct Query. Ter o motor do Power BI a encarregar-se desta escolha também evita complexidade nas métricas, uma vez que nao é preciso fazer a escolha agregada vs. factual na formula da métrica.
Em resumo, utilizar tabelas agregadas é uma grande ajuda na melhoria da performance porque evita consultar a factual para todos os cálculos. Este pormenor torna a experiência do utilizador que consulta o report muito mais agradável e rápida.
3.2 Modelação
De maneira a retirar o máximo de complexidade do modelo de dados, deve ser implementado, sempre que possível, um modelo em estrela ou snowflake. Estes tipos de modelo simplificam as relações entre as tabelas e reduzem a complexidade das queries, o que leva a tempos de resposta mais curtos.
Para além disto, as relações definidas devem ter a cardinalidade e direção mais adequada ao modelo para garantir a obtenção mais eficiente dos dados.
Deve ser evitada também, a criação de colunas ou tabelas calculadas. Este tipo de operações é pesada para o Power BI e, por isso, deve ser feita, sempre que possível, na base de dados e apenas devem ser trazidas para o Power BI as colunas e tabelas que são estritamente necessárias para evitar ocupar memória desnecessariamente.
3.3 Visualizações
Ao nível das visualizações, também existem algumas sugestões que podem ser implementadas para otimizar a experiência da utilização do report:
- Não deve exceder os 10 visuais, incluíndo slicers, por página.
- Maximizar o número de visuais que por defeito consultam a tabela agregada, isto é, têm uma granularidade maior, e apenas consultar granularidade menor, que já irá consultar a factual em Direct Query, se necessário. Isto pode ser feito através da funcionalidade de DrillDown.
- Evitar a utilização de visualizações custom. Deve ser dada prioridade à utilização dos visuais nativos do Power BI.
- Utilizar slicers e filtros para pré-filtrar os dados no report de modo a reduzir a quantidade de dados processados de uma vez.
Os Large Datasets são uma realidade e já temos funcionalidades ao nosso dispor, como tabelas agregadas, que nos permitem fazer face a este novo desafio e tirar o maior proveito dele.