Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
JorgeRo
Contributor II
Contributor II

Semana actual y semana anterior

Fecha actual y fecha anterior
Muy buenas tardes, espero que me puedan ayudar con este problema
Que función puedo utilizar para calcular en grafico de tabla lo siguiente:
En una columna debe ser la suma de ventas de la semana actual de lunes a domingo : sum(Cantidad) y en la otra columna debe ser la suma de ventas de la semana anterior también de lunes a domingo, pero se tiene que tener en consideración que parte o toda la semana anterior puede pertenecer a un mes diferente al actual.
Otra consideración es que en el mes de enero, parte de la semana anterior puede pertenecer a otro año, pero la información se necesitaría consultar de igual manera.
El formato del campo fecha es dd/mm/aaaa
Mil gracias.!!

Labels (1)
18 Replies
tincholiver
Creator III
Creator III

 

Hola, ya probaste usando la funcio week?

Si en el calendario maestro añadis la siguiente linea:

num(Week(PeriodDate),'00')                                          AS WEEK,          

te trae el numero de semana, despues en la expresion usas:

sum({<NumWeek = {'> = $ (= max (NumWeek) -1) <$ (= max (NumWeek))'},MES AÑO>} Ventas)

MES, AÑO es para que ignore los filtros y no te deje afuera los dias de años o meses distintos a los seleccionados

JorgeRo
Contributor II
Contributor II
Author

Muchas gracias por tu respuesta, lamentablemente tengo muy poco tiempo utilizando qlik y no estoy familiarizado con un calendario maestro, tendrás algún ejemplo para poder replicarlo y justamente como mencionas, necesito que el gráfico tipo tabla ignore los filtros y que la información siempre se muestre, muchas gracias de antemano 

tincholiver
Creator III
Creator III

Ok, hace lo siguiente:

Pega en un archivo nuevo el siguiente script:

FOR i = 2018 TO 2028                                               //aca pone los años desde hasta que necesitas

LET curYear = $(i);                                                     // de aca en adelante sutogenera todos los dias que hay entre esos años
LET StartDate = makedate(curYear); 
LET YearEnd = yearend(StartDate);
LET TotalDays = (YearEnd - StartDate) + 2; 

TempCalendar: 
LOAD
date('$(StartDate)' + recno() - 1) AS PeriodDate
AUTOGENERATE(TotalDays - 1);


Next

Calendario:                                                                                 // aca renombra los campos como quieras
Load
PeriodDate                                                                               AS     %DATE,                 
Year(PeriodDate)                                                                   AS    YEAR,
num(month(PeriodDate))                                                 AS   MONTH,                     //Number format
DUAL(text(date(PeriodDate,'MMM')),num(month(PeriodDate))) AS MES, //Alfabeth format
DUAL(date(PeriodDate,'MMM') & ' ' & date(PeriodDate,'yyyy'),
Year(PeriodDate)*100+NUM(Month(PeriodDate))) AS MES_AÑO,                // Month and year
WeekDay(PeriodDate)                                                        AS WEEKDAY,
num(Week(PeriodDate),'00')                                          AS WEEK,                          //Number format
num(Day(PeriodDate),'00')                                              AS DAY,
CEIL(Num(Month(PeriodDate))/3)&'°T'                      AS TRIM,                           //Quarter
num(weekday(PeriodDate)) AS DIA_NRO,
if(num(weekday(PeriodDate)=6) OR num(weekday(PeriodDate)=0),0,1) AS WORKINGDAY
Resident TempCalendar;

STORE Calendario into tupath\Calendario.qvd(qvd);
DROP TABLE Calendario;
DROP TABLE TempCalendar;

Carga el qvd que genero ese script en tu aplicacion, asegurate que los campos fecha generen una clave:

Tablas.png

Ahi vas a encontrar el campo NumWeek que genero el calendario

JorgeRo
Contributor II
Contributor II
Author

Primero que nada quiero darte las gracias por el tiempo invertido en ayudarme a solucionar mi problema, te comento que hasta el momento he realizado lo siguiente:

1.- Hice un archivo llamado calendario.qvd utilizando el script que me hiciste favor de pasarme

 

2.- En mi aplicación hice una carga de dicho archivo

1.png

3.- Los campos fecha si generan llave

2.png

4.- En mi aplicación me marca error al utilizar el campo numweek, lo estoy utilizando en una gráfica tipo tabla

3.png

No se que hice mal que me marca el error, espero y me puedas seguir orientando, nuevamente gracias

 

 

 

tincholiver
Creator III
Creator III

De nada Jorge, nos gusta en el foro sacar adelante proyectos y dudas,
Reemplaza NumWeek por Week en la expresion y decime si te da bien
JorgeRo
Contributor II
Contributor II
Author

Ya hice la sustitución que me sugeriste y este es el resultado, tengo una columna simplemente sumando los disponibles y el resultado es el mismo con la expresión nueva no tengo ningún filtro seleccionado de año, día, mes...

4.png

tincholiver
Creator III
Creator III

podes subir una tabla con datos asi lo miro?
tincholiver
Creator III
Creator III

Fijate que en la expresion tenes el campo Week en minusculas y en el script del calendario esta con mayusculas,
la expresion deberia quedarte asi:
sum({<WEEK= {'> = $ (= max (WEEK) -1) <$ (= max (WEEK))'}>} Ventas)
JorgeRo
Contributor II
Contributor II
Author

Tengo una base de datos en sql con apenas 3 tablas y pocos datos que tengo ficticios

*necesitas una pantalla de mis tablas donde se vean tanto los nombres de los campos como la información? 

*o la base de datos junto con mi aplicación qlikview? de ser así me pudieras proporcionar un correo para subir a mi Google drive y pasarte un link de descarga 

Muchas gracias