MEDIDAS EN POWER BI: GUÍA COMPLETA PARA DOMINAR EL CÁLCULO DINÁMICO
Una medida es una fórmula DAX que calcula un valor agregado o transformado en tiempo de consulta. No se almacena físicamente en el modelo, a diferencia de una columna calculada, se evalúa según el contexto de filtro vigente.Ejemplos típicos
- Suma de ventas
- Promedio de ticket
- Margen de contribución
- Ventas del año anterior
- Porcentaje del total
Cómo crear una medida
- Hacer click con el botón derecho del ratón en el panel "Campos" de la tabla deseada y seleccionar "Nueva medida".
- Escribir la fórmula en la barra de fórmulas.
- Nombrarla de forma clara y descriptiva, como "Ventas Totales! y no "Medida1".
- Opcionalmente, formatear el valor, como moneda, porcentaje, decimal, desde la pestaña "Herramientas de medida".
Fundamentos de DAX para medidas
El lenguaje DAX, o Data Analysis Expressions, es el corazón de las medidas. Algunas funciones esenciales son:- Agregación básica: "SUM", "AVERAGE", "MIN", "MAX", "COUNT", "DISTINCTCOUNT".
- Filtro y contexto: "CALCULATE", "FILTER", "ALL", "ALLEXCEPT", "VALUES".
- Inteligencia de tiempo: "TOTALYTD", "SAMEPERIODLASTYEAR", "DATEADD", "DATESYTD".
- Lógica: "IF", "SWITCH", "COALESCE".
- Relaciones: "RELATED", "RELATEDTABLE", "USERELATIONSHIP".
Ejemplos
Ventas Totales = SUM(Ventas[Importe])
Ejemplo con CALCULATE, el más importante
Ventas Año Anterior =
CALCULATE(
[Ventas Totales],
SAMEPERIODLASTYEAR(Calendario[Fecha])
)
Ejemplo de ratio
% Margen =
DIVIDE(
[Beneficio],
[Ventas Totales],
0
)
Medidas implícitas vs Medida explícitas
- Medidas Implícitas: Power BI las crea automáticamente al arrastrar un campo numérico a un elemento visual, usar la agregación por defecto, como Suma, Promedio, etc.. Son rápidas pero limitadas y difíciles de reutilizar o controlar.
- Medidas Explícitas: Las el usuario con DAX. Son reutilizables, documentables, auditables y mucho más potentes. Siempre prioriza las medidas explícitas en modelos profesionales.
Mejores prácticas
- Nomenclatura consistente: Usar un estándar claro. Ejemplo: "[Ventas Totales]", "[Ventas YA]", "[% Cumplimiento Meta]".
- Organización: Agrupar medidas en carpetas de visualización, dentro de cada tabla o en una tabla dedicada llamada "_Medidas" o "Medidas".
- Documentación: Añadir descripciones en cada medida.
- Evitar medidas excesivamente anidadas: Es mejor crear medidas intermedias reutilizables.
- Rendimiento:
- Minimizar el uso de "FILTER" sobre tablas grandes cuando sea posible.
- Usar variables, "VAR", para mejorar legibilidad y rendimiento.
- Usar "CALCULATE" con modificadores de filtro en lugar de filtros complejos.
- Formato: Configurar el formato de la medida, no solo en la parte visual.
- Pruebas: Validar el contexto de filtro con matrices y segmentaciones antes de publicar.
Ejemplo con variables
Ventas vs Año Anterior =
VAR VentasActual = [Ventas Totales]
VAR VentasAnterior = [Ventas Año Anterior]
RETURN
DIVIDE(VentasActual - VentasAnterior
Casos de uso avanzados
- Medidas de tiempo inteligente: "YTD", "QTD", "MTD", comparativas interanuales.
- Porcentajes del total: Usando "ALL" o "ALLSELECTED".
- Medidas semi-aditivas: Inventario, saldo bancario, usando "LASTDATE" o "LASTNONBLANK".
- Medidas dinámicas: Usando "SELECTEDVALUE" o campos de parámetros de campo.
Errores comunes a evitar
- Crear columnas calculadas cuando realmente se necesita una medida.
- Usar "SUMX" o iteradores innecesariamente, son más costosos.
- No manejar correctamente el contexto de fila vs contexto de filtro.
- Nombrar medidas de forma genérica o en varios idiomas mezclados.
- Olvidar el formato y la descripción.