Mapping

Le préfixe mapping permet de créer une table de mappage pouvant servir, par exemple, à remplacer des valeurs de champ et des noms de champ lors de l'exécution du script.

Syntaxe :  

Mapping( loadstatement | selectstatement )

 

Vous pouvez insérer le préfixe mapping devant une instruction LOAD ou SELECT. Il stockera le résultat de l'instruction de chargement sous forme de table de mappage. Le préfixe mapping offre un moyen efficace de substituer des valeurs de champ lors de l'exécution du script, par ex. en remplaçant US, U.S. ou America par USA. Une table de mappage se compose de deux colonnes, la première contenant les valeurs de comparaison et la seconde contenant les valeurs de mappage voulues. Les tables de mappage sont stockées temporairement dans la mémoire et sont retirées automatiquement après l'exécution du script.

Le contenu de la table de mappage est accessible via, par exemple, l'instruction Map … Using, l'instruction Rename Field, la fonction Applymap() ou encore la fonction Mapsubstring().

Exemple :  

Dans cet exemple, nous chargeons une liste de représentants commerciaux accompagnés du code pays représentant leur pays de résidence. Nous utilisons une table mappant un code pays à un pays pour remplacer le code pays par le nom du pays. Seulement trois pays sont définis dans la table de mappage ; les autres codes pays sont mappés à l'entrée 'Rest of the world' (Autre pays).

// Load mapping table of country codes:
map1:
mapping LOAD *
Inline [
CCode, Country
Sw, Sweden
Dk, Denmark
No, Norway
] ;
// Load list of salesmen, mapping country code to country
// If the country code is not in the mapping table, put Rest of the world
Salespersons:
LOAD *,
ApplyMap('map1', CCode,'Rest of the world') As Country
Inline [
CCode, Salesperson
Sw, John
Sw, Mary
Sw, Per
Dk, Preben
Dk, Olle
No, Ole
Sf, Risttu] ;
// We don't need the CCode anymore
Drop Field 'CCode';

La table résultante a l'aspect suivant :

Salesperson Country
John Sweden
Mary Sweden
Per Sweden
Preben Denmark
Olle Denmark
Ole Norway
Risttu Rest of the world