SunFruits Exports
POWER BI · INTERMEDIO–AVANZADO
Programa Power BI para SunFruits Exports · Módulo 1 · Día 4

Sesión 4
DAX: fundamentos
& CALCULATE

Medidas, contexto de evaluación y el motor de CALCULATE

Bloque A · Fundamentos de DAX Bloque B · CALCULATE

2 horas · 2 bloques de 45 min · nivel intermedio–avanzado

Mapa de la sesión

🅰 Bloque A — 45 min

Fundamentos de DAX

  • Qué es DAX y anatomía de una fórmula
  • Columna calculada vs medida
  • Contexto de fila y de filtro
  • Medidas implícitas vs explícitas
  • Agregaciones: SUM, AVERAGE, DIVIDE…

🅱 Bloque B — 45 min

CALCULATE

  • CALCULATE: modificar el contexto de filtro
  • FILTER dentro de CALCULATE
  • ALL / REMOVEFILTERS (% del total)
  • Variables VAR / RETURN
  • Catálogo de medidas de SunFruits

Trabajamos sobre el modelo en estrella de la Sesión 3.

Objetivos de aprendizaje

Al terminar la sesión vas a poder…

Escribir

Crear medidas con la sintaxis correcta y distinguirlas de columnas calculadas.

Entender

Razonar el contexto de fila y de filtro: por qué un número sale como sale.

Controlar

Usar CALCULATE para modificar filtros y construir indicadores de negocio.

💡 Idea fuerza de la sesión

DAX no se trata de memorizar funciones, sino de entender el contexto. Si entiendes cómo se filtra y evalúa una medida, el 80% de DAX se vuelve lógico.

De dónde venimos (Sesión 3)

Ya tienes

  • Modelo en estrella: Ventas + dimensiones
  • Relaciones 1:* y tabla Calendario
  • Una medida base: [Monto USD]

Lo que sigue

El modelo está listo para medir. Hoy escribimos los KPI que el negocio necesita.

Un buen modelo hace que el DAX sea simple: vamos a comprobarlo.

Bloque A · 45 min

Fundamentos de DAX

Medidas, columnas y contexto de evaluación

¿Qué es DAX?

Data Analysis Expressions: el lenguaje de fórmulas de Power BI.

Se parece a Excel…

  • Funciones, operadores, fórmulas
  • SUM, AVERAGE, IF

…pero NO es Excel

  • No hay celdas: trabaja sobre tablas y columnas
  • Respeta las relaciones del modelo
  • El resultado depende del contexto del visual

Pensar "en columnas y contexto", no "en celdas", es el cambio de chip clave.

Anatomía de una fórmula DAX

Sintaxis de una medida DAX
Partes de una medida DAX · Microsoft Learn
Total Monto USD = SUM( Ventas[Monto USD (calc)] )
//   nombre          =  función( Tabla[Columna] )

Nombre de la medida, signo igual, función, y referencia Tabla[Columna].

Columna calculada vs Medida

Columna calculadaMedida
Se calculaAl cargar/refrescar (fila por fila)Al vuelo, según el visual
Se guardaSí, ocupa espacio en el modeloNo, solo la fórmula
ContextoDe filaDe filtro
Úsala paraCategorizar, claves, agruparSumar, promediar, KPIs

Regla práctica: si vas a sumar/agregar, casi siempre es una MEDIDA, no una columna.

Columna calculada — cuándo sí

Útil cuando necesitas un valor por fila para filtrar, agrupar o relacionar.

// Rango de precio por línea
Rango Precio =
IF(Ventas[Precio USD x Kg] >= 5, "Alto",
   IF(Ventas[Precio USD x Kg] >= 2, "Medio", "Bajo"))

Recuerda: muchas de estas conviene hacerlas en Power Query (Sesión 1).

Columna calculada en Power BI
Una columna calculada se materializa en la tabla · Microsoft Learn

Medida — tu herramienta principal

Crear una medida en la barra de fórmulas
Nueva medida en la barra de fórmulas · Microsoft Learn

Una medida se recalcula según el contexto de cada celda del visual.

  • Datos → Nueva medida
  • Escríbela una vez, úsala en muchos visuales
  • No pesa en el modelo
Total Cajas = SUM(Ventas[Cajas])

Contexto de fila

El contexto de fila es "la fila actual". Existe en columnas calculadas y en iteradores (SUMX).

  • Una columna calculada se evalúa fila por fila.
  • Ventas[Kg] = Ventas[Cajas] * 8.2 usa la fila actual.
Contexto de fila en una columna calculada
Contexto de fila · Microsoft Learn

Contexto de filtro

El contexto de filtro es el conjunto de filtros activos en cada celda del visual: la fila/columna de la matriz, los slicers, los filtros de página.

  • Una medida "ve" solo las filas que el contexto deja pasar.
  • [Total Monto USD] en una fila "Uva" suma solo Uva.

Misma medida, distinto número según dónde la pongas.

Contexto de filtro en un visual
El contexto cambia el resultado · Microsoft Learn

Medidas implícitas vs explícitas

Implícita

Arrastras un campo numérico y Power BI lo suma solo.

  • Rápido, pero sin control
  • No reutilizable; se rompe fácil

Explícita (recomendada)

Tú la defines con DAX y la nombras.

  • Reutilizable y consistente
  • Base para medidas más complejas

Buenas práctica: crea medidas explícitas y oculta las columnas numéricas del hecho.

Funciones de agregación

El kit básico que resuelve el 70% de los casos.

Total Monto USD  = SUM(Ventas[Monto USD (calc)])
Total Kg         = SUM(Ventas[Kg Netos])
N Pedidos        = DISTINCTCOUNT(Ventas[N Orden])
Precio Prom USD/Kg = DIVIDE([Total Monto USD], [Total Kg])
Cajas Promedio   = AVERAGE(Ventas[Cajas])

