Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 
ecardenalarias
Contributor
Contributor

Contar el número de meses seleccionados

Buenos días,

Necesito crear un contador, que me calcule el número de meses que han pasado hasta la fecha actual.

He utilizado para este la formula "GetPossibleCount(Fecha)".

El problema que tengo es que esto me devuelve los meses que han pasado desde principio del año en curso hasta la fecha actual, pero si hago una selección ya no me devuelve un valor correcto, por lo que necesito una formula que me calcule los meses transcurridos desde la fecha más antigua que tenga en la selección, hasta la fecha más nueva que tenga en la selección.

¿A alguien se le ocurre como hacerlo?

Gracias

10 Replies
hector_munoz
Specialist
Specialist

Hola Esteban

Si simplemente es contar los meses te podría servir esto:

=((Year(Max(Fecha)) * 12) + Month(Max(Fecha))) -

((Year(Min(Fecha)) * 12) + Month(Min(Fecha)))

Luego puedes meter en variables la fecha máxima y la mínima para reutilizar código...

Espero que te sirva...

Saludos,

H

sorrakis01
Specialist
Specialist

!

Hola,

No te sirve esta fórmula?

=month(now())-month(Fecha)

Siendo now la fecha máxima que quieres restar y Fecha la seleccionada

Saludos,

Te adjunto ejemplo.

ecardenalarias
Contributor
Contributor
Author

El problema de esa formula, es que si hay algún mes que no tiene datos, no te lo cuenta.

hector_munoz
Specialist
Specialist

Esteban, ¿puedes poner un ejemplo?

ecardenalarias
Contributor
Contributor
Author

Perdón, quería decir, que si el último mes seleccionado no tiene datos, no lo cuenta.

Es decir, si selecciono de febrero a mayo y mayo no tiene datos de ventas y abril si, aún seleccionando mayo, me devuelve 3 meses, no 4.

Lo que quiero es calcular cada cuanto tiempo se realiza un pedido, es decir, el nº meses/nº pedidos.

sorrakis01
Specialist
Specialist

No te sigo....

Es igual los meses que tengan o no tengan datos, tu métrica segun he entendido solo restará los meses de la fecha máxima y la fecha mínima......

Tu dices:

Perdón, quería decir, que si el último mes seleccionado no tiene datos, no lo cuenta.

lo que tendrias que hacer es restar del mes seleccionado.... entiendo....

De todas formas si puedes subir un ejemplo como dice Hector mejor.....

Saludos,

ecardenalarias
Contributor
Contributor
Author

Pero no es restar el mes seleccionado, lo que tiene que hacer la función es contar los meses que hay en el periodo seleccionado.

Tal y como he comentado, si la selección es de Febrero a Mayo, me debería de dar 4 meses, pero si el mes de Mayo que he seleccionado no tiene datos de ventas, no lo tiene en cuenta y me devuelve 3.

De hecho, si selecciono de Febrero a Junio, como Junio si tiene datos, me devuelve 5. Vamos que si el mes que no tiene datos, está en medio de la selección, si lo tiene en cuenta.

El problema que tiene Qlik, es que si en una fecha determinada no tiene datos, Qlik, coge por defecto la última fecha de la que disponga de datos.

No se si termino de explicarme.

luis_bisval
Contributor III
Contributor III

Crea un calendario maestro, te dejo un link Calendario Maestro para obtener todos los días transcurridos

y este es el que tengo en uno de mis documentos.

Fecha: 

LOAD  

Num(43009) + rowno() as Día // 43009 es el "01-10-2017" // Esta fecha se puede modificar

AUTOGENERATE (91);  // 91  es la cantidad de días que hay para llegar al "31-12-2031"

//***********************************************************************************

//  Crear Calendario usando como base la fecha del Campo X

//***********************************************************************************

LET vMinDate = Num(Peek('Día',0,'Fecha'));

LET vMaxDate = Num(Peek('Fecha Campo X',-1,'Nombre de la Table'));

LET vToday = Num(today());

Drop Table Fecha;

TempCalendar:

LOAD

   $(vMinDate) + rowno()-1 as Num,

   Date($(vMinDate) + rowno()-1) as TempDate

AUTOGENERATE

$(vMaxDate) - $(vMinDate) + 1;

Calendario:

LOAD

     year(TempDate)  as Año,

     Month(TempDate) as Mes,

     Day(TempDate)    as Día,

     ceil(num(Month(TempDate))/4) & Year(TempDate)              as PeriodoQ,

     right('00' & num(Month(TempDate)),2) & Year(TempDate)  as PeriodoNota,

     right('00' & week(TempDate),2) & Year(TempDate)      as PeriodoW,

     ceil(num(Month(TempDate))/3) & ('º Q')      as Trimestre

RESIDENT TempCalendar

ORDER BY TempDate Asc;

DROP TABLE TempCalendar

De esta forma tendrás todos los meses así no tengas ventas!

sorrakis01
Specialist
Specialist

De verdad si subes un ejemplo ayudaria porque hablas de selecciones y luego de datos... crea un pequeño inline....

Te adjunto otro caso por si te ayuda....