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: 
alurcade
Contributor II
Contributor II

Calendario con Fechas Vinculadas??

Buen dia

Como puedo crear un calendario donde a cada fecha le correspondan 3 fechas vinculadas que sean los 3 dias previos. Esto es crear una tabla con la siguiente estructura

FECHA          FECHAS VINCULADAS

01/01/2018          29/12/2017

01/01/2018          30/12/2017

01/01/2018          31/12/2017

02/01/2018          30/12/2017

02/01/2018          31/12/2018

02/01/2018          01/01/2018

Muchas gracias

Saludos

7 Replies
alurcade
Contributor II
Contributor II
Author

Yo arme una solucion que me parece demasiado precaria

LET vFechaMin = 43000;

LET vFechaMax = Today()-1;

FechasTemp:

LOAD DISTINCT

Temp_Fecha;

LOAD DISTINCT

DayStart($(vFechaMin) + IterNo()) as Temp_Fecha

AUTOGENERATE (1)

WHILE $(vFechaMin) + IterNo() <= $(vFechaMax);

//--- Remove the temporary variables

LET vFechaMin = Null();

LET vFechaMax = Null();

left join

LOAD * INLINE [

    DIAS

    1

    2

    3

    4

    5

    6

    7

];

NoConcatenate

Fechas:

LOAD Temp_Fecha,

Temp_Fecha+DIAS as FechasVinculadas

Resident FechasTemp;

DROP Table FechasTemp;

si tuviera que agregar 45 dias el Inline es kilometrico. Quisiera algo que incluyera un Loop o algo asi

Saludos

alurcade
Contributor II
Contributor II
Author

Ahora llegue a una mejor solucion que comparto.

//--- Asignamos los límites máx y min a variables

LET vFechaMin = 43000;

LET vFechaMax = Today()-1;

FechasTemp:

LOAD DISTINCT

Temp_Fecha;

LOAD DISTINCT

DayStart($(vFechaMin) + IterNo()) as Temp_Fecha

AUTOGENERATE (1)

WHILE $(vFechaMin) + IterNo() <= $(vFechaMax);

//--- Remove the temporary variables

LET vFechaMin = Null();

LET vFechaMax = Null();

left join

LOAD DISTINCT

IterNo() as DIAS

AUTOGENERATE (1)

WHILE IterNo() <= 7;

NoConcatenate

Fechas:

LOAD Temp_Fecha,

emp_Fecha-DIAS as FechasVinculadas

Resident FechasTemp;

DROP Table FechasTemp;

hector_munoz
Specialist
Specialist

Hola Alejandro,

En este ejemplo tienes una tabla de partida con las fechas originales y luego lo que se hace es un bucle con tantas iteraciones como días anteriores quieres que cada fecha tenga y creas una tabla con las asociaciones:

T1:

LOAD *

INLINE [

Fecha Original

01/01/2018

02/01/2018

03/01/2018

04/01/2018

05/01/2018

06/01/2018

07/01/2018

08/01/2018

09/01/2018

10/01/2018

];

FOR vsContador = 1 TO 3

     T2:

     LOAD           DISTINCT [Fecha Original]                     AS [Fecha Original],

                          Date([Fecha Original] - $(vsContador))  AS [Fecha Previa]

     RESIDENT   T1;

NEXT

DROP TABLE T1;

Espero que te sirva,

Saludos,

H

alurcade
Contributor II
Contributor II
Author

Muchas gracias estimado!!!

Saludos

hector_munoz
Specialist
Specialist

De nada, si necesitas algo más nos dices... Saludos!

rubenmarin

Hola Alejandro, además de IterNo() se puede usar RecNo(), que está asociado al índice del autogenerate:

LET vFechaMin = 43000;

LET vFechaMax = Today()-1;

FechasTemp:

LOAD

DayStart($(vFechaMin) + IterNo()) as FECHA,

DayStart($(vFechaMin) + IterNo()-RecNo()) as [FECHAS VINCULADAS]

AUTOGENERATE (3)

WHILE $(vFechaMin) + IterNo() <= $(vFechaMax);

alurcade
Contributor II
Contributor II
Author

Muchas gracias estimado

Saludos