Utilisation du mapping comme alternative à la jointure
Le préfixe Join est un excellent moyen d'associer plusieurs tables de données dans le modèle de données dans Qlik Sense.
Cette méthode présente toutefois l'inconvénient, avec des tables combinées devenues volumineuses, d'entraîner des problèmes de performances. Lorsque vous devez rechercher une valeur unique dans une autre table, l'utilisation du mapping est une alternative au préfixe Join. Cela vous évite de charger des données inutiles qui ralentissent les calculs et risquent de créer des erreurs, car les jointures peuvent modifier le nombre d'enregistrements dans les tables.
Une table de mapping se compose de deux colonnes : un champ de comparaison (en entrée) et un champ de valeur de mapping (en sortie).
Cet exemple illustre une table de commandes (Orders). Nous aimerions connaître les pays des clients, qui sont stockés dans la table de clients (Customers).
| OrderID | OrderDate | ShipperID | Freight | CustomerID |
|---|---|---|---|---|
| 12987 | 2007-12-01 | 1 | 27 | 3 |
| 12988 | 2007-12-01 | 1 | 65 | 4 |
| 12989 | 2007-12-02 | 2 | 32 | 2 |
| 12990 | 2007-12-03 | 1 | 76 | 3 |
| CustomerID | Name | Country | ... |
|---|---|---|---|
| 1 | DataSales | Spain | ... |
| 2 | BusinessCorp | Italy | ... |
| 3 | TechCo | Germany | ... |
| 4 | Mobecho | France | ... |
Pour rechercher le pays (Country) d'un client, nous avons besoin d'une table de mapping similaire à la suivante :
| CustomerID | Country |
|---|---|
| 1 | Spain |
| 2 | Italy |
| 3 | Germany |
| 4 | France |
La table de mapping, que nous avons nommée MapCustomerIDtoCountry, est définie dans le script de la façon suivante :
L'étape suivante consiste à appliquer le mapping au moyen de la fonction ApplyMap lors du chargement de la table de commandes :
Le troisième paramètre de la fonction ApplyMap sert à définir la valeur renvoyée lorsqu'aucune valeur n'est trouvée dans la table de mapping, Null() dans le cas présent.
Le tableau de résultats aura l'aspect suivant :
| OrderID | OrderDate | ShipperID | Freight | CustomerID | Country |
|---|---|---|---|---|---|
| 12987 | 2007-12-01 | 1 | 27 | 3 | Germany |
| 12988 | 2007-12-01 | 1 | 65 | 4 | France |
| 12989 | 2007-12-02 | 2 | 32 | 2 | Italy |
| 12990 | 2007-12-03 | 1 | 76 | 3 | Germany |