Power BI

DAX básico: medidas, columnas calculadas y contexto

Aprende DAX básico para Power BI: la diferencia entre medidas y columnas calculadas, cuándo usar cada una y cómo influyen el contexto de fila y de filtro.

Por Equipo editorial de DashCore HubActualizado 7 min de lectura

DAX (Data Analysis Expressions) es el lenguaje de fórmulas de Power BI, Power Pivot y Analysis Services. Para usarlo bien necesitas tres ideas: medidas (cálculos que se evalúan al momento para cada celda de un visual), columnas calculadas (valores guardados fila por fila en una tabla) y contexto (los filtros y la fila actual que deciden qué datos ve realmente una fórmula). Con estas tres claras, la mayoría de los "misterios" de DAX desaparecen.

Cómo se ve DAX

DAX se parece mucho a las fórmulas de Excel, y varias funciones se llaman igual que en Excel en inglés: SUM, AVERAGE, IF, DIVIDE, YEAR. En DAX las funciones siempre van en inglés, aunque tu Power BI esté en español. La gran diferencia es que DAX nunca usa celdas como A2. Trabaja con tablas y columnas, escritas como Tabla[Columna], y con otras medidas, escritas como [NombreMedida].

Total Sales = SUM ( Sales[SalesAmount] )

Lo que va antes del signo igual es el nombre; lo que va después es la expresión. En los ejemplos usaremos un modelo sencillo: una tabla Sales (OrderDate, ProductKey, Quantity, UnitPrice, UnitCost), una tabla Product (ProductKey, ProductName, Category) y una tabla Calendar, conectadas con relaciones de uno a varios.

Si todavía no has armado un modelo así, empieza con tu primer reporte en Power BI en 60 minutos.

Medidas: cálculos que responden a los filtros

Una medida es una fórmula que no se guarda en ninguna parte. Power BI la evalúa cada vez que un visual necesita un número, usando los filtros que aplican a esa celda. La misma medida muestra el ingreso total en una tarjeta, el ingreso por categoría en un gráfico de barras y el ingreso por mes en uno de líneas, sin cambiar nada.

Revenue = SUMX ( Sales, Sales[Quantity] * Sales[UnitPrice] )

Cost = SUMX ( Sales, Sales[Quantity] * Sales[UnitCost] )

Profit = [Revenue] - [Cost]

Profit Margin % = DIVIDE ( [Profit], [Revenue] )

Fíjate en el estilo de bloques: Profit reutiliza Revenue y Cost, y Profit Margin % reutiliza Profit. Si mañana corriges cómo se calcula Revenue, todo lo que depende de ella se actualiza.

SUM vs SUMX

SUM suma una columna. SUMX es un iterador: recorre una tabla fila por fila, evalúa una expresión en cada fila (aquí, cantidad por precio) y luego suma los resultados. Las otras funciones con "X" funcionan igual: AVERAGEX, MINX, MAXX, COUNTX.

Buenos hábitos con las medidas

  • Usa DIVIDE en lugar del operador /; devuelve un valor en blanco (o el valor alterno que elijas) cuando se divide entre cero.
  • Crea medidas explícitas incluso para sumas simples, en vez de arrastrar una columna numérica al visual. Las medidas explícitas se reutilizan y se formatean más fácil.
  • Guarda tus medidas en un solo lugar, como una tabla vacía llamada "Medidas", para encontrarlas rápido.
  • Usa variables (VAR … RETURN) para que las fórmulas largas se lean mejor.
Profit Margin % =
VAR Rev = [Revenue]
VAR Prof = [Profit]
RETURN
    DIVIDE ( Prof, Rev )

Columnas calculadas: valores guardados por fila

Una columna calculada agrega una columna nueva a una tabla. Su fórmula se ejecuta una vez por cada fila cuando se actualizan los datos, y el resultado queda guardado en el modelo, igual que las columnas importadas.

Line Revenue = Sales[Quantity] * Sales[UnitPrice]

Price Band =
IF ( Sales[UnitPrice] >= 50, "Premium", "Standard" )

Category = RELATED ( Product[Category] )

RELATED trae un valor del lado "uno" de una relación al lado "varios", parecido a una búsqueda. Las columnas calculadas sirven cuando necesitas segmentar, filtrar o agrupar por el resultado: Price Band puede ir en un eje o en una segmentación, y una medida no.

Medidas vs columnas calculadas: cuál usar

MedidaColumna calculada
Cuándo se calculaAl consultar, para cada celda del visualAl actualizar, una vez por fila
Se guarda en el modeloNoSí (usa memoria)
Responde a segmentaciones y filtrosSíNo, el valor guardado es fijo
Se puede usar en un eje o segmentaciónNoSí
Uso típicoTotales, razones, KPIs, comparacionesCategorías, banderas, rangos, claves

Una regla sencilla: si lo vas a agregar, crea una medida; si vas a filtrar o agrupar por eso, usa una columna. Y si la columna se puede crear en Power Query, ese suele ser el mejor lugar, porque esas columnas se comprimen bien y mantienes la lógica en una sola capa.

