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é.

Announcements
QlikWorld, June 24-25, 2020. Free virtual event for DI and DA gurus. Register Now
Highlighted
Contributor III
Contributor III

Tables de mappage

Bonjour,

Dans ce tutoriel nous allons voir ensemble une façon alternative à la jointure entre deux tables. Il s'agit de la table de mappage.

Le principe de la table de mappage est simple. Cette dernière doit contenir deux colonnes, la première contient le code qui va servir à la comparaison et la seconde colonnes contient la valeur (résultat voulu).

Récapitulons, une table de mappage contient deux colonnes (code, valeur). En lui donnant un code, on obtient la valeur correspondant. Les tables de mappage sont des tables temporaires, c'est à dire qu'elles sont supprimées à la fin du chargement.


Ne vous inquiétez pas, on va voir un exemple et ça sera plus clair Complice.

Supposons qu'on a une table "ventes" qui contient les colonnes (id_ventes, montant_ventes, Code_ISO) et qu'on veut avoir le nom du pays à la place de son code ISO.


Pour cela, nous allons suivre ces deux étapes:

1- Créer une table de mappage qui va contenir le Code_ISO et le Nom_Pays (l'ordre est important)
2- Charger la table "ventes" en la mappant avec notre table de mappage (via le code_ISO) pour récupérer le Nom_Pays

1- Créer une table de mappage qui va contenir le Code_ISO et le Nom_Pays (l'ordre est important)

La table de mappage est une table comme toutes les autres tables. Ellle doit être précédée par l'agrégat Mapping (avant Load) et contenir deux colonnes (code, valeur).

Directory;

MaTableMappage:

Mapping LOAD Code_ISO,

            Nom_pays         

FROM MesVentes.xlsx(ooxml, embedded labels, table is Pays);

Remarque, pour ceux qui ne connaissent pas le prédicat Discovery, celui-ci permet de définir le répertoire où QlikView va charger les données dans le cas d'un chemin relatif.

2- Charger la table "ventes" en la mappant avec notre table de mappage (via le code_ISO) pour récupérer le Nom_Pays
Dans cette étape, nous allons ajouter une colonne "Nom_pays" (qui se trouve dans la table de mappage) à la table "ventes" en passant par la colonne Code_ISO (qui se trouve dans la table "ventes" et dans la table de mappage). Pour cela, nous allons utiliser la fonction ApplyMap.

La syntaxe de ApplyMapp est la suivante : ApplyMap('NonTableDeMappage', NomColonne_code,'ValeurParDéfaut'). 'ValeurParDéfaut' est facultatif.

Ventes:

LOAD Id_ventes,

     Montant_ventes,

     //Code_ISO,

    ApplyMap('MaTableMappage',Code_ISO,Null()) as [Nom de pays]

FROM MesVentes.xlsx (ooxml, embedded labels, table is ventes);

Voila, à ce stade nous avons ajouté la colonne "Nom_pays" à la table "ventes" (à la place de la colonne "Code_ISO").

         

Voila à quoi ressemble la table "Ventes"  avec une Zone de table avant et après la mappage.

         

Si vous vous avez des questions, n'hésitez à laisser un commentaire.

Lotfi BENKHIDER

www.qlikdiscovery.fr

Use Qalyptus for your Qlik Sense and QlikView Reporting
Connect with me on Linkedin
12 Replies
Highlighted
Contributor III
Contributor III

Re: Tables de mappage

Bonjour, et merci pour ce document.

Comment peut on gérer les valeurs avec apostrophe ?

Dans votre exemple, à la place de Null(), je voudrais mettre 'En cours d'utilisation', mais la quote dans le texte provoque une erreur.

Cdt,

Ulrich

Highlighted
Contributor III
Contributor III

Re: Tables de mappage

Bonjour,

pour la quote esseyez ça:

'En cours d'&chr(39)&'utilisation'

cdt

lotfi

Use Qalyptus for your Qlik Sense and QlikView Reporting
Connect with me on Linkedin
Highlighted
Contributor III
Contributor III

Re: Tables de mappage

Parfait !

Merci pour cette réponse non seulement concluante, mais aussi rapide

Cdt,

Ulrich

Highlighted
Not applicable

Re: Tables de mappage

Bonjour,

Je rencontre un problème de syntaxe lorsque je dois ajouter dans ma requête contenant ApplyMap une fonction SQL Select.

LOAD a as [varA],
ApplyMap('MappingTable',Code,Null()) as [CodeType]
SQL Select bdd.a
FROM wrh.basededonnees a
;

Savez-vous si il est possible de régler ce problème ?

Merci pour votre aide,

Cordialement.

Highlighted
Contributor III
Contributor III

Re: Tables de mappage

Salut Olivier,

Il te manque un point virgule ( ; ) juste après [Code Type].

Essayes ça ...

Cdt,

Lotfi

Use Qalyptus for your Qlik Sense and QlikView Reporting
Connect with me on Linkedin
Highlighted
Not applicable

Re: Tables de mappage

Salut Lotfi,

Merci pour ta réponse.

Malheureusement ça ne fonctionne pas (mais j'avais effectivement oublié le ';').

Voici le code complet :

Directory;
MappingTable:
Mapping LOAD Code,
CodeType
FROM
[..\CodeType.xlsx]
(
ooxml, embedded labels, table is Feuil1);

CodeCategory:
LOAD
a as [varA],
ApplyMap('MappingTable',Code,Null()) as [CodeType];
SQL Select bdd.a
FROM wrh.basededonnees a;

Lors du rechargement j'obtiens une erreur :

Champ introuvable - <Code>

SQL Select bdd.a

FROM wrh.basededonnees a;

Je te remercie !

Highlighted
Contributor III
Contributor III

Re: Tables de mappage

Ok !

Je crois que cette fois c'est la bonne

Dans la deuxième moitié de ton code mets ça :

CodeCategory:

LOAD

a as [varA],

ApplyMap('MappingTable',Code,Null()) as [CodeType],

bdd.a ;

SQL Select *

FROM wrh.basededonnees a;

ça devrais être bon ...

Lotfi

Use Qalyptus for your Qlik Sense and QlikView Reporting
Connect with me on Linkedin
Highlighted
Not applicable

Re: Tables de mappage

Merci Lotfi pour ton aide, cela fonctionne

Highlighted
Contributor III
Contributor III

Re: Tables de mappage

De rien !

bon courage

Use Qalyptus for your Qlik Sense and QlikView Reporting
Connect with me on Linkedin