Nettoyage de données
En chargeant des données provenant de différentes tables, vous remarquerez que des valeurs de champ renvoyant au même élément ne sont pas toujours nommées de façon cohérente. Ces incohérences ne sont pas seulement agaçantes, mais elles empêchent aussi les associations ; il faut donc résoudre le problème. Pour remédier à ce problème de manière simple, il suffit de créer une table de mappage destinée à comparer les valeurs des champs.
Tables de mappage
Les tables chargées via mapping load ou mapping select sont traitées différemment des autres tables. Elles sont stockées dans une zone distincte de la mémoire et sont utilisées uniquement comme tables de mappage au cours de l'exécution du script. Après l'exécution du script, elles sont automatiquement supprimées.
Règles :
- Une table de mappage doit comprendre deux colonnes, la première contenant les valeurs de comparaison et la seconde les valeurs de mappage voulues.
- Les deux colonnes doivent être nommées, mais les noms ne sont pas importants en eux-mêmes. Ils sont sans rapport avec les noms des champs dans les tables internes normales.
Utilisation d'une table de mappage
En chargeant plusieurs tables répertoriant des pays, il se peut qu'un même pays soit classé sous différents noms. Dans cet exemple, les États-Unis figurent dans la liste sous les formes US, U.S. et United States.
Pour éviter la présence de trois enregistrements différents renvoyant aux États-Unis dans la table concaténée, créez une table similaire à la table affichée et chargez-la comme table de mappage.
Le script intégral devrait ressembler à l'exemple suivant :
CountryMap:
Mapping LOAD x,y from MappingTable.txt
(ansi, txt, delimiter is ',', embedded
labels);
Map Country using CountryMap;
LOAD Country,City from CountryA.txt
(ansi, txt, delimiter is ',', embedded labels);
LOAD Country, City from CountryB.txt
(ansi, txt, delimiter is ',', embedded labels);
L'instruction mapping charge le fichier MappingTable.txt en tant que table de mappage dotée de l'étiquette CountryMap.
L'instruction map permet de mapper le champ Country à l'aide de la table de mappage CountryMap précédemment chargée.
Les instructions LOAD chargent les tables CountryA et CountryB. Ces tables, qui seront concaténées parce qu'elles possèdent le même ensemble de champs, incluent le champ Country dont les valeurs seront comparées à celles de la première colonne de la table de mappage. Les valeurs de champ US, U.S. et United States seront détectées et remplacées par les valeurs de la deuxième colonne de la table de mappage, c'est-à-dire USA.
Le mappage automatique est effectué en dernier dans la chaîne des événements qui mène au stockage du champ dans la table Qlik Sense. Pour une instruction LOAD ou SELECT type, les événements se déroulent à peu près dans l'ordre suivant :
- Évaluation des expressions
- Changement de nom des champs à l'aide d'as
- Changement de nom des champs à l'aide d'alias
- Qualification du nom de la table, le cas échéant
- Mappage des données si les noms des champs correspondent
Cela signifie que le mappage n'est pas effectué chaque fois qu'un nom de champ est rencontré dans une expression, mais plutôt quand la valeur est stockée sous ce nom de champ dans la table Qlik Sense.
Pour désactiver le mappage, utilisez l'instruction unmap.
Pour effectuer un mappage au niveau de l'expression, utilisez la fonction applymap.
Pour effectuer un mappage au niveau de la sous-chaîne, utilisez la fonction mapsubstring.