(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa
DAX

CALCULATE en DAX: el motor de todas las medidas avanzadas

João Barros 03 de December de 2024 2 min de lectura

CALCULATE está considerada la función más potente y fundamental de DAX. Prácticamente todas las medidas no triviales dependen de ella. Su función es simple pero su impacto es profundo: evaluar una expresión en un contexto de filtro modificado.

Sintaxis

CALCULATE(
    <Expresión>,
    <Filtro1>,
    <Filtro2>,
    ...
)

Ejemplo básico

Ventas Lisboa = CALCULATE(
    SUM(fVentas[Ingresos]),
    dRegion[Ciudad] = "Lisboa"
)

Aunque el informe esté filtrado por otra ciudad, esta medida siempre muestra las ventas de Lisboa.

CALCULATE con REMOVEFILTERS

% del Total = DIVIDE(
    SUM(fVentas[Ingresos]),
    CALCULATE(SUM(fVentas[Ingresos]), REMOVEFILTERS(dRegion))
)

REMOVEFILTERS elimina el filtro de la dimensión de región, permitiendo calcular el porcentaje sobre el total independientemente del filtro aplicado en el visual.

CALCULATE con ALL, ALLEXCEPT, ALLSELECTED

  • ALL(tabla) — elimina todos los filtros de la tabla.
  • ALLEXCEPT(tabla, columna) — elimina todos los filtros excepto el de la columna especificada.
  • ALLSELECTED() — elimina filtros internos pero preserva los del usuario (slicers/cross-filter).

CALCULATE y context transition

Cuando se llama a CALCULATE dentro de un iterador (como SUMX), convierte el contexto de fila en contexto de filtro — cada fila de la iteración filtra la tabla antes de evaluar la expresión.

Conclusión

CALCULATE no es solo una función — es el mecanismo por el cual DAX manipula el contexto de evaluación. Dominarla abre la puerta a medidas de time intelligence, análisis comparativos, rankings dinámicos y mucho más.

Compartir: