Qlik Community

Mexico

Announcements
QlikWorld happening right now! You can still join: REGISTER NOW
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] )

15 Replies
jer_2011
Creator II
Creator II

  Hola

No sé si ya pudiste resolver tu problema, pongo un ejemplo sencillo de cómo se resolvería con variables y set análisis, sobre todo para que los que estén en la comunidad y tengan más herramientas, esta creado en Sense pero también se puede realizar en Qlikview

  1.- Tome el archivo que dejaste, se cargó en el script solo se modificó el campo Fecha (Todos modos dejo el qvf)

 

 

LOAD

 

    date(Fecha) as Fecha,

 

    Mes,

 

    Año,

 

    Año_Mes,

 

    Marca,

 

    Unidades_Estandar,

 

    Ventas_Valor

 

FROM [lib://Fuente/Ejemplo Fechas Qlik Sense.xlsx]

 

(ooxml, embedded labels, table is Hoja1);

 

  2.- Se crean las siguientes variables.

 

vDiaActual =today()                      --fecha del día actual

 

vAñoActual =yearStart(vDiaActual)                            -- Fecha inicial del año actual

 

vMesActualI =MonthStart(vDiaActual)                      -- Fecha inicial del mes actual

 

vMesActualIF =MonthEnd( vDiaActual)                      -- fecha final del mes actual 

 

vMesAnteriorI =MonthStart(vDiaActual,-1)              -- Fecha inicial del mes anterior

 

vMesAnteriorF =MonthEnd( vDiaActual,-1)              -- fecha final del mes anterior

 

vAñoAnteriorI =yearStart(vDiaActual,-1)                    -- fecha inicial del año anterior

 

vAñoAnteriorF =yearEnd(vDiaActual,-1)                    -- fecha final del año anterior

 

vMesActualAñoAnteriorI =MonthStart(vDiaActual,-12)      -- fecha inicial mes actual, pero del año anterior

 

vMesActualIAñoAnteriorF =MonthEnd( vDiaActual,-12)      -- fecha final mes actual, pero del año anterior

 

vMesAnteriorAñoAnteriorI =MonthStart(vDiaActual,-13)    -- fecha inicial mes anterior, pero del año anterior

 

vMesAnteriorAñoAnteriorF =MonthEnd( vDiaActual,-13)    -- fecha Final mes anterior, pero del

 

 

Con este tipo de ejemplo, podrías crear sin fin de variables combinando fechas

 

  3.- Generación de set análisis.

 

 

El acumulado de ventas que tiene la bases de datos, solo hasta la fecha del mes anterior.

 

sum({<Fecha={'<=$(vMesAnteriorF)'} >} Ventas_Valor)

 

El acumulado de ventas solo lo que se lleva del año actual.

 

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

 

El Acumulado de ventas solo del año anterior, fecha inicio a fecha fin.

 

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

 

El acumulado de ventas para el mes actual, para este ejemplo aparece en cero, no hay información en la base de datos.

 

sum({<Fecha={'>=$(vMesActualI)<=(vMesActualF)'} >} Ventas_Valor)

 

El acumulado de ventas para el mes anterior, para este ejemplo aparece en cero, no hay información en la base de datos.

 

sum({<Fecha={'>=$(vMesAnteriorI)<=(vMesAnteriorF)'} >} Ventas_Valor)

 

El acumulado de ventas del mes actual, pero del año anterior.

 

sum({<Fecha={'>=$(vMesActualAñoAnteriorI)<=(vMesActualAñoAnteriorF)'} >} Ventas_Valor)

 

El acumulado de ventas del mes anterior, pero del año anterior.

 

sum({<Fecha={'>=$(vMesAnteriorAñoAnteriorI)<=(vMesAnteriorAñoAnteriorF)'} >} Ventas_Valor)

 

 

Ejemplo de vistas.

 

 

Este es un pequeño ejemplo de cómo se resolvería, hay varias técnicas que dentro de la comunidad se pueden ver, espero te pueda servir, así como a la comunidad y les sirva el ejemplo para resolver casos similares, cualquier duda estoy para servirte.

gsegreda
Contributor III
Contributor III
Author

Muchas gracias Gerardo... Definitivamente no era algo sencillo, pero creo que será de mucha utilidad para nosotros y la comunidad.

Voy a trabajar con esto...

carloshernandez
Contributor III
Contributor III

Excelente aporte y aunque bien mencionas hay varios post. Del tema el tuyo

es extremadamente.grafico y completo.

Saludos

Atte. Carlos Hernández

El 5 may. 2017 6:54 PM, "Gustavo Segreda" <qcwebmaster@qlikview.com>

escribió:

Qlik Community <https://community.qlik.com/?et=watches.email.thread>

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

actual?

respuesta de Gustavo Segreda

<https://community.qlik.com/people/gsegreda?et=watches.email.thread> en *Qlik

México* - Ver la discusión completa

<https://community.qlik.com/message/1263132?et=watches.email.thread#1263132>

jer_2011
Creator II
Creator II

Qué bueno que les sirva, solo como comentario la fecha base es al día de hoy ( Today() ), pero también podría funcionar con la última fecha seleccionada (max(Fecha) ).

Solo es agregarle algo de creatividad y así podrás generar tus propias variables para las distintos rangos de comparación, como consejo puedes ayudarte con las funciones de fechas, así como en el ejemplo que puse monthstar(Fecha) que determina el primer día del mes de la fecha o campo que se requiere.

Te dejo el siguiente link para las funciones de Fechas

http://help.qlik.com/esES/qlikview/12.0/Subsystems/Client/Content/Scripting/DateAndTimeFunctions/mon...,

Cualquier duda estoy para servirte.

 

gsegreda
Contributor III
Contributor III
Author

Hola Gerardo.

De nuevo gracias por compartir tu información.

Hoy te molesto de nuevo porque no he logrado que me sume los datos de años anteriores, basados en la fecha máxima. He intentado de diferentes formas pero en ocasiones no me suma nada, o bien me suma el año completo.

Yo recibo una data hasta con 6 semanas (aunque es variable) posterior al mes, por lo que las fórmulas me van agregando hasta 2 meses de los años anteriores... por lo que no se hace comparativo el análisis del año en curso.

Cualquier ayuda será muy bien recibida...

Gracias.

jer_2011
Creator II
Creator II

Hola,

Dentro de este ejemplo no se si ya intentaste sustituir la variable vDiaActual

vDiaActual = max(Fecha)

luego el tipo de formatos de fechas pueden causar problemas.

gsegreda
Contributor III
Contributor III
Author

Si intenté cambiar en las fórmulas la variable del día actual, pero no me suma...

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

vMesMax =  Max(Fecha)

Lo que estoy buscando es comparar el acumulado al mes del año reciente contra los años anteriores.

Te incluyo algunos archivos, incluso el APP que compartiste.

Muchas gracias por la ayuda!

jer_2011
Creator II
Creator II

Tomando la descripción que te pase tendrías que tomar los siguientes elementos, solo cambias la variable de Día Actual ya sea por today() o max(Fecha)

Ahora el acumulado de lo que llevas a este año vs acumulado año anterior (Enero - Mayo ), tomando en cuenta que la fecha máxima fuera mayo, puede cambiar de mes conforme a la fecha máxima seleccionada.

vDiaActual = max(Fecha)

vAñoActual =yearStart(vDiaActual)     // inicio de mes año actual (Enero 2017)

vMesActualIF =MonthEnd( vDiaActual)    // fin de mes año actual (Mayo 2017)

vAñoAnteriorI =yearStart(vDiaActual,-1) // inicio de mes año anterior (Enero 2016)

vMesActualIAñoAnteriorF =MonthEnd( vDiaActual,-12)    // fin de mes año anterior (Mayo 2016)

expresiones:

// acumulado de enero a mayo 2017

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

// acumulado de enero a mayo 2016

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

espero no enredarte.

joconstante
Contributor II
Contributor II

Un gusto Gustavo

Te comento para este tipo se análisis entre fechas yo utilizo o creo un campo extra de periodo y periodoID con estos campos en particular puedo hacer comparaciones entre años y meses anteriores, que incluyen valores acumulados de forma mas sencilla, 

Year(Temp_Fecha) * 100 + Month(Temp_Fecha) as [Periodo]

una ves listo este campo, se genera el Periodo_ID

AutoNumber(Periodo, 'PeriodoID') as [PeriodoID],   // esto como precedent

y mediante set Analisys

se puede hacer estos analisis

1) Sum({<PeriodoId = {'<=$(=Max(PeriodoId)-2)'},[Año Cartera] = ,[Mes Cartera] =,[Dia Cartera] =,[Semana Cartera] =  >}Resolución)

2) Sum({<PeriodoId = {'<=$(=Max(PeriodoId)-1)'},[Año Cartera] = ,[Mes Cartera] =,[Dia Cartera] =,[Semana Cartera] =  >}Resolución)

Estas expreciones se usan valores acumulados

Espero te sirva Gustavo