📈

Agregaciones

Tablas de resumen precalculadas que permiten consultas ultrarrápidas sobre modelos con millones o miles de millones de filas — especialmente en DirectQuery

Avanzado
🔍

¿Qué son las Agregaciones?

Tablas de resumen para grandes volúmenes

Una agregación en Power BI es una tabla de resumen que contiene datos precalculados a un nivel de granularidad superior al de la tabla de detalles. Permite que Power BI use estos resúmenes para responder consultas de alto nivel, evitando acceder a millones de filas del origen.

Ejemplo conceptual:

-- Tabla de detalles (1.000 millones de filas en DirectQuery)
FactVentas: [IDFecha, IDCliente, IDProducto, IDTienda, Cantidad, Importe]

-- Tabla de agregación (500.000 filas en modo Import)
FactVentas_Agg: [IDFecha, IDProducto, SumaCantidad, SumaImporte, ConteoFilas]
-- Agrupa por Fecha + Producto (elimina el detalle de Cliente y Tienda)

Cuando un visual pide "ventas por mes y producto", Power BI usa la agregación (500K filas en memoria, respuesta instantánea). Cuando un visual pide "ventas por cliente individual", Power BI va a la tabla de detalles (1B filas en DirectQuery, más lento pero posible).

⚙️

Cómo Funcionan las Agregaciones

El proceso de consulta con agregaciones

Power BI evalúa automáticamente si puede responder una consulta con la tabla de agregación o necesita ir al detalle. El proceso es:

  • 1. Análisis de la consulta: Power BI analiza qué columnas y métricas pide el visual
  • 2. Comprobación de cobertura: ¿Pueden las columnas de la agregación responder esta consulta? ¿El nivel de agrupación es suficiente?
  • 3. Cache hit (acierto): Si sí, usa la agregación — respuesta en milisegundos desde memoria
  • 4. Cache miss (fallo): Si no, lanza una consulta SQL a la fuente directamente — más lento

Porcentaje de acierto (Hit Ratio):

El objetivo es maximizar el porcentaje de consultas que se resuelven desde la agregación. En un modelo bien diseñado, el 90-95% de las consultas de los informes ejecutivos usan la agregación, y solo el drill-down a nivel muy granular accede al detalle.

🛠️

Cómo Configurar las Agregaciones

Pasos para implementar una tabla de agregación

Paso 1: Crea la tabla de agregación en Power Query

// En Power Query, crea una nueva consulta que agrupa FactVentas
// Esta tabla puede estar en modo Import aunque FactVentas sea DirectQuery
// Power Query M:
let
    Origen = FactVentas,  // Referencia a la tabla de hechos
    AgrupadoPor = Table.Group(
        Origen,
        {"IDFecha", "IDProducto"},  // Dimensiones de agrupación
        {
            {"SumaCantidad", each List.Sum([Cantidad]), type number},
            {"SumaImporte", each List.Sum([Importe]), type number},
            {"ConteoFilas", each Table.RowCount(_), type number}
        }
    )
in
    AgrupadoPor

Paso 2: Cambia el modo de almacenamiento

  • Selecciona la tabla de agregación en la vista de modelo
  • En "Propiedades", cambia el modo de almacenamiento a Import
  • La tabla original (FactVentas) permanece en DirectQuery

Paso 3: Configura las agregaciones

  • Clic derecho en la tabla de agregación → "Administrar agregaciones"
  • Para cada columna de métrica (SumaCantidad, SumaImporte, etc.):
  • Asigna la función de resumen: SUM, COUNT, MIN, MAX, COUNTROWS
  • Asigna a qué columna de la tabla de detalles corresponde
  • Para las columnas de dimensión (IDFecha, IDProducto): asigna "Agrupar por"

Paso 4: Oculta la tabla de agregación

Oculta la tabla de agregación del panel de campos — los usuarios no deben saber que existe. Power BI la usará automáticamente cuando sea posible, sin intervención del usuario o del creador del informe.

🏆

Precedencia de Consultas

Múltiples niveles de agregación

Puedes tener varias tablas de agregación en diferentes niveles de granularidad. Power BI las evalúa en orden de precedencia (el número más alto tiene mayor prioridad). Siempre intenta usar el nivel más agregado que pueda responder la consulta.

// Tres niveles de agregación para FactVentas (1B filas en DQ):

// Nivel 3 (precedencia alta): Por año + categoría
FactVentas_Agg_Anual: [Año, Categoria, SumaImporte]  → 10K filas
// Responde: "ventas totales por año y categoría" (muy rápido)

// Nivel 2 (precedencia media): Por mes + producto
FactVentas_Agg_Mensual: [IDFecha_Mes, IDProducto, SumaImporte]  → 500K filas
// Responde: "ventas por mes y producto" (rápido)

// Nivel 1 (precedencia baja): Por día + producto
FactVentas_Agg_Diario: [IDFecha, IDProducto, SumaImporte]  → 5M filas
// Responde: "ventas diarias por producto" (bastante rápido)

// Si ningún nivel cubre la consulta → DirectQuery a FactVentas (1B filas, más lento)
🎯

¿Cuándo Usar Agregaciones?

Las agregaciones son la solución cuando:

  • Tienes tablas de hechos con más de 10-50 millones de filas en DirectQuery
  • La mayoría de los visuals ejecutivos trabajan a niveles altos de agregación (mes/año, categoría, región)
  • Solo algunos usuarios necesitan el drill-down a nivel de detalle
  • El rendimiento del DirectQuery puro no es aceptable para el negocio
  • No puedes migrar a modo Import por limitaciones de gobernanza o tamaño

Alternativa: Modelo Compuesto

Las agregaciones funcionan mejor en combinación con los Modelos Compuestos: la tabla de agregación en modo Import (rápida, en memoria) y la tabla de detalles en modo DirectQuery (fresca, siempre actualizada).

📌 Buena práctica: Antes de implementar agregaciones, analiza los patrones de uso de tu informe con el Performance Analyzer. Identifica qué consultas son lentas y a qué nivel de granularidad operan. Diseña las agregaciones para cubrir el 80-90% de esas consultas.
🚀 ¡Siguiente nivel! Las agregaciones son más efectivas cuando se combinan con Modelos Compuestos para mezclar modos Import y DirectQuery estratégicamente. Para optimización más amplia del modelo, revisa Optimización de Rendimiento.