DP-900: como utilizar funções de agregação em consultas analíticas
Vou ensinar-te a competência de DP-900 sobre funções de agregação em queries analíticas: o que são, como se usam em serviços Azure (por exemplo Azure SQL Database, Azure Synapse, e Power BI) e porque isto é essencial tanto para o exame como para construir relatórios e análises reais.
O que precisas de saber
Funções de agregação resumem conjuntos de linhas em valores singulares — por exemplo, contar registos, somar valores ou calcular médias. São fundamentais para relatórios, dashboards e consultas analíticas. As agregações básicas incluem: COUNT, SUM, AVG, MIN e MAX. Para agrupar linhas por categorias usa-se GROUP BY. Em contextos Azure, estas queries são executadas em engines SQL como Azure SQL Database e Synapse SQL ou traduzidas em operações em Power BI/DirectQuery.
Exemplo simples: imagina uma tabela Sales(sale_id, product_id, amount, sale_date). Para saber o total de vendas por produto utilizamos uma agregação com GROUP BY.
Como funciona
Passos fundamentais e regras a conhecer:
- SELECT com funções de agregação combina colunas agregadas e não agrupadas; todas as colunas não agrupadas devem aparecer em GROUP BY.
- GROUP BY cria grupos de linhas com valores iguais nas colunas listadas; a função de agregação calcula um valor por cada grupo.
- HAVING filtra grupos após a agregação (equivalente ao WHERE mas para resultados agregados).
- ORDER BY organiza os resultados; frequentemente útil para top N (p.ex. top 10 produtos por vendas).
-- Total de vendas por produto SELECT product_id, SUM(amount) AS total_sales, COUNT(*) AS sales_count, AVG(amount) AS avg_sale FROM Sales GROUP BY product_id ORDER BY total_sales DESC;
-- Filtrar produtos com mais de 100 vendas SELECT product_id, SUM(amount) AS total_sales, COUNT(*) AS sales_count FROM Sales GROUP BY product_id HAVING COUNT(*) > 100;
Nota: em engines diferentes a sintaxe é muito semelhante. Em Power BI, ao escrever medidas DAX fazes agregações com funções como SUM e AVERAGE, mas a lógica de agrupar e agregar também se aplica.
Na prática
Workflow prático para criar uma query analítica com agregações num ambiente Azure:
- Identifica a tabela e as colunas relevantes (ex.: Sales.amount, Sales.product_id).
- Define o nível de granularidade desejado (por produto, por mês, por região).
- Escolhe as funções de agregação adequadas (SUM para quantias, COUNT para contagens, AVG para médias, MIN/MAX para extremos).
- Escreve a query com GROUP BY nas colunas de granularidade e com os agregadores no SELECT.
- Aplica HAVING para restringir grupos e ORDER BY para ordenar a saída; limita com TOP ou FETCH para performance se necessário.
-- Vendas mensais por produto (agregação por mês) SELECT product_id, FORMAT(sale_date, 'yyyy-MM') AS sale_month, SUM(amount) AS monthly_sales FROM Sales GROUP BY product_id, FORMAT(sale_date, 'yyyy-MM') ORDER BY product_id, sale_month;
Considerações de desempenho em Azure: índices adequados (por ex. índices em product_id ou em colunas usadas em GROUP BY) e partição de tabelas em Synapse/Azure SQL podem acelerar agregações em grandes volumes. Em Synapse, considera usar tabelas distribuídas (distributed tables) para paralelizar a operação.
Erros comuns
- Esquecer de incluir colunas não agrupadas no GROUP BY — gera erro ou resultados inesperados.
- Usar HAVING em vez de WHERE para filtrar linhas antes da agregação — WHERE filtra linhas individuais antes do GROUP BY; HAVING filtra grupos depois da agregação.
- Não considerar desempenho: agregações em grandes tabelas sem índices/partição podem ser lentas; em Synapse distribui dados correctamente para evitar movimentos excessivos (data shuffling).
Como praticar
Pratica escrevendo queries em Azure SQL Database ou numa instância local de SQL Server usando conjuntos de dados de exemplo (AdventureWorks ou bases de dados de vendas). Para exercícios oficiais e avaliações, utiliza o Practice Assessment OFICIAL e gratuito da Microsoft para DP-900 e a study guide oficial da Microsoft (ambos gratuitos). Não uses dumps nem perguntas inventadas — recorre a estes recursos oficiais para avaliar conhecimentos.
Em resumo
- Funções de agregação (COUNT, SUM, AVG, MIN, MAX) resumem linhas para suportar relatórios analíticos.
- GROUP BY define a granularidade; todas as colunas não agrupadas no SELECT devem estar no GROUP BY.
- WHERE filtra antes do agrupamento; HAVING filtra grupos depois da agregação.
- Performance: índices, partição e arquitectura de distribuição em Azure (Synapse) afectam muito a velocidade das agregações.