Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
chris987
Contributor III
Contributor III

Conception d'une table à partir d'une autre

Bonjour à tous,

Je travaille sur un projet qui me dépasse un peu, et j'ai une problème sur la conception des données dans le script.

Peut être pourriez-vous m'aider.

J'ai une table comme celle-ci :

ArticleCaractéristiqueValeur caractéristique
40312PHOTOCONNAUSB2 TYPE A M
40312PHOTOCONNBUSB2 TYPE A F
40312LONGCABLE12
40312COULEURBlanc
40312ORNon
40312CONFIGConfigurateur

Je souhaiterai à partir du script obtenir ceci :

CARTPHOTOCONNAPHOTOCONNBLONGCABLECOULEURORCONFIG
40312USB2 TYPE A MUSB2 TYPE A F12BlancNonConfigurateur

De plus en fonction de l'article (clé) il y a plus ou moins de caractéristiques (ici 6 caractéristiques), mais cela peu aller de aucune à 10.

Est-ce possible simplement ?

Merci pour toute aide que vous pourrez m'apporter.

Christophe

1 Solution

Accepted Solutions
mambi
Creator III
Creator III

Bonjour tu peux faire ça  :

original:
LOAD * INLINE [
     Article, Caractéristique, Valeur caractéristique
     40312, PHOTOCONNA, USB2 TYPE A M
     40312, PHOTOCONNB, USB2 TYPE A F
     40312, LONGCABLE, 12
     40312, COULEUR, Blanc
     40312, OR, Non
     40312, CONFIG, Configurateur
     50201, PHOTOCONNA, USB3 TYPE A Z
     50201, PHOTOCONNB, USB4 TYPE A U
     50201, LONGCABLE, 24
     50201, COULEUR, Blanc
     50201, OR, OUI
     50201, CONFIG, Configurateur
];

temp1:
generic load * resident original;

result:
load distinct Article resident original;

drop table original;

FOR i = 0 to NoOfTables()
TableList:
LOAD TableName($(i)) as Tablename AUTOGENERATE 1
WHERE WildMatch(TableName($(i)), 'temp1.*');
NEXT i

FOR i = 1 to FieldValueCount('Tablename')
LET vTable = FieldValue('Tablename', $(i));
LEFT JOIN (result) LOAD * RESIDENT $(vTable);
DROP TABLE $(vTable);
NEXT i

drop table TableList;


View solution in original post

4 Replies
almamy_diaby
Creator
Creator

Bonjour,

Combien y a t-il de caractéristiques distinctes ?

mambi
Creator III
Creator III

Bonjour tu peux faire ça  :

original:
LOAD * INLINE [
     Article, Caractéristique, Valeur caractéristique
     40312, PHOTOCONNA, USB2 TYPE A M
     40312, PHOTOCONNB, USB2 TYPE A F
     40312, LONGCABLE, 12
     40312, COULEUR, Blanc
     40312, OR, Non
     40312, CONFIG, Configurateur
     50201, PHOTOCONNA, USB3 TYPE A Z
     50201, PHOTOCONNB, USB4 TYPE A U
     50201, LONGCABLE, 24
     50201, COULEUR, Blanc
     50201, OR, OUI
     50201, CONFIG, Configurateur
];

temp1:
generic load * resident original;

result:
load distinct Article resident original;

drop table original;

FOR i = 0 to NoOfTables()
TableList:
LOAD TableName($(i)) as Tablename AUTOGENERATE 1
WHERE WildMatch(TableName($(i)), 'temp1.*');
NEXT i

FOR i = 1 to FieldValueCount('Tablename')
LET vTable = FieldValue('Tablename', $(i));
LEFT JOIN (result) LOAD * RESIDENT $(vTable);
DROP TABLE $(vTable);
NEXT i

drop table TableList;


chris987
Contributor III
Contributor III
Author

Bonjour Almamy,

Il y a 32 caractéristiques possibles, mais à terme cela peu évoluer.

Merci

Christophe

chris987
Contributor III
Contributor III
Author

Bonjour Mambi,

Je n'ai pas tout compris au code, mais cela fonctionne très bien.

Merci beaucoup

Christophe