DP-900: cómo utilizar funciones de agregación en consultas analíticas
Te voy a enseñar la competencia de DP-900 sobre funciones de agregación en queries analíticas: qué son, cómo se usan en servicios Azure (por ejemplo Azure SQL Database, Azure Synapse, y Power BI) y por qué esto es esencial tanto para el examen como para construir informes y análisis reales.
Lo que necesitas saber
Las funciones de agregación resumen conjuntos de filas en valores singulares — por ejemplo, contar registros, sumar valores o calcular medias. Son fundamentales para informes, dashboards y consultas analíticas. Las agregaciones básicas incluyen: COUNT, SUM, AVG, MIN y MAX. Para agrupar filas por categorías se usa GROUP BY. En contextos Azure, estas queries se ejecutan en motores SQL como Azure SQL Database y Synapse SQL o se traducen en operaciones en Power BI/DirectQuery.
Ejemplo simple: imagina una tabla Sales(sale_id, product_id, amount, sale_date). Para saber el total de ventas por producto utilizamos una agregación con GROUP BY.
Cómo funciona
Pasos fundamentales y reglas a conocer:
- SELECT con funciones de agregación combina columnas agregadas y no agrupadas; todas las columnas no agrupadas deben aparecer en GROUP BY.
- GROUP BY crea grupos de filas con valores iguales en las columnas listadas; la función de agregación calcula un valor por cada grupo.
- HAVING filtra grupos después de la agregación (equivalente a WHERE pero para resultados agregados).
- ORDER BY organiza los resultados; frecuentemente útil para top N (p. ej. top 10 productos por ventas).
-- Total de ventas por producto 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 productos con más de 100 ventas SELECT product_id, SUM(amount) AS total_sales, COUNT(*) AS sales_count FROM Sales GROUP BY product_id HAVING COUNT(*) > 100;
Nota: en motores diferentes la sintaxis es muy similar. En Power BI, al escribir medidas DAX haces agregaciones con funciones como SUM y AVERAGE, pero la lógica de agrupar y agregar también se aplica.
En la práctica
Workflow práctico para crear una query analítica con agregaciones en un entorno Azure:
- Identifica la tabla y las columnas relevantes (ej.: Sales.amount, Sales.product_id).
- Define el nivel de granularidad deseado (por producto, por mes, por región).
- Elige las funciones de agregación adecuadas (SUM para cantidades, COUNT para recuentos, AVG para medias, MIN/MAX para extremos).
- Escribe la query con GROUP BY en las columnas de granularidad y con los agregadores en el SELECT.
- Aplica HAVING para restringir grupos y ORDER BY para ordenar la salida; limita con TOP o FETCH para rendimiento si es necesario.
-- Ventas mensuales por producto (agregación por mes) 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;
Consideraciones de rendimiento en Azure: índices adecuados (p. ej. índices en product_id o en columnas usadas en GROUP BY) y particionado de tablas en Synapse/Azure SQL pueden acelerar agregaciones en grandes volúmenes. En Synapse, considera usar tablas distribuidas (distributed tables) para paralelizar la operación.
Errores comunes
- Olvidar incluir columnas no agrupadas en el GROUP BY — genera error o resultados inesperados.
- Usar HAVING en lugar de WHERE para filtrar filas antes de la agregación — WHERE filtra filas individuales antes del GROUP BY; HAVING filtra grupos después de la agregación.
- No considerar el rendimiento: agregaciones en tablas grandes sin índices/particionado pueden ser lentas; en Synapse distribuye los datos correctamente para evitar movimientos excesivos (data shuffling).
Cómo practicar
Practica escribiendo queries en Azure SQL Database o en una instancia local de SQL Server usando conjuntos de datos de ejemplo (AdventureWorks o bases de datos de ventas). Para ejercicios oficiales y evaluaciones, utiliza el Practice Assessment OFICIAL y gratuito de Microsoft para DP-900 y la study guide oficial de Microsoft (ambos gratuitos). No uses dumps ni preguntas inventadas — recurre a estos recursos oficiales para evaluar conocimientos.
En resumen
- Las funciones de agregación (COUNT, SUM, AVG, MIN, MAX) resumen filas para soportar informes analíticos.
- GROUP BY define la granularidad; todas las columnas no agrupadas en el SELECT deben estar en el GROUP BY.
- WHERE filtra antes del agrupamiento; HAVING filtra grupos después de la agregación.
- Rendimiento: índices, particionado y arquitectura de distribución en Azure (Synapse) afectan mucho la velocidad de las agregaciones.