PL-300: como implementar agregações em modelos Power BI
Vou ensinar como implementar agregações (aggregation tables) em modelos Power BI — uma competência valiosa para o PL-300 e para melhorar o desempenho em cenários com grandes volumes de dados. As agregações permitem responder a consultas comuns com tabelas resumidas em memória, reduzindo a carga sobre o modelo ou a fonte DirectQuery.
O que precisas de saber
Uma tabela de agregação é uma tabela adicional no modelo que contém dados resumidos (por exemplo, vendas por mês, produto e região). Quando o motor de consulta identifica que uma visualização pode ser respondida pela tabela agregada, usa-a em vez da tabela detalhada, acelerando o tempo de resposta. As agregações são especialmente úteis quando usas modelos híbridos (importação + DirectQuery) ou DirectQuery sobre grandes armazéns de dados.
Exemplo conceptual: tens uma tabela FactSales com milhões de linhas. Criando uma tabela AggregatedSales com colunas Year, Month, ProductCategory e TotalSales (soma de SalesAmount) e configurando relações e mapeamentos, consultas que pedem vendas por Month/ProductCategory usam AggregatedSales em memória, evitando varrer FactSales.
Como funciona
Passos-chave para implementar agregações em Power BI Desktop:
- Identificar as consultas/visualizações mais frequentes e os níveis de granularidade necessários (por ex., ano/mês, categoria de produto).
- Criar a tabela de agregação: pode ser gerada na origem (SQL), em Power Query (Group By) ou como Tabela Calculada DAX.
- Adicionar colunas-chave na tabela agregada que correspondam a colunas de dimensão (datas, produto, região) e manter tipos/códigos compatíveis.
- Configurar a propriedade de agregações (Manage Aggregations) no Power BI Desktop, mapeando as medidas/colunas da tabela detalhada para a tabela agregada.
- Testar e validar usando o Performance Analyzer e o tráfego de consulta (verificar se as consultas usam a tabela agregada ou ainda vão ao DirectQuery).
Exemplo prático: criar uma tabela agregada em Power Query e usar uma medida simples.
// Em Power Query (M) - criar agregação por Year, Month, ProductCategory
let
Fonte = Sql.Database("servidor", "base"),
Sales = Fonte{[Schema="dbo",Item="FactSales"]}[Data],
AdicionarColunaData = Table.AddColumn(Sales, "Year", each Date.Year([OrderDate]), Int64.Type),
AdicionarMes = Table.AddColumn(AdicionarColunaData, "Month", each Date.Month([OrderDate]), Int64.Type),
Agrupar = Table.Group(AdicionarMes, {"Year","Month","ProductCategory"}, {{"TotalSales", each List.Sum([SalesAmount]), type number}})
in
Agrupar
Depois de carregar AggregatedSales e FactSales, cria as relações normais com tabelas dimensão (por ex., DimProduct, DimDate). No Power BI Desktop vai a Model view > Manage aggregations (ou seleciona a tabela detalhada > Manage Aggregations) e faz o mapeamento:
- Para a medida FactSales[TotalSales] mapear para AggregatedSales[TotalSales] com a função Sum.
- Mapear colunas de granularidade (FactSales[Year] → AggregatedSales[Year], etc.).
O motor usará a tabela agregada quando a consulta puder ser respondida no nível de granularidade definido. Se a visualização pedir detalhe (linha a linha) o motor recairá no FactSales.
Erros comuns
- Tentar agregar sem garantir correspondência de tipos e códigos entre colunas de dimensão: diferenças de formato impedem o uso da agregação. Sempre alinhar tipos e chaves (inteiro/texto/keys de dimensão).
- Mapear medidas incorretamente (usar Count em vez de Sum) ou esquecer medidas derivadas: medidas que dependem de contexto complexo exigem definições adicionais para que a agregação funcione corretamente.
- Não testar cenários de filtro: se uma visualização usa filtros que não estão presentes na tabela agregada, o motor poderá ignorá-la e ir ao DirectQuery, causando lentidão inesperada.
Como praticar
Pratica criando um modelo simples com uma FactSales grande (podes simular gerando muitas linhas em SQL ou Power Query) e várias tabelas dimensão. Cria diferentes tabelas agregadas (por dia, mês, trimestre) e configura Manage Aggregations. Usa o Performance Analyzer para verificar que as consultas usam as agregações. Para preparação para o exame, faz o Practice Assessment OFICIAL e consulta o Study Guide da Microsoft (ambos gratuitos) para ver como esta competência aparece nas skills measured.
Em resumo
- As agregações reduzem a necessidade de varrer tabelas detalhadas e aceleram respostas a consultas comuns.
- Criar agregações exige tabelas com granularidade adequada, colunas alinhadas às dimensões e mapeamento correto de medidas.
- Testa com o Performance Analyzer e valida filtros e tipos para garantir que o motor use as tabelas agregadas.
- Pratica com exemplos reais e usa os recursos oficiais da Microsoft (Practice Assessment e study guide gratuitos).