Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
gsegreda
Contributor III
Contributor III

¿Cómo crear una medida de tiempo para acumular hasta el mes anterior al actual?

Hola comunidad...

De nuevo buscando de su sabiduria y experiencia.

Estoy tratando de hacer una consulta  donde me pueda acumular por ejemplo las ventas hasta el mes anterior o bien el ultimo mes del año actual donde pueda comparar ese mismo período de años anteriores. No se tiene el dato de la fecha exacta de la transacción, por lo que todo está al 1 de cada mes.

Hice un calendario para aprovechar la facilidad para crear medidas de tiempo en Qlik Sense 3.2, pero ninguna de las opciones me está resultando, se mueve con la fecha del día actual.

La data siempre será actualizada al menos 2 semanas despúes de finalizado el mes.

Alguna idea???

Gracias.

Ejemplos de las que he intentado modificar:

Sum( { $< [Fecha.autoCalendar.InYTD]={1} > } [Ventas_Valor] )

Sum( { $< [Fecha.autoCalendar.InQTD]={1} > } [Ventas_Valor] )

16 Replies
ger_alegria
Partner - Creator
Partner - Creator

Con la siguiente expresión podras visualizar la información de todo a partir de tu mes anterior, lo que incluye el mes anterior y lo que se lleve del mes en curso:

sum({<Mes={">= max(Mes)-1"}>}Metrica)

Saludos.

gsegreda
Contributor III
Contributor III
Author

Gracias Gerardo por tu tiempo.

La expresión del acumulado del año anterior aún no me refleja el dato que se requiere.

Me está sumando el total del 2017 más el total del 2016.

No se me ocurre algo diferente...

En realidad para comparar acumulado 2017 contra el mismo tiempo transcurrido pero el año anterior, en 2016 debería sumar 19.62M.

Toda sugerencia será bien recibida...

ger_alegria
Partner - Creator
Partner - Creator

Agregando el año en el Set Analysis obtendrías solo lo del 2017.

Prueba con algo como esto:

sum({<Mes={">= max(Mes)-1"}, Año = {'$(=max(Año))'}>}Metrica)


Dejame saber si fue útil.


Saludos.

ger_alegria
Partner - Creator
Partner - Creator

y si quieres poder hacer la comparación basta con incluir la reste de lo del año anterior:

sum({<Mes={">= max(Mes)-1"}, Año = {'$(=max(Año))'}>}Metrica)

-

sum({<Mes={">= max(Mes)-1"}, Año = {'$(=max(Año)-1)'}>}Metrica)

gsegreda
Contributor III
Contributor III
Author

De nuevo muchas gracias Gerardo.

No me está funcionando, solo le agrego las métricas pero da 0...

Tengo 12 meses del 2016 y 4 meses del 2017.

Quiero comparar únicamente los primeros 4 meses del 2016 contra los primeros 4 meses del 2017...

Construimos estas variables basados en tu recomendación incial, y funcionana, pero al tratar de compararlo no hace el cálculo.

vUltMes =Max(Fecha)   -- Ultimo mes disponible
vUtMesAñoAnteriorI =MonthStart(vUltMes,-13)          -- Fecha inicial del mes anterior
vUtMesAñoAnteriorF =MonthEnd(vUltMes,-13)            -- Fecha final del mes anterior
jer_2011
Creator II
Creator II

Hola, le modifique algunas variables al ejemplo que te mande,

checa las nuevas variables y cualquier duda me indicas.

vDiaActual =today()

vAñoActual =yearStart(vDiaActual)

vAñoAnteriorI =yearStart(vDiaActual,-1)

vMonth4 =MonthEnd(vAñoActual,3)

vMonth4_Anterior =MonthEnd(vMonth4,-12)

acumulado año actual hasta el 4to mes

sum({<Fecha={'>=$(vAñoActual)<=$(vMonth4)'} >} Ventas_Valor)

acumulado del año anterior hasta el 4to mes

sum({<Fecha={'>=$(vAñoAnteriorI)<=$(vMonth4_Anterior)'} >} Ventas_Valor)

nlopedebarrios
Contributor II
Contributor II

Mi aporte llega años después, pero quiero decir que es clave el aplicar la función Date() a las fechas en cuestión durante la carga: Date(FECHA) as FECHA, por más que sin hacerlo los filtros o el selector de periodo funcionen bien; y si bien las funciones  como Month() o Year() devuelven el mes o año de una determinada fecha, es importante utilizar MonthStart() o YearStart() en su lugar, para lograr el efecto deseado.

Por ejemplo:

LET MesActual = DATE(MonthStart(Today()), 'MMM YYYY');