Contexto de fila vs. contexto de filtro en DAX: la distinción esencial
DAX tiene dos tipos de contexto de evaluación que determinan cómo se calcula una expresión. Confundirlos es la principal fuente de errores para quien empieza en DAX — e incluso para profesionales experimentados.
Contexto de fila
Ocurre cuando DAX itera fila a fila sobre una tabla. Existe en columnas calculadas y en funciones de iteración como SUMX, AVERAGEX, FILTER.
-- Columna calculada (contexto de fila)
Margen = fVentas[Ingresos] - fVentas[Coste]
Aquí, fVentas[Ingresos] y fVentas[Coste] se refieren a los valores de la fila actual.
Contexto de filtro
Ocurre en medidas. Cuando un visual aplica filtros (por fecha, categoría, región), esos filtros crean un contexto de filtro que restringe las filas visibles antes de evaluar la medida.
-- Medida (contexto de filtro)
Ventas Total = SUM(fVentas[Ingresos])
-- SUM calcula solo las filas visibles en el contexto actual
El error clásico
Usar una referencia de columna dentro de una medida como si fuera contexto de fila:
-- INCORRECTO en una medida:
Margen Erróneo = fVentas[Ingresos] - fVentas[Coste]
-- Error: ambiguous column reference in measure
Para iterar en medidas, use funciones X:
-- CORRECTO:
Margen Total = SUMX(fVentas, fVentas[Ingresos] - fVentas[Coste])
Transición de contexto
Cuando se llama a una medida dentro de un contexto de fila (p. ej. dentro de SUMX), DAX convierte automáticamente el contexto de fila en contexto de filtro — esto se llama context transition. Es potente pero puede causar comportamientos inesperados si no se anticipa.
Conclusión
Dominar el contexto de fila y de filtro es la base para escribir DAX correcto. Antes de escribir cualquier expresión, pregúntese: "¿estoy operando fila a fila o sobre un conjunto filtrado?" La respuesta determina el enfoque correcto.