Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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 .
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
Bonjour,
Merci pour ce tutoriel. Du coup j'essaie cette méthode.... mais j'ai un problème de syntaxe. Si c'est possible de m'aider svp :
DIRECTORY;
MaTableMappage :
LOAD "Date comptabilisation",
PDP
FROM
C:\Users\mmollaret\Desktop\bornes.xls
(biff, embedded labels, table is bornes$);
ODBC CONNECT TO [navision ETL_MILLET SQL];
SQL SELECT "Code catégorie article",
year ("Date comptabilisation") as ANNEE,
month ("Date comptabilisation") as MOIS,
"N° article" as REF,
"N° document",
//"Date comptabilisation",
ApplyMap('MaTableMappage',"Date comptabilisation",Null()) as [Nom de PDP]
FROM "ETL_MILLET".dbo."a_Ecriture article"
where year("Date comptabilisation") > 2013;
Merci
Bonjour,
Je souhaiterais relier deux tables mais je dois charger la table à mapper avec la table de mappage en "crosstable". Comment faire pour que le mappage fonctionne quand même ? Pour l'instant cela ne marche pas lorsque je mets ApplyMap à la fin du script de la crosstable. Il y a t il quelque chose à ajouter ?
Je vous remercie par avance.