3.2 · Inteligencia de tiempo: acumulados (YTD) y comparación N-1

Nivel 3 · Análisis avanzado

3.2Inteligencia de tiempo: acumulados (YTD) y comparación N-1

Objetivo: Construir el cuarteto de pilotaje (Ventas YTD, Ventas N-1, evolución en valor y en %) y situarlo en una matriz temporal que responde a la dirección de un vistazo.
Tiempo estimado: 22 min · lectura autónoma · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

Lo esencial en 30 segundos

  • La pregunta n.º 1 de toda dirección — «¿cómo vamos frente al año pasado?» — se responde con tres funciones: TOTALYTD (acumulado), SAMEPERIODLASTYEAR (mismo periodo N-1) y DATEADD (desplazamiento genérico).
  • Requisito absoluto: la tabla de fechas marcada — sin ella, estas funciones devuelven resultados falsos, sobre todo el acumulado y la comparación.
  • La evolución se expresa siempre en valor Y en %: ambas medidas van en pareja, y el conjunto forma el cuarteto de pilotaje.

Mini-caso continuo — Zineb responde a la dirección de un vistazo

La dirección de la pyme agroalimentaria de Zineb pregunta cada lunes: «¿cómo vamos respecto al año pasado?». En lugar de recalcular a mano, Zineb aplica la sección: primero comprueba que su tabla de fechas esté bien marcada (requisito absoluto), y luego construye el cuarteto — Ventas YTD = TOTALYTD([Total Ventas], Fechas[Fecha]) para el acumulado desde enero, Ventas N-1 = CALCULATE([Total Ventas], SAMEPERIODLASTYEAR(Fechas[Fecha])) para el mismo periodo un año antes, y después la evolución en valor y en %. Las coloca en una matriz Mes × 4 medidas: la respuesta a la dirección cabe en un solo visual, y el acumulado sube antes de reiniciarse en enero.

Caso autónomo de esta sección: reaparece en el curso, el esquema, el guion y el reto de 48 h de la sección 3.2.

1. Las tres funciones estrella

La inteligencia de tiempo DAX responde a la pregunta n.º 1 de toda dirección con tres funciones: TOTALYTD (el acumulado desde el inicio del año), SAMEPERIODLASTYEAR (el mismo periodo un año antes) y DATEADD (el desplazamiento genérico, más flexible). Nunca calculan «solas»: desplazan un periodo en el tiempo.

2. El requisito no negociable

Requisito absoluto: la tabla de fechas marcada como tabla de fechas. Sin ella, estas funciones mienten — unas ventas N-1 vacías o un acumulado falso vienen casi siempre de ahí. Zineb verifica este ajuste antes de dudar de su fórmula.

3. El cuarteto de pilotaje

Se compone el cuarteto estándar de todo informe de dirección: Ventas YTD, Ventas N-1, evolución en valor y evolución en %. Estas medidas se construyen una vez bien y se copian de plantilla en plantilla. La evolución se expresa siempre en valor Y en %: ambas van en pareja.

Error frecuente de interpretación: «La inteligencia de tiempo es mágica: escribo TOTALYTD y funciona sin preparar nada; la evolución puede quedarse en valor solo, y el N-1 sale bien incluso sin histórico». No, triple error. Sin tabla de fechas marcada, TOTALYTD y SAMEPERIODLASTYEAR mienten — es el requisito absoluto. La evolución se expresa en valor Y en %: el valor solo no dice la magnitud relativa. Y unas ventas N-1 vacías suelen ser normales cuando el histórico no cubre el año anterior — se verifica la tabla, la relación y luego el histórico, en ese orden.
El cuarteto de pilotaje Acumular, comparar, cifrar la diferencia: el cuarteto que responde a «¿cómo vamos?». Ventas YTD TOTALYTD([TotalVentas], Fechas[Fecha])Ventas N-1 SAMEPERIODLASTYEAREvolución Valor yluego % (DIVIDE)
Acumular, comparar, cifrar la diferencia: el cuarteto que responde a «¿cómo vamos?».
Versión en texto del esquema (SEO / lectores de pantalla / traducción): 1) Zineb, controladora de gestión en Argel, responde a la pregunta de la dirección: «¿cómo vamos frente al año pasado?». 2) Verifica el requisito — la tabla de fechas marcada — y luego construye Ventas YTD = TOTALYTD([Total Ventas], Fechas[Fecha]) para el acumulado anual y Ventas N-1 = CALCULATE([Total Ventas], SAMEPERIODLASTYEAR(Fechas[Fecha])) para el mismo periodo un año antes. 3) Completa la evolución en valor ([Total Ventas] - [Ventas N-1]) y en % (DIVIDE de la diferencia entre [Ventas N-1]), y coloca todo en una matriz Mes × 4 medidas. Lección: la inteligencia de tiempo se apoya siempre en la tabla de fechas marcada, y la evolución va en pareja valor + porcentaje.

