# Utilizzo del mapping come alternativa all'unione

Il prefisso Join in QlikView è 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 il paese del cliente, memorizzato nella tabella dei clienti (Customers).

OrdersOrders data table

| 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 |

CustomersCustomers data table

| CustomerID | Name | Country | ... |
| --- | --- | --- | --- |
| 1 | DataSales | Spain | ... |
| 2 | BusinessCorp | Italy | ... |
| 3 | TechCo | Germany | ... |
| 4 | Mobecho | France | ... |

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

CountryCountry mapping table

| CustomerID | Country |
| --- | --- |
| 1 | Spain |
| 2 | Italy |
| 3 | Germany |
| 4 | France |

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:      S *,           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:

Result mapping table

| 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 |

## Ulteriori informazioni

* [ApplyMap - funzione di script](https://help.qlik.com/it-IT/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/MappingFunctions/ApplyMap.htm)
* [Mapping](https://help.qlik.com/it-IT/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptPrefixes/Mapping.htm)