Power BI básico

Medidas con DAX: columna calculada o medida

Lección 6 de 8 · 18 min

Qué es DAX y por qué te va a sonar

DAX es el lenguaje de fórmulas de Power BI. Tiene más de 200 funciones y muchas se llaman igual que en Excel: SUM, IF, LEFT.

La diferencia está en para qué sirven: las de Excel trabajan sobre celdas; las de DAX, sobre datos que el usuario está filtrando mientras mira el informe.

Columna calculada o medida: la decisión que lo cambia todo

Puedes crear dos cosas con DAX, y elegir mal es el origen de la mitad de las cifras raras de un informe. La diferencia no es de estilo: es cuándo se calcula cada una.

Columna calculada

Se calcula una vez por cada fila de la tabla, y el resultado se guarda en el modelo - ocupa memoria.

Se vuelve a calcular cuando se actualizan los datos, no cuando el usuario filtra.

Medida

No se guarda: se calcula en el momento, según lo que el usuario esté viendo.

Microsoft lo dice así: «los resultados calculados de las medidas cambian a medida que interactúa con los informes».

La misma idea, escrita de las dos formas
// COLUMNA: el total de cada línea de venta. Una respuesta por fila.
Total linea = Ventas[Cantidad] * Ventas[Precio]

// MEDIDA: el total de lo que se esté mostrando. Una respuesta por contexto.
Ventas totales = SUM(Ventas[Total linea])
Resultado
La columna existe en la tabla, fila por fila.
La medida da 5 millones si miras el año, y 400 mil si filtras un mes.

La regla práctica: si el resultado pertenece a esa fila concreta - el total de esa venta, la categoría de ese producto -, es una columna. Si el resultado depende de lo que el usuario esté mirando - el total, el promedio, el porcentaje -, es una medida.

Ante la duda, medida: no ocupa memoria y se adapta a los filtros.

Tu primera medida

Inicio → Nueva medida, y se escribe en la barra de fórmulas. Le pones nombre a la izquierda del =, igual que a una columna.

Cuatro medidas que vas a usar siempre
Ventas totales = SUM(Ventas[Total linea])

Numero de ventas = COUNTROWS(Ventas)

Ticket promedio = DIVIDE([Ventas totales]; [Numero de ventas])

Clientes distintos = DISTINCTCOUNT(Ventas[ClienteID])
Resultado
Fíjate en que una medida puede usar otra: eso las hace fáciles de leer
y de corregir en un solo sitio.

Usa DIVIDE y no la barra /. DIVIDE gestiona la división entre cero por su cuenta y devuelve vacío en lugar de un error. Con la barra, un mes sin ventas llena el informe de errores.

Lo que hace especial a una medida

Escribes Ventas totales una sola vez y sirve para todo el informe: en la tarjeta del total, en el gráfico por producto, en la tabla por ciudad. La misma medida da un número distinto en cada sitio, porque cada gráfico le impone su propio filtro.

Eso es lo que en Excel te obligaba a construir un SUMAR.SI distinto para cada informe.

El margen de un producto

Margen = DIVIDE([Ventas totales] - [Costo total]; [Ventas totales])

Sirve igual para el margen del mes, el de un producto o el de un cliente, sin escribir tres fórmulas.

El cumplimiento de una meta

Cumplimiento = DIVIDE([Ventas totales]; [Meta])

Al filtrar por zona, compara la venta de esa zona contra la meta de esa zona. Solo si las metas están en su propia tabla, como se vio en la lección 4.

Promedios y cuántos cumplen un mínimo

Promedio = AVERAGE(Notas[Nota]) y Aprobados = CALCULATE(COUNTROWS(Notas); Notas[Nota] >= 3)

La segunda usa CALCULATE, que aplica un filtro propio: cuenta solo las notas que cumplen, dentro de lo que ya esté filtrado.

CALCULATE es la función más importante de DAX y también la más difícil: cambia el contexto de filtro de lo que envuelve. Con saber que existe y que sirve para «cuenta esto pero solo cuando se cumpla aquello», te sobra para empezar.

Compruébalo tú mismo

Quieres mostrar el total vendido, y que cambie según lo que el usuario filtre. ¿Columna o medida?

¿Por qué conviene DIVIDE en lugar del signo / al calcular un porcentaje?

Siguiente: El informe interactivo: filtros y segmentaciones

Continuar ← Las primeras visualizaciones