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.
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.
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.
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.
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».
// 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])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.
Inicio → Nueva medida, y se escribe en la barra de fórmulas. Le
pones nombre a la izquierda del =, igual que a una columna.
Ventas totales = SUM(Ventas[Total linea])
Numero de ventas = COUNTROWS(Ventas)
Ticket promedio = DIVIDE([Ventas totales]; [Numero de ventas])
Clientes distintos = DISTINCTCOUNT(Ventas[ClienteID])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.
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.
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.
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.
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.
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