CALCULATE en Power BI es la función que separa un informe que suma de un informe que responde preguntas. En realidad hace una sola cosa —evaluar una expresión en un contexto de filtro modificado—, pero de esa frase salen los porcentajes sobre el total, las comparaciones entre sedes y casi cualquier medida que no sea una suma directa. Por eso esta guía la explica desde el contexto de filtro hasta los modificadores, con medidas que se pueden copiar.
Además, está escrita en dos niveles. Si usted usa informes y quiere entender por qué un porcentaje no cuadra, los primeros apartados y las tablas de resultados le bastan. En cambio, si escribe las medidas, encontrará la transición de contexto, los cinco modificadores de filtro y las reglas que limitan lo que se puede poner dentro de un filtro booleano.
La serie y el conjunto de datos común
Por su parte, esta es la segunda de seis guías que comparten el mismo caso: la mesa de servicio de una empresa con cuatro sedes, con 1.240 tickets del tercer trimestre de 2026.
- Esquema estrella: hechos, dimensiones y claves.
- CALCULATE: contexto de filtro y modificadores (esta guía).
- Tabla de fechas y cálculos de tiempo.
- Visualizaciones: qué gráfico usar en cada caso.
- Áreas de trabajo, aplicaciones y actualización.
- Licencias: Free, Pro, PPU y capacidad.
En este punto, el modelo ya está montado como se explica en la primera guía: dos tablas de hechos —Tickets y Consumo— y cinco dimensiones, todas unidas con relaciones uno a varios. Por lo tanto, estas son las cifras a las que hay que llegar:
| Sede | Tickets | Horas | SLA cumplido | % de SLA |
|---|---|---|---|---|
| Bogotá | 512 | 842,0 | 456 | 89,1 % |
| Medellín | 318 | 553,5 | 281 | 88,4 % |
| Cali | 244 | 445,0 | 202 | 82,8 % |
| Barranquilla | 166 | 268,0 | 144 | 86,7 % |
| Total | 1.240 | 2.108,5 | 1.083 | 87,3 % |
Qué es el contexto de filtro
Antes de escribir nada, conviene definirlo: el contexto de filtro es el conjunto de filtros que están activos cuando se evalúa una medida. Es decir, no lo escribe nadie: lo arma el propio informe. Así, la fila de la matriz, la columna, la segmentación de prioridad, la página, el filtro del objeto visual y el resaltado cruzado se suman y producen ese contexto.
Por eso una misma medida de CALCULATE en Power BI devuelve 1.240 en el total y 244 en la fila de Cali. La fórmula no cambia; cambia el contexto en el que se evalúa. De hecho, entender esto es la mitad del trabajo, porque casi todos los resultados raros de DAX son un contexto de filtro distinto del que uno imaginaba.
Asimismo, existe un segundo contexto, el contexto de fila, que aparece dentro de una columna calculada o de una función iteradora. Entonces la expresión se evalúa fila a fila. Además, los dos contextos conviven y no hacen lo mismo, lo que explica el tercer error clásico de quien empieza.
La sintaxis de la función CALCULATE
Por fortuna, la forma es breve y está documentada por Microsoft:
CALCULATE ( <expresión> [, <filtro1> [, <filtro2> [, …] ] ] )
Es decir, el primer argumento es la expresión que se evalúa, y se comporta como una medida. En cambio, los demás son opcionales y definen el contexto modificado. Pueden ser de tres clases: expresiones booleanas, expresiones de tabla o funciones modificadoras de filtro.
Por otra parte, existe CALCULATETABLE, que hace exactamente lo mismo pero devuelve una tabla en lugar de un valor. Por lo tanto, todo lo que sigue sirve para las dos.
Las medidas base, antes de usar CALCULATE en Power BI
Ahora bien, antes de complicar nada conviene escribir las cuatro medidas simples de las que dependen todas las demás. Por lo demás, conviene crearlas siempre de forma explícita, en vez de arrastrar una columna y dejar que Power BI la sume: así se controla cómo se resume cada cosa.
Tickets = COUNTROWS ( Tickets )
Horas = SUM ( Tickets[HorasDedicadas] )
SLA cumplido = SUM ( Tickets[CumpleSLA] )
% de SLA = DIVIDE ( [SLA cumplido], [Tickets] )
Ninguna lleva CALCULATE todavía, y aun así responden por sede, por categoría y por mes, porque el contexto de filtro lo pone el informe. Por eso esa es la base sobre la que el resto de la guía construye.
Además, un detalle que ahorra disgustos: DIVIDE devuelve un valor en blanco cuando el denominador es cero, mientras que el operador barra produce un error de división. Por ejemplo, con una segmentación que deje una sede sin tickets, la diferencia se nota de inmediato.
Filtros booleanos y sus cinco reglas
En la práctica, el filtro más usado de CALCULATE en Power BI es una comparación sencilla. Así, para contar solo los tickets críticos del caso basta con esto:
Tickets críticos =
CALCULATE ( [Tickets], Tickets[Prioridad] = "Crítico" )
En concreto, devuelve 62 sobre los 1.240 del trimestre. Ahora bien, un filtro booleano no admite cualquier cosa dentro. Por eso, estas son las cinco reglas, y saltárselas produce un error que a veces cuesta interpretar:
| Regla | Qué significa |
|---|---|
| Una sola tabla | Puede referirse a columnas de una única tabla |
| Sin medidas | No puede llamar a una medida |
| Sin CALCULATE anidado | No puede contener otro CALCULATE |
| Sin funciones de tabla | Salvo que se pasen a una función de agregación |
| Sí admite agregaciones | Si devuelven un valor escalar |
De ellas, la quinta abre una puerta útil. Por ejemplo, para contar los tickets abiertos el último día con actividad, la agregación va dentro del propio filtro:
Tickets del último día =
CALCULATE (
[Tickets],
Tickets[FechaApertura] = MAX ( Tickets[FechaApertura] )
)
En cambio, cuando la condición es más compleja —dos tablas, o una comparación contra una medida— hay que pasar a un filtro de tabla con FILTER. Es más lento, así que conviene usarlo solo cuando el booleano no alcanza.
Los cinco modificadores de filtro
Por su parte, los modificadores no añaden condiciones: cambian el contexto de filtro. En total son cinco, y cada uno resuelve un problema distinto.
| Modificador | Qué hace | Para qué sirve en el caso |
|---|---|---|
REMOVEFILTERS | Quita filtros de una tabla o de columnas | Calcular el total de las cuatro sedes |
ALL y sus variantes | Lo mismo, y además devuelve tabla | Equivalente, en herramientas antiguas |
KEEPFILTERS | Añade sin sobrescribir | Cruzar prioridad con la fila de la matriz |
USERELATIONSHIP | Activa una relación inactiva | Contar por fecha de cierre |
CROSSFILTER | Cambia la dirección del filtro | Puntual, sin tocar el modelo |
Por cierto, Microsoft recomienda REMOVEFILTERS sobre ALL cuando la herramienta lo admite, porque su nombre dice lo que hace. Así sale la medida de participación que pide cualquier dirección:
Tickets de todas las sedes =
CALCULATE ( [Tickets], REMOVEFILTERS ( Sedes ) )
% sobre el total =
DIVIDE ( [Tickets], [Tickets de todas las sedes] )
| Sede | Tickets | Tickets de todas las sedes | % sobre el total |
|---|---|---|---|
| Bogotá | 512 | 1.240 | 41,3 % |
| Medellín | 318 | 1.240 | 25,6 % |
| Cali | 244 | 1.240 | 19,7 % |
| Barranquilla | 166 | 1.240 | 13,4 % |
Es decir, la columna del medio es la clave: vale 1.240 en las cuatro filas porque el modificador ha retirado el filtro de sede. Sin él, en cambio, el cociente daría 100 % en todas.
Sobrescribir o añadir: el matiz de KEEPFILTERS
Ahora bien, aquí está el comportamiento que más confunde. Cuando un filtro de CALCULATE toca una columna que ya estaba filtrada, la sobrescribe. Es decir, no se cruza con ella: la sustituye.
Se ve claro, por ejemplo, en una matriz con la prioridad en las filas. En efecto, la medida Tickets críticos devuelve 62 en las tres filas, incluida la de prioridad media, porque su propio filtro reemplaza al de la fila. Con KEEPFILTERS, en cambio, los dos se cruzan:
Críticos respetando la fila =
CALCULATE (
[Tickets],
KEEPFILTERS ( Tickets[Prioridad] = "Crítico" )
)
| Fila de la matriz | Tickets | Tickets críticos | Críticos respetando la fila |
|---|---|---|---|
| Crítico | 62 | 62 | 62 |
| Alto | 248 | 62 | (en blanco) |
| Medio | 930 | 62 | (en blanco) |
| Total | 1.240 | 62 | 62 |
Por supuesto, ninguna de las dos columnas está mal: responden a preguntas distintas. Con todo, lo grave es no saber cuál de las dos se está usando, porque entonces el informe miente sin avisar.
La transición de contexto
Por último, hay un uso de CALCULATE en Power BI que no lleva ningún filtro y aun así cambia el resultado. De hecho, sirve para convertir un contexto de fila en contexto de filtro, y se llama transición de contexto.
El ejemplo canónico, de hecho, es una columna calculada en la dimensión de técnicos. Sin CALCULATE, la expresión no sabe en qué fila está y devuelve el total para los siete; con él, cada técnico obtiene lo suyo:
-- Columna calculada en la tabla Tecnicos
Tickets mal contados = COUNTROWS ( Tickets ) -- 1.240 en las 7 filas
Tickets del técnico = CALCULATE ( COUNTROWS ( Tickets ) )
| Técnico | Tickets mal contados | Tickets del técnico |
|---|---|---|
| Técnico 1 | 1.240 | 224 |
| Técnico 2 | 1.240 | 209 |
| Técnico 3 | 1.240 | 198 |
| Técnico 4 | 1.240 | 186 |
| Técnico 5 | 1.240 | 171 |
| Técnico 6 | 1.240 | 148 |
| Técnico 7 | 1.240 | 104 |
Como se ve, la segunda columna suma 1.240. Y conviene saber que, cuando dentro de un contexto de fila se usa una medida del modelo, la transición ocurre sola: por eso escribir [Tickets] en lugar de COUNTROWS también habría funcionado.
Variables: medidas con CALCULATE que se pueden leer
Por otro lado, en cuanto una medida pasa de tres líneas conviene partirla con VAR. En efecto, las variables se evalúan una sola vez, así que además de aclarar la fórmula suelen acelerarla.
Puntos sobre la meta =
VAR Meta = 0.90
VAR Cumplidos = [SLA cumplido]
VAR Atendidos = [Tickets]
VAR Porcentaje = DIVIDE ( Cumplidos, Atendidos )
RETURN
IF ( ISBLANK ( Atendidos ), BLANK (), Porcentaje - Meta )
| Sede | % de SLA | Puntos sobre la meta del 90 % |
|---|---|---|
| Bogotá | 89,1 % | −0,9 |
| Medellín | 88,4 % | −1,6 |
| Cali | 82,8 % | −7,2 |
| Barranquilla | 86,7 % | −3,3 |
| Total | 87,3 % | −2,7 |
Sobre todo, esa última columna es la que la dirección mira primero, y de ella sale la conversación sobre Cali. Por último, una advertencia importante: una variable guarda el valor del contexto en el que se declaró, de modo que CALCULATE no la modifica después.
Medida o columna calculada
Por cierto, la duda aparece siempre, y tiene respuesta corta.
| Medida | Columna calculada | |
|---|---|---|
| Cuándo se calcula | Al consultar | Al actualizar |
| Dónde se guarda | No se guarda | Ocupa espacio en el modelo |
| Reacciona a los filtros | Sí | No |
| Sirve para segmentar | No | Sí |
| Uso típico en el caso | % de SLA, horas por ticket | Rango de antigüedad del ticket |
En la práctica, la regla es esta: si el número tiene que cambiar cuando alguien mueve una segmentación, es una medida. Si en cambio va a usarse como eje, leyenda o filtro, es una columna. Y si se puede calcular antes, en el origen o en Power Query, casi siempre conviene hacerlo allí.
Errores frecuentes con CALCULATE en Power BI
| Error | Síntoma | Corrección |
|---|---|---|
| Olvidar que el filtro sobrescribe | El mismo número en todas las filas | Envolver el filtro en KEEPFILTERS |
Usar FILTER sobre la tabla de hechos | Informe lento | Filtrar la dimensión, no el hecho |
Retirar toda la tabla con ALL | Se pierde también el filtro de fecha | Nombrar la columna concreta |
Anidar CALCULATE en un booleano | Error al guardar la medida | Pasar a filtro de tabla |
| Dividir con el operador barra | Error con denominador cero | Usar DIVIDE |
Contar filas con COUNT sobre una columna | Se pierden las filas en blanco | Usar COUNTROWS |
Sin embargo, el segundo merece un comentario. FILTER recorre fila a fila la tabla que se le pase; sobre 1.240 tickets da igual, pero sobre varios millones la diferencia entre filtrar la dimensión y filtrar el hecho es de segundos a minutos.
Una limitación de CALCULATE en Power BI
Por añadidura, Microsoft documenta que esta función no se admite en modo DirectQuery cuando se usa dentro de columnas calculadas o de reglas de seguridad de nivel de fila. Por lo tanto, si el modelo consulta la base de datos en vivo en lugar de importar, hay que resolver esos dos casos de otra manera.
Aun así, para el caso de esta serie no supone ningún problema, porque son 1.276 filas de hechos y el modelo se importa entero. Por lo demás, la actualización de esos datos importados es el asunto de la quinta guía.
En resumen: CALCULATE en Power BI, en cuatro ideas
En resumen, para trabajar con CALCULATE en Power BI basta con retener cuatro ideas. El contexto de filtro lo pone el informe; los filtros de la función sobrescriben salvo que se use KEEPFILTERS; sin filtros, la función convierte contexto de fila en contexto de filtro; y las variables hacen que la medida se pueda leer dentro de seis meses.
Por último, con esas medidas escritas falta el eje que ninguna empresa puede evitar: el tiempo. En concreto, comparar septiembre con agosto, acumular el año o mirar los últimos treinta días exige una tabla de fechas en condiciones, y ese es el tema de la tercera guía.
Por último, si lo que hace falta es que alguien mantenga las licencias, los usuarios y los accesos de Microsoft 365 que sostienen la herramienta, esa es la conversación de nuestro servicio de gestión de plataformas. En definitiva, escribir medidas es una habilidad; sostener la plataforma cada día, un servicio.




