Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Join us to spark ideas for how to put the latest capabilities into action. Register here!
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