QlikWorld 2020 – global konferens. Kom och upptäck hur du utnyttjar dina data på bästa sätt. Agera nu. Registrera dig nu och spara.

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

Orders-datatabell
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
Customers-datatabell
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:

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:

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

Hjälpte den här informationen?

Tack för att du berättar det här. Är det något du vill säga om det här avsnittet?

Varför var informationen inte till hjälp och hur kan vi förbättra den?