
Microsoft Power BI tiene una función de inteligencia de tiempo incorporada, MISMO PERIODO AÑOpara devolver una tabla que contiene una columna de fechas desplazadas un año atrás en el tiempo desde las fechas en el especificado fechas columna, en el contexto actual. Pero esta función tiene algunas limitaciones y no devuelve el intervalo de fechas exacto en algunos escenarios.
En esta publicación, discutiremos la limitación y encontraremos la solución para que esta función de inteligencia de tiempo pueda devolver el rango de fechas con precisión para calcular las métricas de rendimiento.
Entendamos primero la función MISMOPERIODLASTIAÑO.
MISMO PERIODO AÑO
Esta función devuelve exactamente lo que dice su nombre, mismo Período pero del año pasado. Devuelve una tabla de una columna que contiene fechas desplazadas un año atrás en el tiempo desde las fechas en el contexto actual.
Sintaxis:
MISMO PERIODO ULTIMO AÑO (
Parámetros
fechas: una columna que contiene fechas.
El argumento de fechas en SAMEPERIODLASTYEAR puede ser cualquiera de los siguientes:
- Una referencia a una columna de fecha/hora de la tabla Fecha,
- Una expresión de tabla en DAX que devuelve una sola columna de valores de fecha/hora,
- Una expresión booleana de DAX que define una tabla de una sola columna de valores de fecha/hora.
Valor de retorno
Una tabla de una sola columna de valores de fecha del mismo período pero del año pasado.
Nota: La tabla de valores de fecha de una sola columna es la misma que las fechas devueltas por esta fórmula equivalente: DATEADD (dates, -1, year)
¿Qué es el mismo período del año pasado?
Entendamos el mismo PERÍODO del año pasado con un ejemplo. Nos ayudará a identificar las limitaciones de la función SAMEPERIODLASTYEAR.
Supongamos que tenemos una tabla de ventas con datos a partir de 1 de enero de 2021 a 15 ago 2022 y tener una mesa de calendario separada con Fecha, Mesy Año columnas que cumplen todos los criterios de la tabla de fechas en Power BI/Power Pivot. Además, ambas tablas están en relaciones de uno a muchos.

Filtrar escenarios y salida:
- Si aplicamos un filtro en el nivel de día y seleccione 12 agosto 2022 después, MISMO PERIODULTIMO AÑO volvería el mismo día del año pasado, es decir, 12 agosto 2021 como fecha de salida. Si nuestra selección es un rango de fechas, desde 5 agosto 2022 a 12 agosto 2022 entonces, esta función devolverá el rango de fechas desde 5 agosto 2021 a 12 agosto 2021.
- Si estamos rebanando o rebanando los datos en el nivel de mes y seleccionando agosto 2022 en el filtro de mes entonces, esta función devolvería el mismo mes del año pasado con un rango de fechas completo para agosto, es decir, 1 de agosto de 2021 a 31 agosto 2021. El mismo comportamiento se aplicará también al filtro Trimestre.
- Si el filtro se ha aplicado en Año con 2022 en el filtro Año sin tener ningún filtro adicional en Mes y Día entonces, esta función devolvería el mismo período del último año al mes intervalo de fechas, es decir, 1 enero 2021 a 31 agosto 2021.
Nota: Si el filtro de varias columnas se aplica a la tabla de fechas, la secuencia lógica del filtro sería 1. Fecha, 2. Mes, 3. Trimestre y 4. Año según la disponibilidad del filtro.
Aquí, si notas que tanto en el Mes y Año filtrar escenarios, el MISMO PERIODO AÑO La función devuelve la fecha completa de los meses disponibles independientemente del intervalo de fechas parcial disponible en los datos.
Este comportamiento siempre crea confusión para los usuarios, ya que cada vez que aplicamos un filtro en un Mes, entonces esperamos que el MISMO PERIODO AÑO la función devolverá el mismo período MTD del año pasado no los datos del mes completo si el mes actual seleccionado tiene un intervalo de fechas parcial.
En el escenario anterior, tenemos datos hasta 15 ago 2022 por agosto 2022pero MISMO PERIODO AÑO devolverá la fecha completa de agosto 2021 es decir, 1 de agosto de 2022 a 31 agosto 2022.
El mismo problema es aplicable para Año así como tampoco devuelve el mismo período del último año al rango de fechas, pero devuelve el último año al rango de fechas del mes.
¿Por qué SAMEPERIODLASTYEAR se comporta así?
MISMO PERIODO AÑO no entiende el filtro cruzado aplicado en la columna Fecha a través del filtro de columnas Mes y Año o cualquier otro modelo de datos de columna. Esta función entiende la filtro directo en la columna Fecha e ignora el Filtro cruzado proveniente de otra columna de la tabla Calendario. Por este motivo, no considera el rango de fechas parciales de un mes y toma la fecha completa.
¿Cómo podemos obtener el mismo período del año pasado hasta el rango de fechas usando SAMEPERIODLASTYEAR?
Para obtener el mismo período del año pasado hasta la fecha, debemos realizar algunas comprobaciones y luego aplicar un filtro en la columna de fecha mientras se la pasa a la MISMO PERIODO AÑO funcionar en algunos escenarios.
- En primer lugar, debemos verificar si el filtro directo se aplica a la columna Fecha o no. Si hay un filtro directo disponible en la columna Fecha, entonces no necesitamos hacer nada. Simplemente podemos pasar la columna Fecha como un argumento en MISMO PERIODO AÑO.
MISMO PERIODO ULTIMO AÑO (‘Calendario'[Date])
Nota: En DAX, tenemos dos funciones para verificar el tipo de filtro en la columna:
ES FILTRADO (
ES FILTRO CRUZADO (
Nota: Para obtener la fecha máxima, puede usar el máx. función y para la fecha de fin de mes, puede usar MOE.
- Si no hay un filtro directo en la columna de fecha o la fecha máxima no es la fecha de fin de mes, entonces debemos aplicar un filtro en la columna de fecha y pasar la fecha filtrada a la MISMO PERIODO AÑO función.
Aquí, la columna de fecha filtrada no debe ser igual a sin fecha de filtro, ya que SAMEPERIODLASTYEAR ignora el filtro si ambos rangos son iguales. Por ejemplo, si estamos filtrando la fecha con <=Máx('Calendario'[Date]) entonces la salida de la fecha filtrada es la misma que sin la fecha del filtro, entonces en ese escenario, la MISMO PERIODO AÑO La función asumirá que no hay un filtro directo en la columna Fecha y seguirá su comportamiento predeterminado que toma la fecha completa del mes a pesar de la fecha parcial en el modelo de datos.
Para manejar esta situación, iremos con dos MISMO PERIODO AÑO funciones- la primera sería con

Pasemos a Power BI y realicemos la validación y los cambios necesarios en MISMO PERIODO AÑO Función para devolver el rango del año hasta la fecha como salida.
En Power BI, tenemos dos tablas: Ventasy Calendario en Power BI.

Hemos creado cuatro medidas diferentes 1. Cantidad total de ventas2. Cantidad total3. Cantidad de ventas de SPLYy 4. Cantidad de SPLY
Cantidad total de ventas: Calcular el monto total de las ventas
Cantidad total de ventas = Suma (Ventas[Sales Amount])
Cantidad total: Calcular la cantidad total
Cantidad total = SUMA (Ventas[Quantity])
Cantidad de ventas de SPLY: Calcule el mismo período el año pasado Cantidad de ventas
Cantidad de ventas de SPLY =
CALCULAR(
[Total Sales Amount],
MISMO PERIODO ULTIMO AÑO(‘Calendario'[Date])
)
Cantidad de SPLY: Calcular el mismo período del año pasado Cantidad
Cantidad de SPLY =
CALCULAR (
[Total Quantity],
MISMO PERIODO ULTIMO AÑO ( ‘Calendario'[Date] )
)
Cantidad de ventas de SPLY y Cantidad de SPLY ambos se basan en métodos de cálculo estándar de MISMO PERIODO AÑO.
En la fórmula a continuación para la cantidad del mismo período del año pasado, estamos realizando todas las comprobaciones y cambios en la función para obtener la salida del año hasta la fecha para MISMO PERIODO ÚLTIMO AÑO.

Cantidad SPLY (año hasta la fecha) =
VAR MaxDate =
MAX (‘Calendario'[Date] )
Verificación del filtro VAR =
SE FILTRA (‘Calendario'[Date] )
VAR EndDateCheck =
EOMES ( MaxDate, 0 ) = MaxDate
VAR SPLYFechas =
UNIÓN (
MISMO PERIODO AÑO (
FILTRO ( VALORES ( ‘Calendario'[Date] ), ‘Calendario'[Date] < fecha máx )
),
MISMO PERIODO AÑO (
FILTRO ( VALORES ( ‘Calendario'[Date] ), ‘Calendario'[Date] = fecha máx.)
)
)
DEVOLVER
SI (
O (FilterCheck = TRUE (), EndDateCheck = TRUE ()),
CALCULAR ( [Total Quantity]MISMO PERIODO ULTIMO AÑO ( ‘Calendario'[Date] ) ),
CALCULAR ( [Total Quantity]SPLYFechas )
)
Así es como podemos obtener exactamente el mismo período del año pasado hasta la fecha. Esta lógica también se aplica a la AÑADIR FECHA función para obtener la fecha hasta el mes, trimestre y año.
Por favor, deje su comentario y retroalimentación. ¡Gracias!
Descargue el archivo de Power BI desde el siguiente enlace.
