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
| Medida | Columna calculada | |
|---|---|---|
| Cuándo se calcula | Al consultar, para cada celda del visual | Al actualizar, una vez por fila |
| Se guarda en el modelo | No | Sí (usa memoria) |
| Responde a segmentaciones y filtros | Sí | No, el valor guardado es fijo |
| Se puede usar en un eje o segmentación | No | Sí |
| Uso típico | Totales, razones, KPIs, comparaciones | Categorí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.
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.
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


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.
Marca esta lección como completada para seguir tu progreso.