Qué es DAX en Power BI: Guía práctica para principiantes (con ejemplos)

· 12 min de lectura
Compartir:

Qué es DAX en Power BI: Guía práctica para principiantes (con ejemplos)

TL;DR: DAX (Data Analysis Expressions) es el lenguaje de fórmulas de Power BI para crear cálculos y métricas. Si vienes de Excel, te resultará familiar pero con superpoderes. Este post te enseña lo esencial: qué es, para qué sirve, las 5 funciones que necesitas dominar, y los errores que todos cometemos al empezar.


Qué es DAX (y qué significa)

DAX significa Data Analysis Expressions. Es el lenguaje de fórmulas que usa Power BI para hacer cálculos sobre tus datos.

Si has usado Excel, ya conoces la idea: escribes una fórmula como =SUMA(A1:A10) y obtienes un resultado. DAX funciona igual, pero diseñado para trabajar con modelos de datos relacionales y millones de filas.

Dónde se usa DAX:

  • Power BI (Desktop y Service)
  • Power Pivot (el complemento de Excel)
  • SQL Server Analysis Services (SSAS) Tabular
  • Azure Analysis Services

En este post nos centramos en Power BI, pero lo que aprendas aplica a todos.

Un ejemplo para empezar

En Excel escribirías:

=SUMA(Ventas[Importe])

En DAX escribes:

Total Ventas = SUM(Ventas[Importe])

Parecido, ¿verdad? La diferencia está en lo que pasa debajo: DAX entiende relaciones entre tablas, responde a filtros dinámicamente, y escala a millones de registros.


DAX vs Power Query: La confusion mas comun

Esto confunde a todo el mundo al principio. Power BI tiene dos lenguajes (si quieres profundizar en el otro, lee mi guia completa de Power Query):

Power Query (M)DAX
Para queTransformar y limpiar datosCalcular metricas y KPIs
Cuando se ejecutaAl cargar/refrescar datosAl visualizar el informe
Donde lo usasEditor de Power QueryMedidas y columnas calculadas
Analogía ExcelPower Query de ExcelFórmulas en celdas

La regla simple

  • Power Query: Todo lo que haces ANTES de que los datos lleguen al modelo

    • Limpiar nombres de columnas
    • Filtrar filas innecesarias
    • Combinar tablas (merge/append)
    • Cambiar tipos de datos
  • DAX: Todo lo que calculas DESPUÉS de que los datos están en el modelo

    • Totales, promedios, conteos
    • Comparaciones (vs año anterior, vs presupuesto)
    • Porcentajes y ratios
    • KPIs de negocio

Ejemplo práctico:

  • Tienes una columna “Fecha” en formato texto → Power Query para convertirla a fecha
  • Quieres calcular ventas del mes anterior → DAX para crear la medida

Medidas vs Columnas calculadas: Cuándo usar cada una

En DAX puedes crear dos tipos de cálculos:

Medidas (Measures)

  • Se calculan dinámicamente según el contexto de filtro
  • No ocupan espacio en memoria (se calculan al vuelo)
  • Cambian según los filtros del informe
Total Ventas = SUM(Ventas[Importe])

Columnas calculadas (Calculated Columns)

  • Se calculan una vez al refrescar datos
  • Añaden una columna física a la tabla
  • El valor es fijo por cada fila
Margen = Ventas[Importe] - Ventas[Coste]

La regla de oro

Usa medidas siempre que puedas. Las columnas calculadas solo cuando:

  • Necesitas el valor para filtrar o segmentar (slicers)
  • El cálculo depende de valores de la misma fila
  • Necesitas usar el resultado en una relación

¿Por qué? Las medidas:


Las 5 funciones DAX que necesitas dominar

No necesitas conocer las 200+ funciones de DAX. Con estas 5 categorías cubres el 80% de los casos:

1. Agregaciones: SUM, AVERAGE, COUNT

Las más básicas. Suman, promedian o cuentan valores.

Total Ventas = SUM(Ventas[Importe])

Precio Medio = AVERAGE(Productos[Precio])

Número de Pedidos = COUNT(Ventas[PedidoID])

Clientes Únicos = DISTINCTCOUNT(Ventas[ClienteID])

Tip: DISTINCTCOUNT cuenta valores únicos, muy útil para contar clientes, productos, etc.

2. CALCULATE: El rey de DAX

La función más importante. Permite modificar el contexto de filtro de un cálculo.

