Mapping als Alternative zu Joining
Der Zusatz Join bietet in QlikView eine leistungsstarke Funktion, die es ermöglicht, mehrere Datentabellen in einem Datenmodell zu kombinieren. Ein Nachteil davon ist jedoch, dass die kombinierten Tabellen sehr groß werden können, worunter möglicherweise die Performance leidet. Wenn Sie einen einzelnen Wert aus einer anderen Tabelle aufrufen müssen, ist Mapping eine Alternative zu Join. Dies kann Ihnen das Laden überflüssiger Daten ersparen, die Ihre Berechnungen nur unnötig verlangsamen und potenziell zu Berechnungsfehlern führen können, da sich durch Join-Befehle die Anzahl der Datensätze in den Tabellen ändern kann.
Eine Mapping-Tabelle besteht aus zwei Spalten, einem Vergleichsfeld (Eingabe) und einem Mapping-Feldwert (Ausgabe).
Diesem Beispiel liegt eine Tabelle mit Bestellungen (Orders) zugrunde und wir möchten erfahren, in welchem Land die jeweiligen Kunden beheimatet sind. Diese Information ist in der Kundentabelle (Customers) gespeichert.
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 |
CustomerID | Name | Country | ... |
---|---|---|---|
1 | DataSales | Spain | ... |
2 | BusinessCorp | Italy | ... |
3 | TechCo | Germany | ... |
4 | Mobecho | France | ... |
Zum Abrufen des Landes (Country) eines Kunden ist eine Mapping-Tabelle erforderlich, die folgendermaßen aussieht:
CustomerID | Country |
---|---|
1 | Spain |
2 | Italy |
3 | Germany |
4 | France |
Die Mapping-Tabelle mit dem Namen MapCustomerIDtoCountry ist im Skript folgendermaßen definiert:
Im nächsten Schritt wird das Mapping mithilfe der Funktion ApplyMap beim Laden der Tabelle mit den Bestellungen übernommen:
Anhand des Parameters der Funktion ApplyMap wird der Wert festgelegt, der zurückgegeben wird, wenn der Wert in der Mapping-Tabelle nicht gefunden wird, wie in diesem Fall Null().
Die sich ergebende Tabelle sieht folgendermaßen aus:
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 |