Consejo: No crees una columna Line Revenue solo para sumarla. SUMX ( Sales, Sales[Quantity] * Sales[UnitPrice] ) da el mismo total sin guardar una columna extra, y el modelo queda más liviano.

Contexto: por qué la misma fórmula da respuestas distintas

El contexto es lo que más confunde al principio. Toda fórmula DAX se evalúa en algún lugar: en una fila de una tabla o en una celda de un visual. Ese "lugar" es el contexto, y decide qué filas puede ver la fórmula. Hay dos tipos.

Contexto de fila

El contexto de fila significa "la fila actual". Existe dentro de las columnas calculadas y dentro de iteradores como SUMX. Cuando una columna calculada dice Sales[Quantity] * Sales[UnitPrice], DAX sabe qué cantidad y qué precio usar porque está evaluando una fila a la vez.

Una medida por sí sola no tiene fila actual, y por eso esto falla como medida:

Bad Measure = Sales[Quantity] * Sales[UnitPrice]   -- error: no hay contexto de fila

Si la envuelves en SUMX, se crea el contexto de fila que necesita.

Contexto de filtro

El contexto de filtro es el conjunto de filtros activos cuando se evalúa una medida. Viene de:

  • Las filas y columnas del visual (por ejemplo, Category = "Bikes" y Year = 2025 en una celda de una matriz).
  • Las segmentaciones y el filtrado cruzado desde otros visuales.
  • Los filtros del panel Filtros (a nivel de visual, página e informe).
  • Los cambios de filtro que haces dentro de una fórmula con CALCULATE.

Los filtros también viajan por las relaciones: un filtro en Product[Category] llega a la tabla Sales a través de la relación por ProductKey, así que [Revenue] solo suma las ventas de esa categoría. Por eso importa tener un modelo en forma de estrella; mira esquema estrella en Power BI.

Un ejemplo práctico

Pon [Revenue] en una matriz con Category en filas y Year en columnas. Para la celda "Bikes / 2025", el contexto de filtro es Category = Bikes y Year = 2025. Power BI filtra Sales con eso y ejecuta SUMX solo sobre esas filas. La fila de Total no tiene filtro de categoría, así que suma todas las categorías de ese año. Una fórmula, muchas respuestas, cada una correcta para su contexto.

Cambiar el contexto con CALCULATE

CALCULATE evalúa una expresión con un contexto de filtro modificado. Por ejemplo, los ingresos de Bikes sin importar lo que diga el visual sobre la categoría:

Bikes Revenue = CALCULATE ( [Revenue], Product[Category] = "Bikes" )

CALCULATE es la función más importante de DAX y merece su propio artículo: la función CALCULATE en DAX, explicada fácil.

Atajo con IA: Cuando una medida da un número raro, describe la situación a un asistente de IA con los detalles de tu modelo: "En Power BI, mi medida Revenue = SUMX(Sales, Sales[Quantity]*Sales[UnitPrice]) muestra el mismo valor en todas las filas de una matriz con Product[Category] en filas. Sales y Product están relacionadas por ProductKey. ¿Cuáles son las causas probables?" La respuesta típica, una relación que falta o está inactiva, la revisas en la vista de Modelo en segundos.

Próximos pasos

Abre un modelo y escribe cinco medidas: Revenue, Cost, Profit, Profit Margin % y Orders. Ponlas en una matriz con Category y Year y, para cada celda, di en voz alta cuál es el contexto de filtro. Luego crea una columna calculada (un rango de precio o una bandera) y úsala en una segmentación. Cuando eso te resulte cómodo, pasa a CALCULATE y después a la inteligencia de tiempo, como el acumulado del año y las comparaciones contra el año anterior.

Mira: lecciones en video

MEDIDAS vs COLUMNAS CALCULADAS en Power BI [DAX]por Nestor Adrianzen · Ver en YouTube ↗
Power BI DAX for Beginners #1: Calculated Columns and Measurespor BI Consulting Services · Ver en YouTube ↗Video en inglés — activa los subtítulos traducidos en YouTube si los necesitas.

Preguntas frecuentes

¿Cuál es la diferencia entre una medida y una columna calculada?

Una medida se calcula al consultar y responde a los filtros de cada visual. Una columna calculada se calcula una vez por fila al actualizar y se guarda en el modelo, por eso puedes usarla en ejes y segmentaciones.

¿Por qué mi medida da error cuando uso una columna directamente?

Las medidas no tienen fila actual, así que una referencia como Sales[Quantity] es ambigua. Envuélvela en una agregación como SUM o en un iterador como SUMX.

¿Las funciones DAX se traducen en Power BI en español?

No. Los nombres de las funciones DAX siguen en inglés en todas las versiones de idioma, a diferencia de las funciones de Excel. Las fórmulas que encuentras en internet funcionan tal cual.

¿Debo crear columnas en DAX o en Power Query?

Si la columna solo depende de datos de la misma fila o de una búsqueda simple, Power Query suele ser mejor. Usa columnas calculadas en DAX cuando necesites lógica del modelo, como RELATED o valores de otras tablas.

¿Aprendes con la Academia?
Marca esta lección como completada para seguir tu progreso.
Hacer el quiz