// Ventas totales (sin filtro de categoría)
Ventas Todas Categorías =
CALCULATE(
    SUM(Ventas[Importe]),
    ALL(Productos[Categoría])
)

// Ventas solo de 2025
Ventas 2025 =
CALCULATE(
    SUM(Ventas[Importe]),
    Calendario[Año] = 2025
)

¿Qué hace CALCULATE?

  1. Toma una expresión (ej: SUM(Ventas[Importe]))
  2. Modifica los filtros activos según los argumentos
  3. Evalúa la expresión con los nuevos filtros

Es confuso al principio. Volveremos a esto con ejemplos más adelante.

3. FILTER y ALL: Control del contexto

ALL elimina filtros:

// Porcentaje del total (ignora filtros de la visual)
% del Total =
DIVIDE(
    SUM(Ventas[Importe]),
    CALCULATE(SUM(Ventas[Importe]), ALL(Ventas))
)

FILTER aplica condiciones personalizadas:

// Ventas de productos premium (precio > 100)
Ventas Premium =
CALCULATE(
    SUM(Ventas[Importe]),
    FILTER(Productos, Productos[Precio] > 100)
)

4. IF y SWITCH: Condicionales

IF para condiciones simples:

Estado =
IF(
    Ventas[Importe] > 1000,
    "Grande",
    "Pequeño"
)

SWITCH para múltiples condiciones (más limpio que IF anidados):

Segmento =
SWITCH(
    TRUE(),
    Ventas[Importe] > 10000, "Enterprise",
    Ventas[Importe] > 1000, "Medium",
    Ventas[Importe] > 100, "Small",
    "Micro"
)

Tip: SWITCH(TRUE(), ...) es el patrón más útil. Evalúa condiciones en orden y devuelve el primer TRUE.

Cuando necesitas datos de una tabla relacionada:

RELATED (de muchos a uno):

// En tabla Ventas, obtener la categoría del producto
Categoría = RELATED(Productos[Categoría])

RELATEDTABLE (de uno a muchos):

// En tabla Clientes, contar sus pedidos
Pedidos del Cliente = COUNTROWS(RELATEDTABLE(Ventas))

Tu primera medida DAX: 3 ejemplos prácticos

Vamos a crear las medidas más comunes paso a paso.

Ejemplo 1: Total Ventas

Total Ventas = SUM(Ventas[Importe])

Simple. Suma todos los importes. Si hay un filtro de fecha en el informe, solo suma ese periodo.

Ejemplo 2: Ventas del año anterior

Ventas Año Anterior =
CALCULATE(
    [Total Ventas],
    SAMEPERIODLASTYEAR(Calendario[Fecha])
)

Qué hace:

  1. Toma la medida [Total Ventas]
  2. Cambia el filtro de fecha al mismo periodo del año anterior
  3. Calcula

Requisito: Necesitas una tabla de calendario marcada como “Date table” en Power BI.

Ejemplo 3: Porcentaje del total

% del Total =
DIVIDE(
    [Total Ventas],
    CALCULATE([Total Ventas], ALL(Ventas)),
    0
)

Qué hace:

  1. Divide las ventas filtradas entre las ventas totales
  2. ALL(Ventas) elimina todos los filtros de la tabla Ventas
  3. El tercer argumento (0) es el valor si hay división por cero

¿Por qué DIVIDE y no ”/”?

// ❌ Esto da error si el denominador es 0
Ratio = [Ventas] / [Objetivo]

// ✅ Esto devuelve 0 (o lo que especifiques) si hay división por cero
Ratio = DIVIDE([Ventas], [Objetivo], 0)

Errores comunes de principiante (y cómo evitarlos)

Estos son los errores que todos cometemos al empezar:

Error 1: Usar columnas calculadas para todo

❌ Mal:

// Columna calculada en tabla Ventas
Total Acumulado =
CALCULATE(
    SUM(Ventas[Importe]),
    FILTER(ALL(Ventas), Ventas[Fecha] <= EARLIER(Ventas[Fecha]))
)

✅ Bien: Usar una medida

Total Acumulado =
CALCULATE(
    [Total Ventas],
    FILTER(
        ALL(Calendario),
        Calendario[Fecha] <= MAX(Calendario[Fecha])
    )
)

Las columnas calculadas se evalúan fila por fila al cargar datos. Lentas y consumen memoria.

Error 2: No entender el contexto de filtro

El contexto de filtro es todo en DAX. Es lo que determina qué filas se incluyen en el cálculo. De hecho, el 80% de los problemas de debugging en Power BI son filtros olvidados.

