¿Qué es DAX en Power BI?
DAX (Expresiones de Análisis de Datos, por sus siglas en inglés) es un lenguaje de fórmulas utilizado en Power BI, Analysis Services y Power Pivot en Excel.
Se trata de una colección de funciones, operadores y constantes que permiten crear expresiones para calcular y devolver valores a partir de datos existentes en un modelo semántico. A diferencia de las fórmulas de Excel, DAX está diseñado específicamente para modelos de datos relacionales, lo que lo hace ideal para analizar tendencias complejas como porcentajes de crecimiento por categorías de productos, intervalos de fechas o comparaciones interanuales.
En Power BI, DAX se usa principalmente para crear medidas (cálculos agregados dinámicos que se evalúan en contexto de filtros) y columnas calculadas (cálculos fila por fila en una tabla). Esto permite resolver problemas empresariales reales, como el análisis de ventas o métricas personalizadas, sin necesidad de transformar los datos subyacentes.
Características principales de DAX
Funciones: Más de 250 funciones categorizadas (por ejemplo, de fecha y hora, lógicas, matemáticas, texto). Siempre operan sobre columnas o tablas completas, no en celdas individuales, y soportan filtros dinámicos. Ejemplos comunes: SUM (suma valores), CALCULATE (evalúa expresiones con filtros) y PREVIOUSQUARTER (filtra por trimestre anterior).
Operadores: Incluyen el signo igual (=) para iniciar fórmulas, comas para separar argumentos, y operadores lógicos o aritméticos similares a Excel.
Constantes: Valores fijos como números, texto o lógicos (TRUE/FALSE).
Sintaxis: Una fórmula siempre comienza con =, seguida de funciones en paréntesis con argumentos. Referencias a tablas y columnas usan el formato Tabla[Columna]. Soporta anidamiento de hasta 64 funciones y contexto de filtro (automático en informes).
Ventajas: Mejora el rendimiento con variables, inteligencia de tiempo para análisis dinámicos y sugerencias automáticas en el editor de Power BI.
DAX es similar a Excel en sintaxis, pero su motor de cálculo maneja grandes volúmenes de datos de manera eficiente.Ejemplos básicos de fórmulas DAXAquí hay ejemplos simples para medidas en Power BI (asumiendo una tabla Sales con columna SalesAmount y una tabla Calendar con DateKey). Puedes crear estas en la vista de Informes o Modelo.Medida básica: Total de ventas
Suma todos los valores de una columna.
Total Sales = SUM(Sales[SalesAmount])
Esta medida calcula el total dinámico de ventas según los filtros aplicados en un informe (por ejemplo, por año o producto).
Medida con filtro: Ventas del trimestre anterior
Usa CALCULATE para aplicar un filtro temporal.
Previous Quarter Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))
Evalúa la suma de ventas solo para el trimestre previo al contexto actual (útil en gráficos de tendencias).
Medida con contexto de filtro: Ventas en tiendas
Filtra por una condición específica.
Store Sales = CALCULATE([Total Sales], Channel[ChannelName] = “Store”)
Calcula las ventas solo para el canal “Store”, reutilizando la medida Total Sales.
Para columnas calculadas (creadas en la vista de Datos), un ejemplo simple sería agregar una columna que categorice ventas:
Sales Category = IF(Sales[SalesAmount] > 1000, “Alta”, “Baja”)
Cómo empezar a usar DAX en Power BIAbre Power BI Desktop y carga un conjunto de datos (por ejemplo, el archivo de muestra de ventas de Contoso desde Microsoft).
En la vista de Informes, haz clic derecho en una tabla del panel de Campos y selecciona Nueva medida.
En la barra de fórmulas (arriba), escribe el nombre de la medida, seguido de =, y la expresión DAX. Usa las sugerencias IntelliSense para autocompletar funciones.
Presiona Enter o la marca de verificación para validar y guardar. La medida aparecerá en el panel de Campos.
Arrastra la medida a un visual (como un gráfico) y aplica filtros para ver resultados dinámicos.
🧠 Introducción a DAX
DAX (Data Analysis Expressions) es el lenguaje de fórmulas que utiliza Power BI, Power Pivot y Analysis Services Tabular para realizar cálculos y análisis avanzados sobre los datos.
Aunque su sintaxis se parece a la de Excel, DAX está diseñado para trabajar con grandes modelos de datos y relaciones entre tablas.
⚙️ ¿Para qué sirve?
DAX permite:
- Crear columnas calculadas (nuevos valores fila a fila).
- Definir medidas (cálculos agregados como sumas, promedios o ratios).
- Generar tablas calculadas (nuevas tablas derivadas de otras).
- Hacer análisis temporales (comparar periodos, acumulados, etc.).
Ejemplo de medida:
VentasTotales = SUM(Ventas[Importe])
📊 Conceptos clave
- Filas y contexto
- El contexto de fila aplica la fórmula a cada registro.
- El contexto de filtro depende de los filtros activos en un gráfico o informe.
- Relaciones
- DAX aprovecha las relaciones entre tablas (por ejemplo, Ventas y Productos) para realizar cálculos cruzados automáticamente.
- Medidas vs Columnas calculadas
- Columna calculada: se calcula para cada fila y se almacena.
- Medida: se calcula en tiempo real según los filtros.
🧩 Funciones más comunes
| Tipo de función | Ejemplo | Descripción |
|---|---|---|
| Agregación | SUM(), AVERAGE(), COUNT() | Suma, promedio, conteo |
| Filtro | CALCULATE(), FILTER() | Modifican el contexto de cálculo |
| Lógica | IF(), SWITCH() | Condicionales |
| Texto | CONCATENATE(), LEFT() | Manipulación de texto |
| Fecha y hora | YEAR(), MONTH(), DATESYTD() | Análisis temporal |
| Estadística | DISTINCTCOUNT() | Conteo de valores únicos |
Ejemplo:
Ventas2025 = CALCULATE(SUM(Ventas[Importe]), YEAR(Ventas[Fecha]) = 2025)
📅 Ejemplo práctico
Supón que tienes una tabla Ventas con columnas Fecha, Producto, Importe y Cantidad.
- Medida de total de ventas:
TotalVentas = SUM(Ventas[Importe]) - Precio medio de venta:
PrecioMedio = DIVIDE(SUM(Ventas[Importe]), SUM(Ventas[Cantidad])) - Ventas acumuladas en el año:
VentasYTD = TOTALYTD(SUM(Ventas[Importe]), Ventas[Fecha])
🚀 Consejos para principiantes
- Empieza con medidas simples y ve añadiendo complejidad poco a poco.
- Usa la función CALCULATE() para cambiar el contexto de filtro (es la más potente y usada).
- Comprende la diferencia entre contexto de fila y contexto de filtro: es la base del pensamiento DAX.
- Practica creando medidas en Power BI y observando cómo cambian los resultados al aplicar filtros en los visuales.
Perfecto 👍
Aquí tienes un ejemplo completo y didáctico para aprender a usar DAX en Power BI desde cero con un caso práctico de ventas en una tienda.
🏪 Escenario: Ventas de una tienda
Supón que tienes una hoja Excel o CSV con la siguiente tabla llamada Ventas.csv:
| Fecha | Producto | Categoría | Cantidad | PrecioUnitario | Ciudad |
|---|---|---|---|---|---|
| 01/01/2025 | Camiseta | Ropa | 3 | 15 | Burgos |
| 02/01/2025 | Pantalón | Ropa | 2 | 30 | León |
| 02/01/2025 | Zapatillas | Calzado | 1 | 50 | Burgos |
| 03/01/2025 | Camiseta | Ropa | 5 | 15 | Valladolid |
| 04/01/2025 | Botas | Calzado | 2 | 70 | León |
| 04/01/2025 | Zapatillas | Calzado | 3 | 50 | Burgos |
Guárdala como Ventas.csv.
🧩 Paso 1: Cargar los datos en Power BI
- Abre Power BI Desktop.
- En el menú Inicio → Obtener datos → Texto/CSV.
- Selecciona
Ventas.csv→ Cargar.
⚙️ Paso 2: Crear una columna calculada
Queremos calcular el importe total por fila (Cantidad × PrecioUnitario).
Ve a la pestaña Modelado → Nueva columna y escribe:
Importe = Ventas[Cantidad] * Ventas[PrecioUnitario]
Ahora Power BI crea una nueva columna en la tabla con el valor total de cada venta.
📏 Paso 3: Crear medidas DAX básicas
Ve otra vez a Modelado → Nueva medida y crea las siguientes:
1. Total de ventas
TotalVentas = SUM(Ventas[Importe])
➡️ Muestra el importe total vendido.
2. Total de unidades vendidas
UnidadesTotales = SUM(Ventas[Cantidad])
3. Precio medio de venta
PrecioMedio = DIVIDE([TotalVentas], [UnidadesTotales])
DIVIDE()evita errores de división por cero.
📈 Paso 4: Medidas con contexto de tiempo
Queremos ver las ventas acumuladas a lo largo del año (YTD).
VentasAcumuladas = TOTALYTD([TotalVentas], Ventas[Fecha])
Esta medida acumula las ventas desde el inicio del año hasta la fecha seleccionada en el informe.
🔍 Paso 5: Visualizaciones
- Crea una tabla visual y añade:
ProductoCategoría[TotalVentas][PrecioMedio]
- Crea un gráfico de líneas:
- Eje:
Fecha - Valores:
[VentasAcumuladas]
- Eje:
- Crea un gráfico de barras:
- Eje:
Ciudad - Valores:
[TotalVentas]
- Eje:
Ahora puedes filtrar por ciudad, categoría o producto y ver cómo cambian las medidas gracias al contexto de filtro.
🧠 Paso 6: Medida condicional (ejemplo lógico)
Creamos una medida que indique si una ciudad supera los 200 € en ventas:
VentasAltas = IF([TotalVentas] > 200, "Alta", "Baja")
Puedes mostrarla en una tarjeta o en una tabla para ver el nivel de ventas por ciudad.
🧮 Paso 7: Medida avanzada con CALCULATE()
CALCULATE() permite cambiar el contexto del filtro:
VentasRopa = CALCULATE([TotalVentas], Ventas[Categoría] = "Ropa")
Esto muestra el total de ventas solo de la categoría “Ropa”, aunque el informe esté filtrado por otra cosa.
✅ Resultado final
Tendrás un panel con:
- Total de ventas y unidades.
- Precio medio y ventas acumuladas.
- Gráficos por ciudad, producto y tiempo.
- Filtros dinámicos (segmentadores) para analizar fácilmente.
RECUERDA: Los archivos empleados se generan en el formato .pbix de Power BI Además es necesario controlar los “dataset” y las “medidas” generadas automáticamente.