DP-600: optimizar medidas com Aggregations e Storage Modes
Vou ensinar-te a competência de optimizar medidas usando Aggregations e Storage Modes em modelos semânticos (Power BI/Fabric). Esta é uma habilidade prática e valorizada no exame DP-600 e, sobretudo, na operação de soluções analytics com grandes volumes de dados onde desempenho e custo importam. A ideia central é reduzir o trabalho do motor de consultas através de pré-cálculos e escolhas de armazenamento que equilibrem memória, latência e carga na fonte de dados.
O que precisas de saber
Aggregations são tabelas ou cálculos pré-computados que resumem dados detalhados. Por exemplo, em vez de somar cinco milhões de linhas de vendas em tempo real para obter o total mensal, crias uma tabela agregada com TotalSales por mês. Storage Modes determinam como as tabelas são acedidas e armazenadas no modelo: Import (dados carregados para o modelo e mantidos em memória), DirectQuery (todas as queries consultam a fonte em tempo real) e Dual (comportamento híbrido que permite que uma tabela seja usada como Import ou DirectQuery conforme o contexto).
Exemplo concreto: tens uma tabela Sales com 120 milhões de linhas cobrindo 5 anos, e uma tabela Calendar com 1 825 dias. Em vez de consultar sempre a Sales detalhada para relatórios mensais, crias uma tabela agregada Sales_Monthly com 60 meses × 10 regiões = 600 linhas (ou 60 × 500 produtos = 30 000 linhas se tiveres agregação por produto). Na prática isso pode reduzir o volume de dados a ler em 99% para consultas agregadas, levando tempos de resposta de 6–8 segundos a valores na ordem das centenas de milissegundos.
Como funciona na prática
Passos principais para implementar optimizações com Aggregations e Storage Modes:
- Identificar padrões de consulta: analisa os relatórios e os logs de telemetria (Query Diagnostics, Performance Analyzer) para saber quais dimensões e níveis de detalhe são mais usados (ex.: mês, região, produto). Se 80% das consultas pedem dados por mês e região, concentra-te nessa agregação.
- Criar tabelas agregadas: sumariza a tabela de detalhe para os níveis mais consultados. Por exemplo, YEAR, MONTH, REGION → SUM(SalesAmount) e COUNTROWS para volumes. Se a tabela detalhe tem 120M linhas, a agregação pode ter poucas centenas ou milhares de linhas, dependendo do nível de granularidade.
- Definir Storage Modes apropriados: tipicamente, as tabelas agregadas ficam em Import para resposta rápida; a tabela detalhe pode ficar em Import ou DirectQuery conforme o volume e a latência aceitável. Por exemplo, manténs a agregação em Import (2 GB) e a detalhe em DirectQuery para evitar carregar 120 GB de dados para o modelo.
- Configurar relações e hierarquias: assegura que as chaves e relações permitem que o motor do modelo substitua automaticamente consultas para usar as agregações. Mantém colunas de chave consistentes (ex.: Year, MonthNumber, RegionID) e hierarquias de tempo no Calendar para que o engine faça o mapping.
- Validar cobertura das agregações: garante que as agregações cobrem as combinações de filtros frequentes; quando não cobrem, o motor fará fallback para a tabela detalhe e a query será mais lenta. Cria testes que simulam 90–95% dos cenários de utilizador antes de promover a agregação para produção.
Exemplo prático (DAX / passos conceptuais):
// 1. Criar uma tabela agregada em Power BI Desktop (se já tiveres a tabela Sales em Import)
Sales_Monthly =
SUMMARIZE(
Sales,
Calendar[Year],
Calendar[MonthNumber],
"TotalSales", SUM(Sales[SalesAmount])
)
// 2. Marcar Sales_Monthly como tabela de agregações e definir colunas-chave (no modelo) — isto é feito pela interface do Power BI/Fabric.
Depois de criar a tabela, usa o Performance Analyzer para comparar tempos de renderização: por exemplo, um gráfico que antes demorava 7s pode passar a 250–400ms quando o motor utiliza a agregação apropriada.
Notas sobre Storage Modes:
- Import: rápido, depende de memória e de armazenamento (OneLake quando usas Fabric). Bom para agregações e dados que não mudam frequentemente. Ex.: importar 30 000 linhas ocupa poucos MB e permite respostas instantâneas.
- DirectQuery: consulta a fonte ao vivo. Ideal para dados altamente voláteis ou muito grandes que não cabem em Import. Tem tipicamente latências de centenas de ms a segundos, e impacta o desempenho da fonte.
- Dual: permite que a mesma tabela se comporte como Import ou DirectQuery segundo o contexto da query — útil para tabelas dimensionais pequenas (ex.: Product ou Region) que são usadas tanto em filtros como em joins com tabelas em DirectQuery.
Erros comuns
1) Assumir que uma única agregação cobre todos os cenários: diferentes relatórios podem usar dimensões distintas. Se só crias uma agregação por mês/região e os utilizadores também filtram por produto, o motor faz fallback para a tabela detalhe, anulando ganhos esperados. Analisa padrões antes de projetar as agregações.
2) Armazenar demasiadas agregações em Import sem controlar refresh e tamanho: cada agregação importa-se e aumenta memória e tempo de refresh. Se tiveres 20 agregações que totalizam 10 GB, os refreshes completos podem demorar horas. Usa incremental refresh e prioriza as agregações com maior ROI.
3) Usar DirectQuery indiscriminadamente: embora evite importar dados, DirectQuery pode gerar latências altas e carga elevada na fonte. Uma boa estratégia híbrida é ter agregações em Import para cenários comuns e DirectQuery para drill-through ou reporting em tempo real.
Como praticar
Pratica estes passos num ambiente controlado: cria um relatório com uma tabela Sales grande (simula 50–120M de linhas com dados gerados) e um Calendar. Implementa agregações mensais e por região e compara tempos de resposta para visualizações com e sem aggregations. Testa diferentes Storage Modes (por exemplo, Sales detalhe em DirectQuery e agregações em Import) e observa o comportamento de fallback e uso de recursos. Mede memória, tempo de refresh e latência do relatório.
Para alinhamento com o exame DP-600, consulta o Practice Assessment oficial e a study guide gratuitos da Microsoft — são recursos oficiais recomendados para prática e verificação das skills measured. Usa também documentação de Performance Analyzer e Query Diagnostics para validar ganhos reais.
Em resumo
- Aggregations resumem dados para melhorar desempenho em queries agregadas; reduções de volume de 90–99% são comuns.
- Storage Modes (Import, DirectQuery, Dual) determinam onde e como os dados são acedidos; escolher corretamente equilibra desempenho, custo e carga na fonte.
- Analisa padrões de consulta antes de criar agregações; evita oversizing e cobertura insuficiente e implementa incremental refresh quando necessário.
- Pratica em ambientes reais, mede antes/depois e usa os recursos oficiais da Microsoft (Practice Assessment e study guide) para preparar o exame e validar as tuas skills.