2.3Columnas calculadas vs medidas
Lo esencial en 30 segundos
- La medida calcula un agregado sobre la marcha según el contexto del visual (nada se almacena): es el corazón de Power BI.
- La columna calculada añade un valor a cada fila, calculado en la actualización y almacenado: engorda el modelo.
- Reflejo: medida primero; la columna calculada se reserva a la necesidad fila a fila (filtrar, categorizar, vincular) — lo que debe reaccionar a los filtros es una medida.
Mini-caso continuo — Zineb decide almacenamiento o sobre-la-marcha
Zineb, controladora de gestión en una pyme agroalimentaria de Argel, quiere un margen por línea de venta y un total que se recalcule por ciudad. Cree que debe ponerlo todo en una columna calculada. Aplica la sección: el margen por línea = Ventas[Importe] * 0,3 es una columna calculada (valor almacenado, fila a fila), mientras que Total Ventas = SUM(Ventas[Importe]) es una medida (sobre la marcha). Coloca una matriz Ciudad × [Total Ventas]: la medida se recalcula por ciudad, por total, mientras que una columna quedaría congelada. Retiene la prueba decisiva: lo que debe reaccionar a los segmentadores es una medida. Reflejo instalado: medida primero, columna si hace falta fila a fila.
Caso autónomo de esta sección: reaparece en el curso, el esquema, el guion y el reto de 48 h de la sección 2.3.
1. Dos formas de calcular
La columna calculada añade un valor a CADA FILA de la tabla, calculado en la actualización y almacenado en memoria — por ejemplo Margen = Ventas[Importe] * 0,3. La medida calcula un agregado SOBRE LA MARCHA según el contexto del visual y no almacena nada — por ejemplo Total Ventas = SUM(Ventas[Importe]). Zineb comprende enseguida cuál de las dos está mirando.
2. El árbol de decisión
Una columna calculada vive en un contexto de fila («la fila actual»); una medida vive en un contexto de filtro («lo que el visual filtra» — la ciudad de la barra, el mes de la columna). La prueba decisiva: lo que debe reaccionar a los filtros del informe es una medida. Una columna que solo se suma debería haber sido una medida. Zineb se plantea la pregunta en cada cálculo.
3. Ordenar sus medidas
Buena costumbre desde ya: agrupar las medidas en una tabla dedicada «_Medidas» para un modelo limpio. Se mantienen raras las columnas calculadas, porque engordan el archivo. Zineb ordena sus medidas y limita las columnas a lo estrictamente necesario fila a fila.
🔎 Ejemplo concreto — 🔎 Ejemplo concreto — El duelo columna vs medida
Zineb crea las dos y compara:
Columna calculada: Margen = Ventas[Importe] * 0.3 (un valor por fila)
Medida : Total Ventas = SUM(Ventas[Importe]) (vive en los visuales)
→ matriz Ciudad × [Total Ventas]: la medida se recalcula por ciudad, por total.
Lectura: la medida se recalcula en cada celda del visual (por ciudad, por total).
Lección: la columna muestra un valor congelado; la medida se adapta al contexto.
Vocabulario de la sección
- Columna calculada
- Nueva columna DAX evaluada fila a fila y ALMACENADA: Margen = Ventas[Importe] - Ventas[Coste].
Ejemplo sencillo: Zineb calcula un margen por línea de venta.
Lo que no es: un agregado que se recalcula según el visual.
Reflejo: necesidad fila a fila (filtrar, vincular) → columna.
- Medida
- Cálculo DAX evaluado a demanda en el contexto del visual: Total Ventas = SUM(Ventas[Importe]).
Ejemplo sencillo: Zineb coloca [Total Ventas] en una matriz Ciudad × Mes.
Lo que no es: un valor almacenado congelado en la actualización.
Reflejo: lo que debe reaccionar a los filtros → medida.
- Contexto de fila
- El entorno de una columna calculada: «la fila actual».
Ejemplo sencillo: Zineb lee el margen de cada venta, fila por fila.
Lo que no es: el filtrado dinámico de un visual.
Reflejo: columna calculada → pensar «fila actual».
- Contexto de filtro
- El entorno de una medida: «lo que el visual filtra» (la ciudad de la barra, el mes de la columna).
Ejemplo sencillo: Zineb recalcula [Total Ventas] por ciudad automáticamente.
Lo que no es: un valor congelado idéntico en todas partes.
Reflejo: medida → pensar «lo que el visual filtra».
- Medida implícita
- La agregación automática de una columna arrastrada a valores: práctica al principio, para sustituir por verdaderas medidas explícitas.
Ejemplo sencillo: Zineb sustituye sus agregaciones automáticas por [Total Ventas].
Lo que no es: una medida explícita nombrada y formateada.
Reflejo: en cuanto se supera la suma, crear una medida explícita.
En la práctica — En la práctica — El duelo columna vs medida
- Columna calculada: vista Tabla, tabla Ventas → Nueva columna → Margen = Ventas[Importe] * 0.3 — observe el valor en cada fila, como Zineb.
- Medida: Nueva medida → Total Ventas = SUM(Ventas[Importe]) — no se muestra nada en la tabla: vive en los visuales.
- Cree una matriz Ciudad × [Total Ventas]: la medida se recalcula por ciudad, por total — el contexto en acción.
- Cree la medida Ticket medio = AVERAGE(Ventas[Importe]) y compárela con la media de la columna Margen: la diferencia almacenamiento/sobre-la-marcha.
Guion paso a paso — decidir como Zineb (6 min)
1) Cree una columna calculada: Margen = Ventas[Importe] * 0.3, y vea el valor aparecer en cada fila. 2) Cree una medida: Total Ventas = SUM(Ventas[Importe]) — no se muestra en la tabla. 3) Coloque [Total Ventas] en una matriz Ciudad × [Total Ventas]: se recalcula por ciudad. 4) Añada Ticket medio = AVERAGE(Ventas[Importe]) y compare. 5) Ordene sus medidas en una tabla dedicada «_Medidas», como Zineb.
Si un cálculo debe reaccionar a los segmentadores, no tome una columna: cree una medida.
Plantilla copiar-pegar — ¿medida o columna?
Lo que debe REACCIONAR a los filtros (segmentadores, clics) → MEDIDA (sobre la marcha)
Necesidad de un valor FILA A FILA (filtrar, categorizar, vincular) → COLUMNA
Columna: Margen = Ventas[Importe] * 0.3
Medida: Total Ventas = SUM(Ventas[Importe])
Regla: medida primero; ordenar las medidas en una tabla «_Medidas».
Margen por línea
Zineb calcula Margen = Ventas[Importe] * 0.3 en una columna: el valor existe en cada fila (útil para filtrar).
Total que reacciona
Zineb coloca [Total Ventas] como medida: el total se recalcula por ciudad, por mes, según los segmentadores.
Ticket medio
Ticket medio = AVERAGE(Ventas[Importe]): una medida que se adapta al contexto del visual.
Tabla _Medidas
Zineb agrupa todas sus medidas en una tabla dedicada «_Medidas»: el modelo sigue limpio.
✓ Buenas prácticas
- Medida primero: reacciona a los filtros y no almacena nada.
- Columna calculada solo para una necesidad fila a fila (filtrar, vincular).
- Ordenar las medidas en una tabla dedicada «_Medidas».
✗ Errores frecuentes
- Crear una columna calculada que solo se suma.
- Multiplicar las columnas calculadas (engordan el modelo).
- Esperar de una columna que reaccione a los segmentadores (está congelada).
Puntos clave
- Medida = cálculo sobre la marcha según el contexto del visual: el corazón de Power BI.
- Columna calculada = valor almacenado fila a fila: para filtrar, categorizar, vincular — no para agregar.
- Reflejo: medida primero. Una columna que solo se suma debería haber sido una medida.
- Ordene sus medidas: una tabla dedicada «_Medidas» las agrupa limpiamente.
Reto de 48 h — aplíquelo mañana
Repita el duelo de Zineb: cree una columna calculada (Margen = Ventas[Importe] * 0.3) y una medida (Total Ventas = SUM(Ventas[Importe])), coloque la medida en una matriz y compruebe que se recalcula por ciudad. Escriba en una frase por qué lo que reacciona a los filtros es una medida.
- Distingo una columna calculada de una medida.
- Elijo medida primero y columna si hace falta fila a fila.
- Ordeno mis medidas y explico el contexto (fila vs filtro).
Preguntas frecuentes
¿Por qué mi columna calculada no reacciona a los segmentadores?
Por naturaleza: una columna calculada se evalúa en la actualización, fila a fila, y su valor se almacena de una vez por todas. Por tanto está congelada y no ve los filtros del informe. Lo que debe reaccionar a los segmentadores debe ser una medida, porque una medida se recalcula sobre la marcha en el contexto del visual.
¿Bastan las medidas implícitas (arrastrar una columna)?
Para empezar, sí: arrastrar una columna numérica crea una agregación automática. Pero las medidas explícitas se imponen pronto: reutilizables, formateables, documentables, y obligatorias para todo cálculo no trivial (ratios, inteligencia de tiempo) y para la PL-300. Ordénelas en una tabla «_Medidas».
¿Qué debe reaccionar a los filtros del informe (segmentadores, clics)?