🔎 Ejemplo concreto — 🔎 Ejemplo concreto — Las medidas temporales

El cuarteto estándar, reutilizable en todos los modelos de Zineb:

Ventas YTD  = TOTALYTD([Total Ventas], Fechas[Fecha])
Ventas N-1  = CALCULATE([Total Ventas], SAMEPERIODLASTYEAR(Fechas[Fecha]))
Evol    = [Total Ventas] - [Ventas N-1]
Evol %  = DIVIDE([Total Ventas] - [Ventas N-1], [Ventas N-1])   // formato %

Lectura: TOTALYTD acumula desde enero y se reinicia a comienzos de año; SAMEPERIODLASTYEAR desplaza el cálculo un año atrás.

Lección: DIVIDE([Total Ventas] - [Ventas N-1], [Ventas N-1]) da la diferencia relativa — la evolución va en pareja valor + %.

Vocabulario de la sección

Inteligencia de tiempo
La familia de funciones DAX que manipulan periodos (acumulados, desplazamientos, comparaciones), todas apoyadas en la tabla de fechas.

Ejemplo sencillo: Zineb recurre a ella para el acumulado anual y la comparación N-1 de la pyme.

Lo que no es: un simple filtro de fechas puesto a mano sobre un visual.

Reflejo: comparar periodos → inteligencia de tiempo.

TOTALYTD
El acumulado anual desde el inicio del año: TOTALYTD([Total Ventas], Fechas[Fecha]).

Ejemplo sencillo: Zineb sigue las ventas acumuladas desde enero para la dirección.

Lo que no es: las ventas del mes solo, sin acumulado.

Reflejo: acumulado anual → TOTALYTD.

SAMEPERIODLASTYEAR
El mismo periodo un año antes: CALCULATE([Total Ventas], SAMEPERIODLASTYEAR(Fechas[Fecha])).

Ejemplo sencillo: Zineb compara el mes actual con el mismo mes del año pasado.

Lo que no es: un periodo cualquiera sin referencia de fecha.

Reflejo: comparación N-1 → SAMEPERIODLASTYEAR.

DATEADD
El desplazamiento genérico: DATEADD(Fechas[Fecha], -1, MONTH) para el mes anterior — más flexible que las funciones dedicadas.

Ejemplo sencillo: Zineb lo usa para un desplazamiento a medida.

Lo que no es: una función fijada a un solo tipo de periodo.

Reflejo: desplazamiento a medida → DATEADD.

Evolución N-1
El dúo final: Evol = [Ventas] - [Ventas N-1] y Evol % = DIVIDE([Ventas] - [Ventas N-1], [Ventas N-1]).

Ejemplo sencillo: Zineb muestra la diferencia en valor y en % lado a lado.

Lo que no es: una evolución en valor solo, sin magnitud relativa.

Reflejo: siempre valor Y porcentaje.

En la práctica — En la práctica — El cuarteto de pilotaje

  1. Cree Ventas YTD = TOTALYTD([Total Ventas], Fechas[Fecha]) y compruebe en una matriz Mes × medidas: el acumulado sube y se reinicia en enero, como en casa de Zineb.
  2. Cree Ventas N-1 = CALCULATE([Total Ventas], SAMEPERIODLASTYEAR(Fechas[Fecha])) (necesita un histórico de dos años — duplique las ventas desplazadas un año en el CSV si hace falta).
  3. Complete Evol % = DIVIDE([Total Ventas] - [Ventas N-1], [Ventas N-1]) en formato %.
  4. Componga la matriz de pilotaje: Mes en filas, las 4 medidas en valores — la respuesta a «¿cómo vamos?» cabe en un visual.
Las medidas temporales estándar de todo cuadro de mando de dirección — reutilizables en todos sus futuros modelos.

Guion paso a paso — el cuarteto de Zineb (10 min)