Total Ventas = SUM(Ventas[Importe])

Esta medida devuelve valores diferentes según:

  • El año seleccionado en un slicer
  • La categoría de producto en el eje de un gráfico
  • Los filtros de página o informe

El error: Asumir que una medida siempre devuelve el mismo valor.

Error 3: Dividir sin DIVIDE()

// ❌ Error en runtime si Objetivo = 0
Cumplimiento = [Ventas] / [Objetivo]

// ✅ Seguro
Cumplimiento = DIVIDE([Ventas], [Objetivo], 0)

Error 4: Ignorar las relaciones del modelo

DAX funciona sobre un modelo relacional. Si tus tablas no están bien relacionadas, las medidas no funcionarán como esperas. Un problema común es que Power BI desactiva relaciones sin avisarte.

Checklist:

  • ¿Hay una relación entre Ventas y Productos?
  • ¿La relación es del lado correcto (1 a muchos)?
  • ¿Está activa?

Error 5: Complicar cuando no hace falta

❌ Overcomplicated:

Total =
CALCULATE(
    SUMX(
        FILTER(Ventas, Ventas[Importe] > 0),
        Ventas[Importe]
    )
)

✅ Simple:

Total = SUM(Ventas[Importe])

Empieza simple. Añade complejidad solo cuando sea necesario.


DAX y Copilot: El atajo de 2026

Si tienes acceso a Power BI Copilot, puedes generar DAX con lenguaje natural:

Prompt: "Crea una medida que calcule las ventas del mismo periodo del año anterior"

Copilot genera:

Ventas Año Anterior =
CALCULATE(
    SUM(Ventas[Importe]),
    SAMEPERIODLASTYEAR(Calendario[Fecha])
)

Mi consejo: Usa Copilot para acelerar, pero entiende lo que genera. Si no entiendes el código, no podrás depurarlo cuando falle.

Copilot es especialmente útil para:

  • Explicar DAX existente (“¿qué hace esta medida?”)
  • Generar el primer borrador de medidas complejas
  • Aprender patrones nuevos

Pero tiene limitaciones: a veces genera código incorrecto, especialmente con variables y contextos complejos. Siempre revisa.


Recursos para seguir aprendiendo

Gratuitos

DAX.do Playground online para probar DAX sin instalar nada. Perfecto para experimentar.

DAX Guide Referencia completa de todas las funciones DAX con ejemplos. Por SQLBI.

SQLBI Marco Russo y Alberto Ferrari son LA referencia en DAX. Sus artículos son oro.

Libros

“The Definitive Guide to DAX” (Marco Russo, Alberto Ferrari) El libro. 700+ páginas. No es para principiantes totales, pero es la biblia cuando quieras profundizar.

Canales YouTube

  • SQLBI - Vídeos técnicos de los autores del libro
  • Guy in a Cube - Más accesible, buenos tutoriales
  • Curbal - Ruth Pozuelo, excelente contenido en español e inglés

Cheat Sheet

Las funciones que más usarás:

FunciónPara qué
SUMSumar valores
AVERAGEPromedio
COUNT / COUNTAContar filas
DISTINCTCOUNTContar valores únicos
CALCULATEModificar contexto de filtro
FILTERFiltrar tablas
ALLEliminar filtros
IFCondicional simple
SWITCHCondicional múltiple
DIVIDEDivisión segura
RELATEDObtener valor de tabla relacionada
DATEADDDesplazar fechas
SAMEPERIODLASTYEARMismo periodo año anterior
TOTALYTDAcumulado año
FORMATFormatear valores

Conclusión: Por dónde empezar

Si estás empezando con DAX:

  1. Entiende la diferencia entre DAX y Power Query
  2. Usa medidas, no columnas calculadas (salvo excepciones)
  3. Domina CALCULATE - es el 50% de DAX
  4. Practica con ejemplos reales de tu trabajo
  5. Usa DIVIDE() siempre para divisiones

DAX tiene curva de aprendizaje, especialmente el contexto de filtro. Pero una vez que “haces clic”, se convierte en una herramienta increíblemente potente.

Mi recomendación: no intentes aprenderlo todo de golpe. Empieza con SUM, AVERAGE, COUNT. Luego añade CALCULATE. Después explora time intelligence con patrones como rolling 12 meses. Paso a paso.

Y recuerda: por muy perfecto que sea tu DAX, si nadie mira tu dashboard, algo falla en el proceso.

¿Te ha sido útil? Compártelo

Compartir:

También te puede interesar