Skip to main content
Announcements
Qlik Announces Qlik Talend Cloud and Qlik Answers: LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Dividir un campo y unificar registros

Hola, que tal? soy novato en este mundo y agradecería su ayuda con la siguiente interrogante para elaborar unatabla simple en Qlikview:

Tengo una tabla con los siguientes datos, donde el ID se repite de acuerdo a las categorías que tenga registradas.

IDCATEGORÍADESCRIPCIÓN
100200AAXCATX4400
100200ABXBETX2254
100201AAXCATX4405
100201ABXBETX2254
100203ABXBETX2200
100203AAXCATX4408

y necesito llegar a ésto, donde el ID sea único:

IDDESCRIPCIÓN AAXDESCRIPCIÓN ABX
100200CATX4400BETX2254
100201CATX4405BETX2254
100203CATX4408BETX2200

Intenté haciendo un IF en el script para crear los 2 campos nuevos de descripción (AAX y ABX):

IF(CATEGORIA='AAX',DESCRIPCION,' ')          AS DESCRIPCIÓN_AAX,

IF(CATEGORIA='ABX',DESCRIPCION,' ')          AS DESCRIPCIÓN_ABX,

Pero el problema es que al no cumplirse la condición obtengo un campo vacío, que no permite la unificación de registros según el ID

Podría lograr lo anterior mediante una tabla pivotante, pero es para un informe que tiene una estructura ya definida, donde requiero agregar mas campos luego de las descripciones..

Alguna idea¿?

muchas gracias

1 Solution

Accepted Solutions
ramoncova06
Specialist III
Specialist III

si tu tabla es asi de simple puedes intentar con mapping

Tabla:

LOAD ID,

     CATEGORÍA,

     DESCRIPCIÓN

FROM

Book1.xlsx

(ooxml, embedded labels, table is Sheet2);

Mapping

code:

LOAD ID,

     DESCRIPCIÓN

Resident Tabla

where CATEGORÍA = 'AAX';

Mapping

Code1:

LOAD ID,

     DESCRIPCIÓN

Resident Tabla

where CATEGORÍA = 'ABX';

Desc:

LOAD Distinct

ID,

ApplyMap('code',ID) AS 'DESCRIPCIÓN AAX',

ApplyMap('Code1',ID) AS 'DESCRIPCIÓN ABX'

Resident Tabla;

drop table Tabla;

de ser en otra manera puedes usar un for

View solution in original post

5 Replies
ramoncova06
Specialist III
Specialist III

quieres hacer estos cambios en el script o en alguna tabla ?

Not applicable
Author

Idealmente en el script

saludos

ramoncova06
Specialist III
Specialist III

si tu tabla es asi de simple puedes intentar con mapping

Tabla:

LOAD ID,

     CATEGORÍA,

     DESCRIPCIÓN

FROM

Book1.xlsx

(ooxml, embedded labels, table is Sheet2);

Mapping

code:

LOAD ID,

     DESCRIPCIÓN

Resident Tabla

where CATEGORÍA = 'AAX';

Mapping

Code1:

LOAD ID,

     DESCRIPCIÓN

Resident Tabla

where CATEGORÍA = 'ABX';

Desc:

LOAD Distinct

ID,

ApplyMap('code',ID) AS 'DESCRIPCIÓN AAX',

ApplyMap('Code1',ID) AS 'DESCRIPCIÓN ABX'

Resident Tabla;

drop table Tabla;

de ser en otra manera puedes usar un for

alex_millan
Creator III
Creator III

Hola,

también puedes conseguirlo dividiendo la carga y haciendo un join:

Directory;

Tabla:

LOAD ID, DESCRIPCIÓN As [DESCRIPCIÓN AAX]

FROM Book1.xlsx (ooxml, embedded labels, table is Hoja1)

Where CATEGORÍA = 'AAX';

JOIN

LOAD ID, DESCRIPCIÓN As [DESCRIPCIÓN ABX]

FROM Book1.xlsx (ooxml, embedded labels, table is Hoja1)

Where CATEGORÍA = 'ABX';

Un saludo

Not applicable
Author

Gracias Ramón, con Mapping solucione el inconveniente.

Ya que la tabla no era tan simple como el ejemplo, en primer lugar realice  MAPPING y LOAD DISTINCT, solo con los campos claves, luego con LEFT JOIN agregue los demás datos a la tabla final

Muchas gracias

Saludos