# Använda mappning som ett alternativ till länkning

Join-prefixet i QlikView är ett kraftfullt sätt att kombinera flera datatabeller i datamodellen. En nackdel är att de kombinerade tabellerna kan bli stora och skapa prestandaproblem. Ett alternativ till Join i situationer när du behöver slå upp ett enda värde från en annan tabell är att använda mappning i stället. Detta kan göra så att du slipper läsa in onödiga data som gör beräkningarna långsammare och kan skapa beräkningsfel, eftersom joins kan ändra antalet poster i tabellerna.

En mappningstabell består av två kolumner; ett jämförelsefält (indata) och ett mappningsvärdesfält (utdata).

I det här exemplet har vi en tabell med order (Orders) och behöver veta kundens land, som lagras i kundtabellen (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 | ... |

För att slå upp landet (Country) för en kund behöver vi en mappningstabell som ser ut så här:

CountryCountry mapping table

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

Mappningstabellen, som vi kallar MapCustomerIDtoCountry, är definierad i skriptet enligt följande:

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

Nästa steg är att tillämpa mappningen med hjälp av ApplyMap-funktionen när vi läser in tabellen:

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

Den tredje parametern av ApplyMap-funktionen används för att definiera vad som ska returneras när värdet inte hittas i mappningstabellen, i det här fallet Null().

Tabellen som skapas ser ut så här:

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 |

## Mer information

* [ApplyMap - skriptfunktion](https://help.qlik.com/sv-SE/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/MappingFunctions/ApplyMap.htm)
* [Mapping](https://help.qlik.com/sv-SE/qlikview/September2026/Subsystems/Client/Content/QV_QlikView/Scripting/ScriptPrefixes/Mapping.htm)