Använda mappning som ett alternativ till länkning

Join-prefixet i Qlik Sense ä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 länder, som finns lagrade 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 Namn Land ...
1 DataSales Spanien ...
2 BusinessCorp Italien ...
3 TechCo Tyskland ...
4 Mobecho Frankrike ...

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

Mappningstabell
CustomerID Land
1 Spanien
2 Italien
3 Tyskland
4 Frankrike

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 funktionen ApplyMap när vi laddar sorteringstabellen:

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

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

Tabellen som skapas ser ut så här:

Resultattabell
OrderID OrderDate ShipperID Freight CustomerID Land
12987 2007-12-01 1 27 3 Tyskland
12988 2007-12-01 1 65 4 Frankrike
12989 2007-12-02 2 32 2 Italien
12990 2007-12-03 1 76 3 Tyskland

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?