1) Compruebe que su tabla de fechas esté marcada como tabla de fechas (Herramientas de tabla). 2) Cree Ventas YTD = TOTALYTD([Total Ventas], Fechas[Fecha]). 3) Cree Ventas N-1 = CALCULATE([Total Ventas], SAMEPERIODLASTYEAR(Fechas[Fecha])). 4) Añada Evol = [Total Ventas] - [Ventas N-1] y Evol % = DIVIDE([Total Ventas] - [Ventas N-1], [Ventas N-1]) en %. 5) Coloque Mes en filas y las 4 medidas en valores: lea la respuesta a la dirección de un solo vistazo.

¿Ventas N-1 vacías? Verifique en orden: tabla de fechas marcada, relación activa sobre la columna correcta, histórico que cubra el año anterior.

Plantilla copiar-pegar — el cuarteto temporal

Ventas YTD  = TOTALYTD([Total Ventas], Fechas[Fecha])
Ventas N-1  = CALCULATE([Total Ventas], SAMEPERIODLASTYEAR(Fechas[Fecha]))
Evol    = [Total Ventas] - [Ventas N-1]
Evol %  = DIVIDE([Total Ventas] - [Ventas N-1], [Ventas N-1])   // %

Requisito: tabla de fechas MARCADA. Reflejo: evolución = valor + %.

Acumulado anual

Zineb sigue las ventas acumuladas desde enero (TOTALYTD): la curva sube y se reinicia en cada año nuevo.

Mismo mes N-1

Zineb compara el mes actual con el mismo mes un año antes (SAMEPERIODLASTYEAR) para suavizar la estacionalidad.

Mes anterior

Zineb desplaza un mes con DATEADD para seguir la tendencia de corto plazo.

Ejercicio fiscal desplazado

Cierre en junio: Zineb pasa la fecha de fin de ejercicio a TOTALYTD para respetar el ejercicio fiscal de la pyme.

✓ Buenas prácticas

  • Apoyarse en la tabla de fechas marcada: es el requisito no negociable.
  • Construir estas medidas una vez bien: se copian de plantilla en plantilla.
  • Expresar la evolución en valor Y en % (las dos van en pareja).

✗ Errores frecuentes

  • Olvidar marcar la tabla de fechas (las funciones mienten).
  • Hacer pasar la relación de fecha por la columna equivocada.
  • Esperar unas ventas N-1 sin histórico que cubra el año anterior.

Puntos clave

  • Toda la inteligencia de tiempo se apoya en la tabla de fechas MARCADA: el requisito no era opcional.
  • TOTALYTD, SAMEPERIODLASTYEAR, DATEADD: tres funciones cubren las demandas habituales.
  • La evolución se expresa en valor Y en %: ambas medidas van en pareja.
  • Construya estas medidas una vez bien: se copian de plantilla en plantilla toda su carrera.

Reto de 48 h — aplíquelo mañana

Construya el cuarteto de pilotaje de Zineb sobre sus datos: Ventas YTD, Ventas N-1, evolución en valor y en %. Colóquelo en una matriz Mes × medidas y luego verifique que el acumulado se reinicia bien en enero y que su tabla de fechas está marcada.

Lista de salida de la sección
  • Sé escribir un acumulado anual con TOTALYTD.
  • Sé comparar un periodo con N-1 con SAMEPERIODLASTYEAR.
  • Conozco el requisito: la tabla de fechas marcada.
Autoevaluación 1-5: ¿explico por qué la tabla de fechas debe estar marcada?Autoevaluación 1-5: ¿he compuesto el cuarteto Ventas YTD / N-1 / evolución?

Preguntas frecuentes

Mis ventas N-1 salen vacías o falsas: ¿por qué?

Tres sospechosos, que hay que verificar en este orden (uno de ellos es la causa en el 95 % de los casos): la tabla de fechas no está marcada como tabla de fechas; la relación pasa por la columna de fecha equivocada (o está inactiva); el histórico no cubre el N-1 (las ventas N-1 de enero quedan entonces vacías, lo cual es normal). Empiece siempre por la tabla de fechas marcada.

¿Cómo gestionar un ejercicio fiscal desplazado (cierre en junio)?

TOTALYTD acepta un tercer argumento, la fecha de fin de ejercicio: TOTALYTD([Ventas], Fechas[Fecha], "30/06") acumula desde el 1 de julio. Para necesidades más complejas, se enriquece la tabla de fechas con columnas fiscales (AñoFiscal, MesFiscal) — la belleza de tener su propia tabla de calendario controlada.

Comprueba tu comprensión

¿Qué requisito absoluto hace falta para que funcione la inteligencia de tiempo?

Recursos adicionales (opcional, para ir más allá)

Examen del nivel 3Preguntas inéditas y más difíciles para validar tus conocimientos