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?
Completaste esta leccion?
Marca esta leccion como completada. Tu progreso se guardara en tu navegador.