Skip to main content
Announcements
Qlik Community Office Hours - Bring your Ideation questions- May 15th, 11 AM ET: REGISTER NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Crear un nueva columna a partir de datos de una mismo QVD

Hola Me llamo reynaldo,

Bueno yo tengo esta tabla

FECHACOD1COD2TIPO
19961101X164331
19971007X164331
20060101X164331
20101001X164331
20101101X164331
20101201X164331
20120208X164331
19961231X164332
19981231X164332
20060131X164332
20101031X164332
20101130X164332
20101231X164332
20120309X164332
19970601X1165321
19990401X1165321
19990501X1165321
19990601X1165321
19990901X1165321
20010803X1165321
19970930X1165322
19990430X1165322
19990531X1165322
19990630X1165322
20000229X1165322
20011118X1165322
20040201X3222231
20040301X3222231
20040401X3222231
20040501X3222231
20040601X3222231
20040229X3222232
20040331X3222232
20040430X3222232
20040531X3222232
20030201X4846071
20090701X4846071
20041231X4846072
20050101X5970681
20050701X51251
20050801X5970681
20050228X5970682
20050731X51252

y quisiera que se juntara y quede como la tabla anterior, pero cuando hago el JOIN LEFT se genera valores de mas que no me sirven

El campo tipo me hace distincion de fecha inicio(1) y fecha fin(2)

FECHA_INICIOFECHA_FINCOD1COD2
1996110119961231X16433
1997100719981231X16433
2006010120060131X16433
2010100120101031X16433
2010110120101130X16433
2010120120101231X16433
2012020820120309X16433
1997060119970930X116532
1999040119990430X116532
1999050119990531X116532
1999060119990630X116532
1999090120000229X116532
2001080320011118X116532
2004020120040229X322223
2004030120040331X322223
2004040120040430X322223
2004050120040531X322223
20040601-X322223
2003020120041231X484607
20090701-X484607
2005010120050228X597068
2005070120050731X5125
20050801-X597068

este fue el script que use, lo necesito en script xq es parte de un proceso y necesito que los datos se llenes de esa manera.

DEMO:

NoConcatenate

LOAD

     FECHA as FECHA_INI,

     COD1,

     COD2

FROM

[XXX.QVD] (qvd)

where TIPO=1;

DEMO1:

NoConcatenate

Load

       AutoNumber(COD1&COD2, 'Ctr1') as Nro,

      FECHA_INI,

      COD1,

      COD2

resident DEMO

order by FECHA_INI  ASC;

DROP table DEMO;

DEMO2:

NoConcatenate

LOAD   

     FECHA AS FECHA_FIN,

     COD1,

     COD2

FROM

[xxx.QVD] (qvd)

where TIPO=2;

DEMO_2:

NoConcatenate

Load

  AutoNumber(COD1&COD2,'Ctr2') as Nro,

  FECHA_FIN,

  COD1,

  COD2

resident DEMO2 order by FECHA_FIN ASC;

DROP table DEMO2;

final1:

NoConcatenate

LOAD Nro,

  FECHA_INI,

     COD1,

     COD2

resident DEMO1;

left join

NoConcatenate

LOAD Nro,

  FECHA_FIN,

  COD1,

  COD2

resident DEMO_2;

DROP table DEMO1;

DROP table DEMO_2;

espero q alguien me pueda ayudar

1 Solution

Accepted Solutions
jolivares
Specialist
Specialist

Reynaldo, entiendo que esto te puede ayudar.

Tab2:

NoConcatenate

Load Cod1,Cod2,

     Cod1&Cod2&Tipo as Cod12Tipo,

     Date(Date#(Fecha,'YYYYMMDD')) as Fecha,

     Tipo,

     If(Previous(Cod1&Cod2&Tipo)=Cod1&Cod2&Tipo,Peek(Fila,-1)+1,1) as Fila

Resident Tab1

Order By Cod1, Cod2, Tipo, Fecha;

MapTipo2:

Mapping

Load Cod1&Cod2&Fila,

     Fecha

Resident Tab2

Where Tipo = 2;

Tab3:

NoConcatenate

Load Cod1, Cod2,

     Cod12Tipo,

     Fecha as FechaInicio,

     ApplyMap('MapTipo2',Cod1&Cod2&Fila,Null()) as FechaFinal

Resident Tab2

Where Tipo = 1;

Drop Table Tab2;

Drop Table Tab1;

View solution in original post

2 Replies
jolivares
Specialist
Specialist

Reynaldo, entiendo que esto te puede ayudar.

Tab2:

NoConcatenate

Load Cod1,Cod2,

     Cod1&Cod2&Tipo as Cod12Tipo,

     Date(Date#(Fecha,'YYYYMMDD')) as Fecha,

     Tipo,

     If(Previous(Cod1&Cod2&Tipo)=Cod1&Cod2&Tipo,Peek(Fila,-1)+1,1) as Fila

Resident Tab1

Order By Cod1, Cod2, Tipo, Fecha;

MapTipo2:

Mapping

Load Cod1&Cod2&Fila,

     Fecha

Resident Tab2

Where Tipo = 2;

Tab3:

NoConcatenate

Load Cod1, Cod2,

     Cod12Tipo,

     Fecha as FechaInicio,

     ApplyMap('MapTipo2',Cod1&Cod2&Fila,Null()) as FechaFinal

Resident Tab2

Where Tipo = 1;

Drop Table Tab2;

Drop Table Tab1;

Not applicable
Author

Hola Reynaldo, se me ocurre esta forma de hacerlo:

TMP:

LOAD

  If(TIPO = 1, FECHA) AS FECHA_INICIO,

  If(TIPO = 2, FECHA) AS FECHA_FIN,

  COD1,

  COD2,

  If(Previous(COD1) = COD1 and Previous(COD2) = COD2 and Previous(TIPO) = TIPO, Peek(Nro) + 1, 1) AS Nro

FROM [xxx.QVD] (qvd);

Demo:

NoConcatenate

LOAD

  Min(FECHA_INICIO) AS FECHA_INICIO,

  Max(FECHA_FIN) AS FECHA_FIN,

  COD1,

  COD2,

  Nro

Resident TMP

Group By COD1, COD2, Nro;

DROP Table TMP;