# Utilizzo del mapping come alternativa all'unione

Il prefisso Join in Qlik Sense è un metodo efficace per la combinazione di più tabelle dati nel modello dati.

Uno dei suoi svantaggi è che le dimensioni delle tabelle combinate possono diventare eccessive creando problemi di prestazioni. Una soluzione alternativa a Join nei casi in cui occorra ricercare un unico valore in un'altra tabella è quella di utilizzare il mapping. Ciò evita di dover caricare dati superflui che rallentano i calcoli e possono creare errori di calcolo, dato che le unioni possono modificare il numero di record nelle tabelle.

Una tabella di mapping è composta da due colonne; un campo di confronto (input) e un campo con il valore del mapping (output).

In questo esempio, occorre presentare una tabella di ordini (Orders) ed è necessario conoscere i paesi dei clienti, memorizzati nella tabella dei clienti (Customers).

Tabella dati OrdersOrders

| IDOrdine | DataOrdine | ShipperID | Spedizione | 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 |

Tabella dati CustomersCustomers

| CustomerID | Nome | Paese | ... |
| --- | --- | --- | --- |
| 1 | DatiVendite | Spagna | ... |
| 2 | BusinessCorp | Italia | ... |
| 3 | TechCo | Germania | ... |
| 4 | Mobecho | Francia | ... |

Per poter ricercare il paese (Country) di un cliente, occorre una tabella di mapping come quella seguente:

Tabella di mapping

| CustomerID | Paese |
| --- | --- |
| 1 | Spagna |
| 2 | Italia |
| 3 | Germania |
| 4 | Francia |

La tabella di mapping, denominata MapCustomerIDtoCountry, viene definita nello script nel modo seguente:

```
     MapCustomerIDtoCountry:
     Mapping LOAD CustomerID, Country From Customers ;
     
```

Il passaggio successivo è quello di applicare il mapping mediante la funzione ApplyMap durante il caricamento della tabella dell'ordine:

```
Orders:
     LOAD *,
          ApplyMap('MapCustomerIDtoCountry', CustomerID, null()) as Country
          From Orders ;
     
```

Il terzo parametro della funzione ApplyMap viene utilizzato per definire i valori da restituire quando il valore non è stato trovato nella tabella di mapping, in questo caso Null().

La tabella risultante avrà l'aspetto seguente:

Tabella risultante

| IDOrdine | DataOrdine | ShipperID | Spedizione | CustomerID | Paese |
| --- | --- | --- | --- | --- | --- |
| 12987 | 2007-12-01 | 1 | 27 | 3 | Germania |
| 12988 | 2007-12-01 | 1 | 65 | 4 | Francia |
| 12989 | 2007-12-02 | 2 | 32 | 2 | Italia |
| 12990 | 2007-12-03 | 1 | 76 | 3 | Germania |

## Ulteriori informazioni

* [ApplyMap Funzione script](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/MappingFunctions/ApplyMap.htm)
* [Mappatura](https://help.qlik.com/it-IT/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Mapping.htm)