Mapping als Alternative zu Joining

Der Zusatz Join bietet in Qlik Sense 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.

Orders-Datentabelle
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-Datentabelle
CustomerID Name Land ...
1 DataSales Spanien ...
2 BusinessCorp Italien ...
3 TechCo Deutschland ...
4 Mobecho Frankreich ...

Zum Abrufen des Landes (Country) eines Kunden ist eine Mapping-Tabelle erforderlich, die folgendermaßen aussieht:

Mapping-Tabelle
CustomerID Land
1 Spanien
2 Italien
3 Deutschland
4 Frankreich

Die Mapping-Tabelle mit dem Namen MapCustomerIDtoCountry ist im Skript folgendermaßen definiert:

MapCustomerIDtoCountry: Mapping LOAD CustomerID, Country From Customers ;

Im nächsten Schritt wird das Mapping mithilfe der Funktion ApplyMap beim Laden der Tabelle mit den Bestellungen übernommen:

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

Anhand des dritten Parameters der Funktion ApplyMap wird der Wert festgelegt, der ausgegeben wird, wenn der Wert in der Mapping-Tabelle nicht gefunden wird, wie in diesem Fall Null().

Die sich ergebende Tabelle sieht folgendermaßen aus:

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