Si alguna vez ha construido un modelo en Power BI con alguna dimensión, conoce el problema: empieza con una medida de Vendas, luego necesita la versión acumulada del año, la comparación con el período anterior, el crecimiento porcentual... y, sin darse cuenta, tiene cuarenta medidas que son casi todas la misma fórmula con un pequeño envoltorio de time intelligence alrededor.
Esa "explosión de medidas" es uno de los mayores frenos al mantenimiento de un modelo. Cada nueva métrica de negocio se multiplica por cada variación temporal, y cualquier corrección obliga a repetir el mismo cambio en decenas de sitios. Los grupos de cálculo (calculation groups) existen precisamente para resolver esto: permiten escribir la lógica de transformación una sola vez y aplicarla a cualquier medida.
En esta guía explicamos qué son, el problema concreto que resuelven, cómo funcionan por dentro, cómo crearlos paso a paso y qué trampas evitar. Los ejemplos usan DAX y asumen un modelo con una tabla de fechas — el escenario más común donde los grupos de cálculo brillan.
Qué son los grupos de cálculo
Un grupo de cálculo es un objeto del modelo que contiene un conjunto de elementos de cálculo. Cada elemento es una transformación reutilizable, escrita en DAX, que se aplica a la medida que se esté evaluando en el visual. En lugar de crear Vendas YTD, Margem YTD, Unidades YTD, crea un único elemento "YTD" y funciona con cualquiera de esas medidas.

