Datenpflege durch Mapping
In der Praxis werden Sie merken, dass Feldwerte aus mehreren Tabellen oft unterschiedliche Bezeichnungen oder Schreibweisen haben, obwohl der Informationsgehalt derselbe ist. Das ist nicht nur unübersichtlich, sondern auch deshalb ungünstig, weil in der Software inhaltlich korrekte Verknüpfungen nicht zustande kommen, wenn die Schreibweise nicht exakt übereinstimmt. Dieses Problem lässt sich durch Mapping beheben.
Mapping-Tabellen
Bei Tabellen, die durch mapping load oder mapping select geladen werden, erfolgt die Speicherung in einem separaten Bereich. Sie werden lediglich während der Ausführung des Skripts für das Mapping benötigt und separat gespeichert. Nach Ausführung des Skripts werden sie automatisch gelöscht.
Es gilt:
- Mapping-Tabellen bestehen aus zwei Spalten: Die erste enthält Vergleichswerte, die zweite die gewünschten Mapping-Werte.
- Die zwei Spalten müssen benannt werden, doch die Namen haben keine Relevanz. Die Spaltennamen müssen keine Verbindung zu Feldnamen in normalen internen Tabellen haben.
Mit Mapping-Tabellen arbeiten
Beim Laden von länderspezifischen Daten kommt es vor, dass verschiedene Schreibweisen für ein und dasselbe Land verwendet werden. In diesem Beispiel werden die U.S.A. auch als US, U.S. und United States bezeichnet.
Um eine einheitliche Schreibweise und die passenden Verknüpfungen herzustellen, nutzen Sie eine Mapping-Tabelle wie in der Abbildung.
Das Skript sieht nun folgendermaßen aus:
CountryMap:
Mapping LOAD x,y from MappingTable.txt
(ansi, txt, delimiter is ',', embedded
labels);
Map Country using CountryMap;
LOAD Country,City from CountryA.txt
(ansi, txt, delimiter is ',', embedded labels);
LOAD Country, City from CountryB.txt
(ansi, txt, delimiter is ',', embedded labels);
Der Befehl mapping lädt die Datei MappingTable.txt als Mapping-Tabelle mit der Bezeichnung CountryMap.
Der Befehl map aktiviert das Mapping für das Feld Country anhand der bereits geladenen Mapping-Tabelle CountryMap.
Der Befehl LOAD lädt die Tabellen CountryA und CountryB. Beim Ladevorgang werden die beiden Tabellen automatisch zu einer zusammengefasst, aufgrund der Tatsache, das sie exakt dieselben Feldnamen enthalten. Dann werden die Werte des Feldes Country mit den Vergleichswerten in der ersten Spalte der Mapping-Tabelle verglichen. Die Werte US, U.S. und United States werden durch die in der zweiten Spalte der Tabelle angegebenen Werte ersetzt, etwa durch den Wert USA.
Das Mapping ist stets der letzte Schritt des Ladevorgangs, bevor das Feld in der Qlik Sense-Tabelle gespeichert wird. Bei einer typischen LOAD- oder SELECT-Anweisung ist die Reihenfolge der Ereignisse in etwa wie folgt:
- Auswertung von Formeln
- Umbenennen von Feldern mit as
- Umbenennen von Feldern mit alias
- Qualifizierung von Feldern
- Daten-Mapping bei Übereinstimmung des Feldnamens
Das bedeutet, das Mapping geschieht nicht immer dann, wenn ein Feldname als Teil einer Formel auftaucht, sondern erst direkt vor dem Speichern des Werts in einer Qlik Sense-Tabelle.
Sollen nachfolgend geladene Werte nicht mehr gemappt werden, verwenden Sie den Befehl unmap. Er beendet das Mapping.
Mapping in Formeln erreichen Sie durch die Funktion applymap.
Um Teile von Werten zu mappen, benutzen Sie die Funktion mapsubstring.