Lección 6 de 16 · Nivel 2: Intermedio
DAX en Power BI desde cero: medidas y columnas calculadas
- ⏱ 9 min de lectura
- ❓ 3 preguntas de repaso
- ✍️ Ejercicio con solución
En esta lección
- Entender qué es DAX y la diferencia entre columnas calculadas y medidas.
- Crear medidas con SUM, AVERAGE, COUNTROWS, DISTINCTCOUNT y DIVIDE.
- Usar SUMX para calcular fila por fila.
- Entender el contexto de filtro: por qué la misma medida da un resultado distinto en cada celda.
DAX (Data Analysis Expressions) es el lenguaje de fórmulas de Power BI, Power Pivot y otros productos de Microsoft. Se parece a las fórmulas de Excel, pero con una diferencia fundamental: no trabaja celda a celda, sino con tablas y columnas, y se recalcula según los filtros que el usuario tenga activos. Dominar las medidas es lo que convierte un informe bonito en un informe analítico.
Columnas calculadas frente a medidas
| Columna calculada | Medida | |
|---|---|---|
| Qué es | Una columna nueva en una tabla, calculada fila por fila | Un cálculo que se evalúa en el momento, según los filtros |
| Cuándo se calcula | Al actualizar los datos; se guarda en el modelo | Cada vez que un objeto visual la muestra |
| Ocupa memoria | Sí | No |
| Úsala para | Clasificar o agrupar filas (segmentos, rangos), cuando necesitas el valor en un eje o una segmentación | Totales, promedios, porcentajes, comparaciones: cualquier número que se resume |
| Ejemplo | Tamaño de pedido = "Grande" si Importe ≥ 1.000 | Ventas totales, Margen %, Ticket medio |
Regla práctica: si el resultado es un número que se va a resumir, es una medida. Las columnas calculadas son para cuando necesitas la etiqueta en una fila. Y si puedes crear la columna en Power Query, mejor allí.
Tu primera medida
En la vista de Informe, selecciona la tabla Ventas en el panel Datos y pulsa Nueva medida. Escribe en la barra de fórmulas:
Ventas Totales = SUM ( Ventas[Importe] )
- A la izquierda del = va el nombre de la medida.
- Las columnas se escriben como
Tabla[Columna]. - Las funciones de DAX se escriben en inglés (SUM, AVERAGE, CALCULATE), aunque la interfaz esté en español.
- En este curso usamos la coma como separador de argumentos, que es lo habitual en DAX. Si tu Power BI te da error con comas, revisa en las opciones la configuración de separadores de DAX.
La medida aparece con el icono de una calculadora. Arrástrala a una tarjeta, a un gráfico por ciudad o a una matriz por mes: en cada lugar se calcula para lo que corresponde.
Crea una tabla vacía solo para guardar medidas (Inicio → Especificar datos, llámala "_Medidas" y carga una tabla con una columna que después ocultas). Mueve ahí tus medidas desde Herramientas de medición → Tabla principal. Con 40 medidas, lo agradecerás.
Funciones básicas
Usaremos esta pequeña tabla de Ventas de ejemplo (Importe = Cantidad × Precio):
| Cliente | Producto | Cantidad | Precio | Costo unitario |
|---|---|---|---|---|
| C1 | Arroz | 10 | 4,50 | 3,20 |
| C2 | Aceite | 5 | 9,00 | 6,50 |
| C1 | Aceite | 8 | 9,00 | 6,50 |
| C3 | Arroz | 20 | 4,50 | 3,20 |
| C2 | Azúcar | 12 | 3,80 | 2,90 |
| C1 | Arroz | 6 | 4,50 | 3,20 |
| Medida | Fórmula | Resultado con la tabla |
|---|---|---|
| Unidades | SUM ( Ventas[Cantidad] ) | 61 |
| Pedidos | COUNTROWS ( Ventas ) | 6 |
| Clientes | DISTINCTCOUNT ( Ventas[Cliente] ) | 3 |
| Precio máximo | MAX ( Ventas[Precio] ) | 9,00 |
| Cantidad promedio | AVERAGE ( Ventas[Cantidad] ) | 10,17 |
SUMX: calcular fila por fila y sumar
Si la tabla no tiene una columna de Importe, sino Cantidad y Precio, no puedes hacer SUM(Cantidad) * SUM(Precio): multiplicarías los totales (61 × 35,30), lo que no tiene sentido. Necesitas multiplicar en cada fila y después sumar. Para eso están las funciones iteradoras, que terminan en X:
Ventas Totales =
SUMX ( Ventas, Ventas[Cantidad] * Ventas[Precio] )
Costo Total =
SUMX ( Ventas, Ventas[Cantidad] * Ventas[Costo unitario] )
SUMX recorre la tabla Ventas, calcula la expresión en cada fila (45; 45; 72; 90; 45,60; 27) y suma: 324,60. El costo total es 234,50. Existen también AVERAGEX, MINX, MAXX y COUNTX.
1. Tu tabla tiene Cantidad y Precio, pero no Importe. ¿Qué medida calcula correctamente las ventas?
SUMX multiplica en cada fila y luego suma los resultados. Multiplicar los totales da un número sin sentido.
Medidas que usan otras medidas
Una vez creadas las medidas base, construye las demás a partir de ellas. Es más legible y, si cambia la definición de Ventas, todo se actualiza:
Margen = [Ventas Totales] - [Costo Total]
Margen % = DIVIDE ( [Margen], [Ventas Totales] )
Ticket Medio = DIVIDE ( [Ventas Totales], [Pedidos] )
Con la tabla de ejemplo: Margen = 324,60 − 234,50 = 90,10; Margen % = 90,10 ÷ 324,60 = 27,8%; Ticket medio = 324,60 ÷ 6 = 54,10.
Usa siempre DIVIDE en lugar del operador /: si el denominador es cero o está vacío, DIVIDE devuelve un valor en blanco (o el que indiques como tercer argumento) en lugar de un error.
Da formato a cada medida en Herramientas de medición: Margen % como porcentaje con un decimal, Ventas como moneda sin decimales, etc. El formato viaja con la medida a todos los objetos visuales.
El contexto de filtro: la idea más importante de DAX
Pon la medida Ventas Totales en una matriz con Producto en las filas:
| Producto | Ventas Totales | Margen % |
|---|---|---|
| Arroz | 162,00 | 28,9% |
| Aceite | 117,00 | 27,8% |
| Azúcar | 45,60 | 23,7% |
| Total | 324,60 | 27,8% |
Es una sola fórmula, pero da un resultado distinto en cada fila. ¿Por qué? Porque antes de calcular, Power BI aplica el contexto de filtro de esa celda: en la fila "Arroz", la tabla Ventas se filtra a las filas de arroz, y SUMX recorre solo esas. En la fila Total no hay filtro de producto, así que recorre todas. Ese contexto lo forman las filas y columnas del objeto visual, las segmentaciones, los filtros de página e informe y las interacciones con otros gráficos.
Fíjate en que el Margen % del total (27,8%) no es la suma ni el promedio simple de las filas: se recalcula con el margen total y las ventas totales. Así debe ser. Por eso los porcentajes y los promedios siempre deben ser medidas, nunca columnas que luego se suman.
2. ¿Por qué la misma medida "Ventas Totales" muestra 162 en la fila de Arroz y 324,60 en el total?
El contexto de filtro es la base de DAX: la medida se evalúa después de aplicar los filtros de cada celda.
Medidas implícitas frente a explícitas
Cuando arrastras una columna numérica a un gráfico, Power BI crea una medida implícita (por ejemplo, "Suma de Importe"). Funciona para empezar, pero no puedes reutilizarla en otras fórmulas ni controlar su formato en un solo lugar, y algunas funciones avanzadas no las admiten. La práctica profesional es crear medidas explícitas para todo lo que se muestra.
3. ¿Qué debe ser una medida y no una columna calculada?
Los porcentajes deben recalcularse para cada contexto; como columna, el total sería incorrecto.
Ejercicio práctico: tus medidas base
Con el modelo de la lección 5, crea en una tabla de medidas:
- Ventas Totales, Costo Total, Margen y Margen %.
- Pedidos, Clientes (distintos) y Ticket Medio.
- Unidades y Precio Medio por unidad (ventas ÷ unidades).
- Ponlas en una matriz por Categoría y por Zona, y comprueba que el Margen % del total se recalcula.
Ver las fórmulas
Ventas Totales = SUM ( Ventas[Importe] )
Costo Total = SUM ( Ventas[Costo] )
Margen = [Ventas Totales] - [Costo Total]
Margen % = DIVIDE ( [Margen], [Ventas Totales] )
Pedidos = COUNTROWS ( Ventas )
Clientes = DISTINCTCOUNT ( Ventas[IdCliente] )
Ticket Medio = DIVIDE ( [Ventas Totales], [Pedidos] )
Unidades = SUM ( Ventas[Cantidad] )
Precio Medio = DIVIDE ( [Ventas Totales], [Unidades] )
Si tu tabla de hechos tiene Cantidad y Precio en lugar de Importe, usa SUMX como en la lección. Si cada fila de Ventas fuera una línea de pedido (varios productos por pedido), Pedidos sería DISTINCTCOUNT(Ventas[NumPedido]).
Resumen
- DAX trabaja con tablas y columnas; las funciones se escriben en inglés.
- Medidas para números que se resumen; columnas calculadas solo para clasificar filas.
- SUM, AVERAGE, COUNTROWS, DISTINCTCOUNT y DIVIDE cubren lo básico; SUMX calcula fila por fila.
- Construye medidas a partir de otras y dales formato una sola vez.
- El contexto de filtro hace que cada celda tenga su propio resultado.
En la próxima lección aprenderás CALCULATE, la función más importante de DAX, que te permite modificar ese contexto de filtro.
Crea tu cuenta en 30 segundos, marca tus lecciones y descarga el certificado al terminar.