Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

AYUDA CON SET ANALYSIS

Hola, estoy con una expresión que me está costando descifrarla.

Lo que quiero es contar cuantos clientes han comprado en los 3 meses anteriores al seleccionado y el mes actual, para lo cual estoy utilizando:

count(TOTAL {$<Mes={[>=$(=only(Mes)-3)]}>}DISTINCT Clientes)

Pero como utilizo los meses como la unión entre el año y el mes (ejemplo: 201412, 201501, 201502, etc.) se me complica cuando el usuario selecciona el mes de Enero, Febrero o Marzo ya que la expresión toma como Mes - 3 :

- Si selecciono Enero,    entonces Mes=201501 y Mes - 3 =201598, que no existe. Debería tomar Mes - 89

- Si selecciono Febrero, entonces Mes=201502 y Mes - 3 =201599, que no existe.  Debería tomar Mes - 90

- Si selecciono Marzo,   entonces Mes=201503 y Mes - 3 =201500, que no existe.  Debería tomar Mes - 91

Mi idea es establecer un rango de >=Mes -89 y <=Mes-91 pero no se como hacerlo.

Intenté:

count(TOTAL {$<Mes={[>=$(=only(Mes)-89)] and [<=$(=only(Mes)-91)] }>}DISTINCT Clientes)

pero no funcionó. A alguien se le ocurre?

Gracias!

11 Replies
ecolomer
Master II
Master II

Lo que te ocurre es que estás utilizando un campo que no tiene el formato fecha.

Una solución es que transformes los campos que actualmente tienes como YYYYMM en campos tipo fecha como MonthYear, y a partir de ahí podrás sumar o restar meses tranquilamente

ecolomer
Master II
Master II

Si quieres subirme el fichero lo analizo y te propongo solución.

Not applicable
Author

Hola Enrique gracias por tu tiempo, te paso el documento. Gracias

Not applicable
Author

Hola Enrique, se te ha ocurrido algo?

ecolomer
Master II
Master II

Si, he estado analizando los datos, en el poco tiempo que he tenido.

Yo haría un cambio importante porque creo que todos los problemas que tienes vienen del mismo sitio.. Me explico.

estás utilizando un campo Mes como YYYYMM pero NO es un campo FECHA y para trabajar con él como un campo fecha deberías transformarlo.

p06.png

Si esto lo haces en el script de carga mejor.

Espero que te ayude.

Not applicable
Author

Hola Enrique, hice lo que me has propuesto. Me queda en el formato DDMMYYYY, pero al operar con set analisys:

para Diciembre MesVta= 01/12/2014 y para MesVta - 1 = 31/11/2014 y si utilizo month me da error.

ecolomer
Master II
Master II

Tienes que utilizar la función AddMonth

Not applicable
Author

En el scrip estoy utilizando:

if((num(month(Fecha)))<10, Year(Fecha)&0&(num(month(Fecha))), Year(Fecha)&(num(month(Fecha)))) as MesVta,

y agregando lo propuesto por tí: 

makedate(Left(if((num(month(Fecha)))<10, Year(Fecha)&0&(num(month(Fecha))), Year(Fecha)&(num(month(Fecha)))), 4), date(mid(if((num(month(Fecha)))<10, Year(Fecha)&0&(num(month(Fecha))), Year(Fecha)&(num(month(Fecha)))), 5,2), 01)) as MesVta2

ecolomer
Master II
Master II

Para utilizar un campo fecha con el formato YYYYMM, puedes transformarlo así:

MesActual  = date(monthstart(Fecha), 'YYYY-MM')

en lugar de montarlo tú porque pierde la característica de Fecha.

Para sacar después el mes ANTERIOR, entonces utiliza:

MesAnterior = (AddMonths(MesActual,-1)