En la práctica, el grupo de cálculo aparece como una tabla con una columna (por ejemplo, "Cálculo Temporal") cuyos valores son los elementos ("Atual", "YTD", "Período anterior", "Variação %"). El usuario arrastra esa columna a una segmentación o a las columnas de una matriz y alterna la lógica sin que existan medidas físicas para cada combinación.
El problema que resuelven: la explosión de medidas
Imagine cinco métricas base (ventas, margen, unidades, clientes, ticket medio) y seis variaciones temporales (actual, YTD, MTD, mismo período del año anterior, variación absoluta, variación porcentual). Sin grupos de cálculo, esto son treinta medidas — y cada una repite la misma estructura de CALCULATE con un filtro temporal diferente.
El coste no es solo escribir treinta medidas. Es mantenerlas: cambiar la definición de "ventas netas" implica tocar seis medidas; añadir una séptima variación temporal implica crear cinco más. Con un grupo de cálculo, tiene cinco medidas base y seis elementos de cálculo — once objetos en vez de treinta — y cada cambio ocurre en un único lugar.
Cómo funcionan por dentro: SELECTEDMEASURE()
La pieza central es la función SELECTEDMEASURE(). Dentro de un elemento de cálculo, representa "la medida que esté en contexto" — sea Vendas, Margem u otra cualquiera. El elemento define qué hacer con esa medida sin saber cuál es.
Un elemento "YTD" se escribe así:
CALCULATE( SELECTEDMEASURE(), DATESYTD( 'Calendário'[Data] ) )
Cuando el usuario coloca la medida Vendas en un visual y selecciona el elemento "YTD", el motor sustituye SELECTEDMEASURE() por Vendas y evalúa el acumulado del año. La misma expresión sirve para Margem o Unidades. Escribió la lógica una vez; se aplica a todas.
Cómo crear un grupo de cálculo, paso a paso
Hay dos formas de crear grupos de cálculo. La más directa hoy es dentro del propio Power BI Desktop: en la vista de Modelo, a partir de las versiones de 2024, existe el botón Grupo de cálculo en la cinta; al crearlo, añade elementos y escribe el DAX de cada uno. La alternativa clásica, usada desde hace años en contextos empresariales, es Tabular Editor, una herramienta externa que sigue siendo la preferida para modelos grandes.
Sea cual sea la herramienta, el flujo es el mismo: crear el grupo, darle un nombre de columna claro, añadir cada elemento de cálculo con su expresión en DAX, definir el orden (ordinal) en que aparecen y, si es necesario, el texto de formato. Antes de empezar, asegúrese de que el modelo tiene una tabla de fechas marcada como tal — los elementos de time intelligence dependen de ella.
Ejemplo práctico: un selector temporal completo
Suponga que quiere una única segmentación que alterne entre valor actual, acumulado del año y comparación con el mismo período. Crea un grupo "Cálculo Temporal" con estos elementos:
- Actual:
SELECTEDMEASURE() - YTD:
CALCULATE( SELECTEDMEASURE(), DATESYTD( 'Calendário'[Data] ) ) - Año anterior:
CALCULATE( SELECTEDMEASURE(), SAMEPERIODLASTYEAR( 'Calendário'[Data] ) ) - Variación %:
DIVIDE( SELECTEDMEASURE() - CALCULATE( SELECTEDMEASURE(), SAMEPERIODLASTYEAR( 'Calendário'[Data] ) ), CALCULATE( SELECTEDMEASURE(), SAMEPERIODLASTYEAR( 'Calendário'[Data] ) ) )
Con estos cuatro elementos, cualquier medida del modelo gana al instante cuatro perspectivas temporales. Un informe entero pasa a depender de media docena de medidas base en lugar de un bosque de variantes.
Cadenas de formato dinámicas
Un detalle que marca la diferencia: cada elemento de cálculo puede definir su propio formato. El elemento "Variación %" debe mostrarse como porcentaje, mientras que "Actual" muestra euros. En los grupos de cálculo, define una expresión de formato por elemento (por ejemplo, "0.0%" para la variación), y el número aparece correctamente formateado sin medidas adicionales. Sin esto, un porcentaje aparecería como un valor monetario y confundiría la lectura.
Precedencia cuando hay varios grupos
Puede tener más de un grupo de cálculo — por ejemplo, uno para tiempo y otro para moneda o para tipo de valor. Cuando dos grupos se aplican a la misma medida, el orden importa: aplicar primero la conversión de moneda y luego el acumulado del año da un resultado diferente del orden inverso. Ese orden se controla mediante la precedencia de cada grupo, un número que define quién se evalúa primero. Definir la precedencia de forma consciente evita resultados difíciles de explicar.
Errores comunes y buenas prácticas
El primer error es mezclar medidas implícitas con grupos de cálculo. Un grupo solo transforma medidas explícitas; si el usuario arrastra un campo numérico y deja que Power BI lo sume automáticamente, el elemento de cálculo no se aplica de forma fiable. La buena práctica es desactivar las agregaciones implícitas y trabajar siempre con medidas con nombre.
Otros puntos a vigilar:
- Dar nombres claros a los elementos — el usuario los ve en una segmentación, no son solo código.
- Definir el orden (ordinal) para que "Actual" aparezca antes de "YTD", y no por orden alfabético.
- Probar con varias medidas, no solo con aquella en la que pensó al escribir el elemento.
- Documentar la precedencia cuando hay más de un grupo, para quien venga después.
Minicaso: de 60 medidas a 12
Una empresa de servicios mantenía un modelo con unas sesenta medidas, casi todas variaciones temporales de seis indicadores. Cada cierre mensual traía el mismo ritual: alguien pedía "lo mismo, pero para otra métrica" y nacían seis medidas más. El archivo era lento de mantener y nadie tenía la certeza de que todas las variantes usaran la misma lógica.
El equipo reescribió el modelo con dos grupos de cálculo — uno temporal, con seis elementos, y otro de formato de valor. Las sesenta medidas pasaron a doce base. El tiempo para añadir una nueva métrica cayó de "media mañana copiando y pegando" a "escribir una medida"; y, como la lógica temporal vivía en un único sitio, desaparecieron las inconsistencias entre variantes. No hubo nueva tecnología de por medio — solo el objeto correcto para el problema correcto.
En la práctica
Si su modelo tiene familias de medidas que solo difieren en una transformación repetida — tiempo, moneda, tipo de valor — los grupos de cálculo son casi siempre la respuesta. Empiece pequeño: un grupo temporal con tres o cuatro elementos, probado con dos o tres medidas base. Gane confianza con SELECTEDMEASURE(), cuide los formatos y el orden, y solo después avance a varios grupos y precedencias. El objetivo no es tener menos medidas por vanidad — es tener un modelo donde un cambio se hace en un sitio y vale para todo.