Lección 16 de 36DAX Esencial

Qué es DAX y por qué importa

Introducción a Data Analysis Expressions.

15 minutos

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:

  1. Contexto de filtro: Las fórmulas saben qué filtros están activos
  2. Relaciones: Navega automáticamente entre tablas relacionadas
  3. Time Intelligence: Funciones especializadas para análisis temporal
  4. 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 No
Cambia con filtros No
Se puede usar en slicer No
Se puede usar en relaciones 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:

  1. Nombre: Descriptivo, sin caracteres especiales (espacios permitidos)
  2. Signo igual: Separa nombre de fórmula
  3. Función: La operación a realizar
  4. 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:

  1. Selecciónala en el panel de campos
  2. 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

  1. Contexto de filtro: Los filtros activos (slicers, filtros visuales, filtros de página)
  2. 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 + Enter para 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

  1. ¿Qué significa DAX y cuál es su función principal en Power BI?

  2. ¿Cuál es la diferencia principal entre una medida y una columna calculada?

  3. ¿Por qué es mejor usar DIVIDE(a, b, 0) en lugar de a / b?

  4. Si creas la medida Total = SUM(Ventas[Monto]) y la colocas en un gráfico por país, ¿qué mostrará?

  5. ¿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.