Qlik Community

Groupe des Utilisateurs Francophones

Vous êtes francophone? Ce groupe est pour vous. Venez découvrir comment démarrer avec Qlik Sense et QlikView, poser vos questions et partager vos tutos et astuces avec les membres de notre communauté.

Highlighted
Not applicable

Clé composée de deux champs

Bonjour,

Comment faut-il s'y prendre afin de créer une clé unique composée de plusieurs champs ?

Voici un extrait des chargements de mes deux tables :

Table 1 :

Directory;

LOAD

     [N° de commande],

     [Grpe.acheteurs cmde],

     [Centre de coûts cmde],

     [Lib.c.coûts cmde],

     [Créé par],

     [Nom complet créé par],

     [Type commande],

     [N° article commande]

FROM

[test.xlsx]

(ooxml, embedded labels, table is [table 1]);

Table 2 :

Directory;

LOAD

     Sté,

     [org ciale],

     DA,

     PF,

     Energie,

     N°Pièce,

     Référence,

     [Date base],

     [Cde achat],

     Fournisseur,

     [Nom frs],

     [Cde vente],

     [Montant HT],

     [Montant TTC],

     Observation,

     OK,

     [Date Règlt],

     GR,

    DMR,

    [Nom du demandeur],

     Créateur,

     [Date de saisie],

     Portefeuille,

     [Lieu de livraison],

     [type de livraison],

     Motif,

     [Date d'extraction],

     Article

FROM

[test.xlsx]

(ooxml, embedded labels, table is [table 2]);

Je voudrais lier la table 1 et 2 grâce aux deux champs en rouge, à savoir N° de commande] et [N° article commande]  pour la table 1,

DMR et Article pour la table 2.


Une idée de comment m'y prendre ?


Merci d'avance de votre aide.

Tags (1)
1 Solution

Accepted Solutions
sfatoux72
Not applicable

Re: Clé composée de deux champs

Il faut créer un nouveau champs dans tes 2 tables avec le même nom

Table 1

AutoNumber([N° de commande] & '_' &  [N° article commande], 'CommandeArticle') as %key_commande_article

Table 2

AutoNumber(DMR & '_' & Article, 'CommandeArticle') as %key_commande_article

Ensuite, si une des 2 tables contient l'ensemble des combinaisons des champs de base, conserve les champs de base dans cette table, tu peux les supprimer de l'autre table.

Si les 2 tables contiennent des combinaisons n'existant pas dans l'autre table, Il faudra créer une table intermédiaire qui contiendra  les champs de base et la clé %key_commande_article de toutes les combinaisons distinctes des 2 tables et tu dois supprimer les champs de base des 2 tables.

4 Replies
sfatoux72
Not applicable

Re: Clé composée de deux champs

Il faut créer un nouveau champs dans tes 2 tables avec le même nom

Table 1

AutoNumber([N° de commande] & '_' &  [N° article commande], 'CommandeArticle') as %key_commande_article

Table 2

AutoNumber(DMR & '_' & Article, 'CommandeArticle') as %key_commande_article

Ensuite, si une des 2 tables contient l'ensemble des combinaisons des champs de base, conserve les champs de base dans cette table, tu peux les supprimer de l'autre table.

Si les 2 tables contiennent des combinaisons n'existant pas dans l'autre table, Il faudra créer une table intermédiaire qui contiendra  les champs de base et la clé %key_commande_article de toutes les combinaisons distinctes des 2 tables et tu dois supprimer les champs de base des 2 tables.

Not applicable

Re: Clé composée de deux champs

Super je te remercie ça marche impeccable !

ddocquoy
Not applicable

Re: Clé composée de deux champs

Bonjour,

Perso je fais uniquement la concaténation sans utiliser AutoNumber.

est ce que c'est plus optimal d'utiliser cette fonction donc ?

Et a quoi sers le %Key devant le nom du champ ?

Ou c'est juste une convention de nommage ?

Merci.

sfatoux72
Not applicable

Re: Clé composée de deux champs

Est ce que c'est plus optimal d'utiliser cette fonction donc ?

Si tu fais uniquement la concaténation, tu as des clés compréhensible (lisible).Mais sachant que tu conserves chaque valeurs distinctes de ta clé en mémoire, c'est moins couteux de conserver des chiffres que des chaines de caractère. C'est d'autant plus vrai si elles ont un nombre élevé de caractère et/ou si tu en as un nombre élevé de clé distincte.

Et a quoi sers le %Key devant le nom du champ ?

Ou c'est juste une convention de nommage ?

C'est une convention de nommage sur les clé technique (non utilisée dans l'interface) pour pouvoir les cacher aux utilisateurs (comme les champs système) en utilisant l'instruction suivante dans le script de chargement :   SET HidePrefix ='%' ;

HidePrefix ‒ QlikView