Ga naar hoofdinhoud Ga naar aanvullende inhoud

Mapping gebruiken als alternatief voor joins

Het prefix Join in Qlik Sense is een krachtige manier om meerdere gegevenstabellen te combineren in het gegevensmodel.

Een nadeel is dat de gecombineerde tabellen groot kunnen worden, wat leidt tot een lagere snelheid. Een alternatief voor Join in situaties waarin u één waarde moet opzoeken uit een andere tabel, is het gebruik van mapping. U hoeft dan geen onnodige gegevens te laden die de berekeningen trager maken en rekenfouten kunnen veroorzaken omdat joins het aantal records in de tabellen kunnen veranderen.

Een toewijzingstabel bestaat uit twee kolommen: een vergelijkingsveld (invoer) en een veld met de toewijzingswaarde (uitvoer).

In dit voorbeeld hebben we een tabel met orders (Orders) en willen we het land van de klant weten. Dit is opgeslagen in de klantentabel (Customers).

Gegevenstabel Orders
OrderIDOrderDateShipperIDFreightCustomerID
129872007-12-011273
129882007-12-011654
129892007-12-022322
129902007-12-031763
Gegevenstabel Customers
CustomerIDNaamLand:...
1DataSalesSpain...
2BusinessCorpItaly...
3TechCoGermany...
4MobechoFrance...

Om het land (Country) van een klant op te zoeken, hebben we een toewijzingstabel nodig die er als volgt uitziet:

Toewijzingstabel
CustomerIDLand:
1Spain
2Italy
3Germany
4France

De toewijzingstabel die we MapCustomerIDtoCountry noemen, wordt in het script als volgt gedefinieerd:

MapCustomerIDtoCountry: Mapping LOAD CustomerID, Country From Customers ;

In de volgende stap passen we de toewijzing toe met de functie ApplyMap tijdens het laden van de tabel met bestellingen:

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

De derde parameter van de functie ApplyMap legt vast wat moet worden geretourneerd als de waarde niet wordt gevonden in de toewijzingstabel, in dit geval Null().

De resulterende tabel ziet er als volgt uit:

Resultaattabel
OrderIDOrderDateShipperIDFreightCustomerIDLand:
129872007-12-011273Germany
129882007-12-011654France
129892007-12-022322Italy
129902007-12-031763Germany

Meer informatie

 

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!