Qué es DAX y por qué importa
Introducción a Data Analysis Expressions.
Bienvenido al módulo de DAX Esencial. Si Power Query transforma tus datos y las visualizaciones los presentan, DAX es el motor de cálculo que hace que Power BI sea verdaderamente poderoso. En esta lección entenderás qué es DAX, cuándo usarlo y cómo empezar a escribir tus primeras fórmulas.
¿Qué es DAX?
DAX significa Data Analysis Expressions (Expresiones de Análisis de Datos). Es el lenguaje de fórmulas de Power BI que te permite crear:
- Medidas: Cálculos dinámicos que responden a filtros
- Columnas calculadas: Nuevas columnas basadas en otras existentes
- Tablas calculadas: Tablas generadas mediante fórmulas
Un lenguaje familiar pero poderoso
Si vienes de Excel, DAX te parecerá familiar:
| Excel | DAX |
|---|---|
=SUMA(A1:A100) |
SUM(Ventas[Monto]) |
=PROMEDIO(B:B) |
AVERAGE(Ventas[Monto]) |
=CONTAR(C:C) |
COUNT(Ventas[Monto]) |
=SI(A1>100,"Alto","Bajo") |
IF(Ventas[Monto]>100,"Alto","Bajo") |
La sintaxis es similar, pero DAX tiene superpoderes que Excel no tiene:
- Contexto de filtro: Las fórmulas saben qué filtros están activos
- Relaciones: Navega automáticamente entre tablas relacionadas
- Time Intelligence: Funciones especializadas para análisis temporal
- Iteradores: Procesa fila por fila para cálculos complejos
¿Por qué DAX es importante?
Sin DAX
- Solo puedes mostrar datos existentes
- Cálculos simples con agregaciones básicas
- Sin comparativos ni métricas avanzadas
Con DAX
- Métricas de negocio reales: Margen, crecimiento, participación de mercado
- Comparativos temporales: vs año anterior, vs presupuesto
- KPIs dinámicos: Que cambian según el contexto seleccionado
- Análisis what-if: Escenarios y simulaciones
Realidad del mercado: Las vacantes que requieren Power BI con DAX intermedio/avanzado pagan 30-50% más que las de nivel básico.
Medidas vs Columnas calculadas
Esta es la decisión más importante que tomarás en DAX. Elegir mal puede hacer tu modelo lento e ineficiente.
Columnas calculadas
Una columna calculada:
- Se calcula una vez al refrescar los datos
- Se almacena físicamente en el modelo
- Consume memoria
- Se calcula fila por fila
// Columna calculada: Margen por fila
Margen = Ventas[Precio] - Ventas[Costo]
Úsalas cuando necesites:
- Filtrar o segmentar por el valor (en slicers)
- El valor es específico de cada fila
- Relaciones basadas en el valor calculado
Medidas
Una medida:
- Se calcula en tiempo real según el contexto
- No consume memoria de almacenamiento
- Es dinámica: cambia con los filtros
- Se calcula sobre agregaciones
// Medida: Total de ventas (dinámica)
Total Ventas = SUM(Ventas[Monto])
Úsalas cuando necesites:
- Agregaciones (suma, promedio, conteo)
- Valores que cambian según filtros
- La mayoría de tus KPIs y métricas
Tabla comparativa
| Característica | Columna calculada | Medida |
|---|---|---|
| Se almacena en memoria | Sí | No |
| Cambia con filtros | No | Sí |
| Se puede usar en slicer | Sí | No |
| Se puede usar en relaciones | Sí | No |
| Rendimiento con muchas filas | Malo | Bueno |
| Caso de uso típico | Categorizar filas | KPIs y métricas |
Regla de oro: Cuando tengas duda, usa una medida. Las medidas son más flexibles y eficientes en la mayoría de los casos.
Sintaxis básica de DAX
Estructura de una fórmula
Nombre de la Medida = FUNCION(Tabla[Columna])
Componentes:
- Nombre: Descriptivo, sin caracteres especiales (espacios permitidos)
- Signo igual: Separa nombre de fórmula
- Función: La operación a realizar
- Referencia:
Tabla[Columna]indica de dónde tomar los datos
Reglas de sintaxis
// Correcto: referencia completa
Total Ventas = SUM(Ventas[Monto])
// Incorrecto: falta el nombre de la tabla
Total Ventas = SUM([Monto]) // Funciona pero es mala práctica
// Correcto: espacios en nombres
Total de Ventas Netas = SUM(Ventas[Monto Neto])
// Texto entre comillas dobles
Saludo = "Hola Mundo"
// Números sin comillas
Constante = 100
Operadores en DAX
| Operador | Significado | Ejemplo |
|---|---|---|
+ |
Suma | [Precio] + [Impuesto] |
- |
Resta | [Precio] - [Descuento] |
* |
Multiplicación | [Cantidad] * [Precio] |
/ |
División | [Total] / [Cantidad] |
^ |
Potencia | [Base] ^ 2 |
& |
Concatenar texto | [Nombre] & " " & [Apellido] |
= |
Igual a | [País] = "México" |
<> |
Diferente de | [Estado] <> "Cancelado" |
>, <, >=, <= |
Comparación | [Monto] >= 1000 |
&& |
Y lógico | [Monto] > 100 && [País] = "México" |
| ` | ` |
Tu primera medida en Power BI
Vamos a crear una medida paso a paso:
Paso 1: Ir a la vista de Modelo o Datos
En Power BI Desktop, puedes crear medidas desde:
- La pestaña Modelado > Nueva medida
- Clic derecho en una tabla > Nueva medida
Paso 2: Escribir la fórmula
Total Ventas = SUM(Ventas[Monto])
Paso 3: Formatear la medida
Después de crear la medida:
- Selecciónala en el panel de campos
- En la pestaña Herramientas de medida:
- Formato: Moneda
- Decimales: 2
- Símbolo: $ (o tu moneda local)
Paso 4: Usar en una visualización
Arrastra la medida a:
- Una tarjeta para ver el total
- Un gráfico de barras con categorías
- Una tabla junto a otras métricas
Contexto de evaluación: La clave de DAX
El concepto más importante de DAX es el contexto. Una medida devuelve diferentes valores dependiendo de dónde la uses.
Ejemplo práctico
Imagina esta medida:
Total Ventas = SUM(Ventas[Monto])
| Donde la uses | Resultado |
|---|---|
| Tarjeta sola | Total de todas las ventas |
| Gráfico por país | Total por cada país |
| Gráfico por país, filtrado "2024" | Total por país solo de 2024 |
| Celda en matriz País x Producto | Total del cruce específico |
La misma fórmula produce diferentes resultados según el contexto. Esto es lo que hace a DAX tan poderoso.
Tipos de contexto
- Contexto de filtro: Los filtros activos (slicers, filtros visuales, filtros de página)
- Contexto de fila: La fila actual (en columnas calculadas)
// Esta medida responde al contexto de filtro
Total Ventas = SUM(Ventas[Monto])
// Esta columna calculada tiene contexto de fila
Margen = Ventas[Precio] - Ventas[Costo]
// Se calcula para CADA fila de la tabla Ventas
Errores comunes de principiantes
Error 1: Dividir por cero
// Problema: Si no hay ventas, explota
Margen % = SUM(Ventas[Margen]) / SUM(Ventas[Monto])
// Solución: Usar DIVIDE
Margen % = DIVIDE(SUM(Ventas[Margen]), SUM(Ventas[Monto]), 0)
La función DIVIDE tiene un tercer parámetro para el valor cuando el divisor es cero.
Error 2: No especificar la tabla
// Mala práctica
Total = SUM([Monto])
// Buena práctica
Total = SUM(Ventas[Monto])
Siempre incluye el nombre de la tabla. Evita ambigüedades y errores futuros.
Error 3: Usar columna calculada donde debería ser medida
// Incorrecto como columna calculada (consume memoria innecesaria)
// Columna: % del Total = Ventas[Monto] / SUMA(Ventas[Monto])
// Correcto como medida (dinámico y eficiente)
% del Total = DIVIDE(SUM(Ventas[Monto]), CALCULATE(SUM(Ventas[Monto]), ALL(Ventas)))
Error 4: Olvidar formatear las medidas
Una medida sin formato muestra valores crudos que confunden a los usuarios. Siempre formatea:
- Monedas con símbolo y decimales apropiados
- Porcentajes con símbolo %
- Números grandes con separador de miles
Dónde escribir código DAX
Power BI ofrece varios lugares para escribir DAX:
| Ubicación | Uso |
|---|---|
| Barra de fórmulas | Medidas y columnas simples |
| Vista de tabla | Columnas calculadas |
| Editor de consultas DAX | Tablas calculadas |
| Herramientas externas (DAX Studio) | Depuración y optimización |
Tip: Para fórmulas largas, presiona
Shift + Enterpara agregar líneas sin ejecutar la fórmula.
Recursos para practicar DAX
Funciones que aprenderás en este módulo
| Lección | Funciones |
|---|---|
| Lección 2 | SUM, AVERAGE, COUNT, DISTINCTCOUNT, MIN, MAX |
| Lección 3 | CALCULATE, ALL, FILTER, REMOVEFILTERS |
| Lección 4 | TOTALYTD, TOTALMTD, SAMEPERIODLASTYEAR, DATEADD |
Referencia rápida de funciones básicas
// Agregaciones básicas
SUM(Tabla[Columna]) // Suma
AVERAGE(Tabla[Columna]) // Promedio
COUNT(Tabla[Columna]) // Cuenta (incluye blancos)
COUNTA(Tabla[Columna]) // Cuenta (excluye blancos)
DISTINCTCOUNT(Tabla[Columna]) // Cuenta valores únicos
MIN(Tabla[Columna]) // Mínimo
MAX(Tabla[Columna]) // Máximo
// Lógicas
IF(condición, valor_verdadero, valor_falso)
SWITCH(expresión, valor1, resultado1, valor2, resultado2, default)
// Texto
CONCATENATE(texto1, texto2)
LEFT(texto, caracteres)
RIGHT(texto, caracteres)
FORMAT(valor, "formato")
Puntos clave de esta lección
- DAX es el lenguaje de fórmulas de Power BI para cálculos avanzados
- Medidas son dinámicas y eficientes; úsalas para KPIs
- Columnas calculadas son estáticas; úsalas para filtrar y segmentar
- El contexto determina qué valores devuelve una medida
- Siempre usa
DIVIDE()en lugar de/para evitar errores - Siempre especifica la tabla:
Tabla[Columna] - Formatea tus medidas para mejor legibilidad
Próxima lección
En la siguiente lección, pondremos manos a la obra con las funciones de agregación más usadas: SUM, AVERAGE, COUNT y DISTINCTCOUNT. Crearás medidas prácticas con datos de ventas reales.
Quiz de comprensión
¿Qué significa DAX y cuál es su función principal en Power BI?
¿Cuál es la diferencia principal entre una medida y una columna calculada?
¿Por qué es mejor usar
DIVIDE(a, b, 0)en lugar dea / b?Si creas la medida
Total = SUM(Ventas[Monto])y la colocas en un gráfico por país, ¿qué mostrará?¿Cuándo deberías usar una columna calculada en lugar de una medida?
Checkpoint de comprensión
3 preguntas para verificar lo aprendido. No afecta tu nota del examen final.
Completaste esta leccion?
Marca esta leccion como completada. Tu progreso se guardara en tu navegador.