Usa DIVIDE en lugar de /: maneja la división entre cero sin error.

Bloque B · 45 min

CALCULATE

La función más poderosa de DAX

CALCULATE — el corazón de DAX

Evalúa una expresión modificando el contexto de filtro.

CALCULATE( <expresión> , <filtro1> , <filtro2> , … )

// Monto solo de Estados Unidos
Monto USA =
CALCULATE( [Total Monto USD], Clientes[Pais] = "Estados Unidos" )

CALCULATE toma [Total Monto USD] y le aplica/cambia filtros antes de evaluarlo. Es la base de casi todo el DAX avanzado.

CALCULATE: agregar y cambiar filtros

// Filtra por producto
Monto Uva = CALCULATE([Total Monto USD], Productos[Producto] = "Uva")

// Varios valores
Monto Berries+Uva =
CALCULATE([Total Monto USD],
    Productos[Producto] IN {"Uva", "Arandanos"})

// Combinando condiciones
Monto Uva Premium =
CALCULATE([Total Monto USD],
    Productos[Producto] = "Uva",
    Ventas[Precio USD x Kg] >= 4)

FILTER dentro de CALCULATE

Cuando el filtro es una condición compleja o sobre una medida, usa FILTER sobre la tabla.

  • Devuelve una tabla filtrada fila por fila.
  • Más flexible, pero más costoso: úsalo cuando haga falta.
Monto Pedidos Grandes =
CALCULATE(
    [Total Monto USD],
    FILTER(
        Ventas,
        Ventas[Cajas] > 1500
    )
)

ALL / REMOVEFILTERS — % del total

Quitar el contexto de filtro permite calcular totales y participaciones.

// Monto total ignorando filtros de producto
Monto Total Productos =
CALCULATE([Total Monto USD], ALL(Productos))

// % de participación de cada producto
% Participación =
DIVIDE(
    [Total Monto USD],
    CALCULATE([Total Monto USD], REMOVEFILTERS(Productos))
)

ALL y REMOVEFILTERS hacen lo mismo aquí: borran filtros para tener el "denominador".

Variables: VAR / RETURN

Las variables hacen el DAX legible y eficiente (se evalúan una sola vez).

  • Calcula una vez, reutiliza varias.
  • Facilitan depurar fórmulas largas.
Margen % =
VAR Monto = [Total Monto USD]
VAR Meta  = SUM(Metas[Meta Monto USD])
RETURN
    DIVIDE(Monto - Meta, Meta)

Caso SunFruits: catálogo de medidas base

Total Monto USD   = SUM(Ventas[Monto USD (calc)])
Total Cajas       = SUM(Ventas[Cajas])
Total Kg          = SUM(Ventas[Kg Netos])
N Pedidos         = DISTINCTCOUNT(Ventas[N Orden])
Precio Prom USD/Kg = DIVIDE([Total Monto USD], [Total Kg])
Ticket Promedio   = DIVIDE([Total Monto USD], [N Pedidos])
% Part. Producto  =
    DIVIDE([Total Monto USD],
        CALCULATE([Total Monto USD], REMOVEFILTERS(Productos)))

Con estas 7 medidas ya armas un dashboard de ventas completo.

Errores comunes y buenas prácticas

Evita

  • Columnas calculadas para sumar (usa medidas)
  • Dividir con / (usa DIVIDE)
  • Medidas implícitas en producción
  • Fórmulas gigantes sin variables

Haz

  • Medidas base y compón sobre ellas
  • Nombra claro y agrupa en una tabla de medidas
  • Usa VAR para legibilidad
  • Piensa siempre en el contexto de filtro

🛠 Taller de la sesión

Parte 1 — Medidas base

  • Crea Total Monto USD, Total Cajas, Total Kg, N Pedidos.
  • Precio Prom USD/Kg y Ticket Promedio con DIVIDE.
  • Arma una matriz: Producto × Total Monto USD.

Parte 2 — CALCULATE

  • Monto USA y Monto Uva con CALCULATE.
  • % Participación por producto con REMOVEFILTERS.
  • Monto Pedidos Grandes (>1500 cajas) con FILTER.

Resumen — puntos importantes

🅰 Fundamentos

  • DAX trabaja sobre tablas y contexto, no celdas
  • Medida (al vuelo) vs columna calculada (se guarda)
  • Contexto de fila vs contexto de filtro
  • Prefiere medidas explícitas; usa DIVIDE

🅱 CALCULATE

  • Modifica el contexto de filtro de una expresión
  • FILTER para condiciones complejas
  • ALL/REMOVEFILTERS para % del total
  • VAR/RETURN para claridad

🎯 Si te llevas una sola idea: entiende el contexto de filtro y domina CALCULATE; lo demás es vocabulario.

Preguntas de repaso

Verifiquemos lo aprendido en esta sesión

1

¿Cuándo usas una columna calculada y cuándo una medida?

2

¿Qué diferencia hay entre contexto de fila y contexto de filtro?

3

¿Qué hace exactamente CALCULATE con el contexto de filtro?

4

¿Por qué conviene DIVIDE en vez del operador /?

5

¿Cómo calcularías el % de participación de un producto sobre el total?

Sun Fruits Exports · Programa Power BI

¡Gracias!

Gracias al equipo de SunFruits por su tiempo y participación

Edwin Barrientos Retuerto

Arquitecto de Inteligencia de Negocios & Cloud · Instructor

🌐 blog.arquitecturabi.pe

Nos vemos en la Sesión 5 — DirectQuery, modelos compuestos y optimización en origen

1 / 26