Wertezuordnungen
Mit Hilfe der Wertezuordnungskomponente können Sie einen Wert mit Hilfe einer Lookup-Tabelle durch einen anderen Wert ersetzen. Eine solche Komponente verarbeitet immer nur einen Wert auf einmal, daher hat sie im Mapping einen Input und ein Ergebnis (result).
![mf_lookup_01](./images/mf_lookup_01.png)
Eine Wertezuordnung eignet sich, um einzelne Datenelemente in zwei Datensätzen zu mappen, um Datenelemente zu ersetzen. So könnten Sie z.B. in Form von Zahlen ausgedrückte Wochentage (1, 2, 3, 4, 5, 6 und 7) auf die Namen der einzelnen Wochentage ("Montag", "Dienstag", usw.) mappen. Oder Sie können die Namen der Monate ("Januar", "Februar", "März", usw.) auf die Zahlendarstellung der einzelnen Monate (1, 2, 3, usw.) mappen. Zur Mapping-Laufzeit werden die entsprechenden Werte entsprechend Ihrer benutzerdefinierten Lookup-Tabelle ersetzt. Die Werte in den beiden Datensätzen können einen unterschiedlichen Typ haben, doch müssen für jeden Datensatz Werte desselben Datentyps gespeichert sein.
Wertezuordnungskomponenten eignen sich für einfache Lookup-Verfahren, bei denen jeder Wert im ersten Datensatz einem einzigen Wert im zweiten Datensatz entspricht. Wenn ein Wert nicht in der Lookup-Tabelle gefunden wird, können Sie ihn entweder durch einen benutzerdefinierten Wert oder durch einen leeren Wert ersetzen oder ihn unverändert an die zweite Komponente übergeben. Wenn Sie Werte anhand komplexerer Kriterien nachschlagen oder filtern müssen, verwenden Sie stattdessen eine der Filterkomponenten.
Wenn Sie Code generieren oder eine MapForce Server-Ausführungsdatei anhand des Mappings generieren, wird die Lookup-Tabelle in den generierten Code bzw. die generierte Datei eingebettet. Daher empfiehlt es sich nur dann direkt im Mapping eine Lookup-Tabelle zu definieren, wenn sich Ihre Daten nicht ständig ändern und die Tabelle nicht sehr groß ist (nicht größer als einige hundert Einträge). Wenn sich die Lookup-Daten regelmäßig ändern, ist es oft schwierig sowohl das Mapping als auch den generierten Code regelmäßig auf aktuellem Stand zu halten. Es ist einfacher, die Lookup-Tabelle in Form einer Text-, XML-, Datenbank- oder eventuell Excel-Datei zu warten.
Bei sehr großen Lookup-Tabellen wird die Mapping-Ausführung durch die Lookup-Tabelle verlangsamt. In diesem Fall wird empfohlen, stattdessen eine Datenbankkomponente mit SQL-Where zu verwenden. Besonders gut dafür eigenen sich aufgrund Ihrer Portabilität SQLite-Datenbanken. Serverseitig können Sie die Performance von Lookup-Tabellen durch Ausführung eines Mappings mit der MapForce Server oder MapForce Server Advanced Edition verbessern.
Erstellen von Wertezuordnungen
Um eine Wertezuordnungskomponente zum Mapping hinzuzufügen, wählen Sie eine der folgenden Methoden:
•Klicken Sie auf die Symbolleisten-Schaltfläche Wertezuordnung einfügen .
•Klicken Sie im Menü Einfügen auf Wertezuordnung.
•Klicken Sie mit der rechten Maustaste auf eine Verbindung und wählen Sie im Kontextmenü den Befehl Wertezuordnung einfügen.
Daraufhin wird eine neue Wertezuordnungskomponente zum Mapping hinzugefügt. Sie können nun Datenelementpaare zur Lookup-Tabelle hinzufügen. Doppelklicken Sie dazu auf die Titelleiste der Komponente oder rechtsklicken Sie auf die Komponente und wählen Sie im Kontextmenü den Befehl Eigenschaften
![mf_lookup_02](./images/mf_lookup_02.png)
MapForce ersetzt die einzelnen Werte, die zum Input der Wertezuordnung gelangen zur Mapping-Laufzeit. Wenn die linke Spalte der Lookup-Tabelle einen übereinstimmenden Wert enthält, wird der Original-Input-Wert durch den Wert aus der rechten Spalte ersetzt. Andernfalls haben Sie die Möglichkeit, folgende Alternativen zu konfigurieren:
•einen Ersetzungswert. Im obigen Beispiel ist der Ersetzungswert der Text "incorrect date" (falsches Datum). Sie können auch festlegen, dass der Ersetzungswert leer ist, indem Sie keinen Text eingeben.
•den Original-Input-Wert: In diesem Fall wird der Original-Input-Wert unverändert an das Mapping übergeben, wenn die Lookup-Tabelle keine Entsprechung enthält.
Wenn Sie keine "Andernfalls"-Bedingung konfigurieren, wird jedes mal, wenn keine Entsprechung gefunden wird, ein leerer Node zurückgegeben. In diesem Fall wird nichts an die Zielkomponente übergeben und die Ausgabe enthält fehlende Felder. Um dies zu vermeiden, sollten Sie entweder die Andernfalls-Bedingung konfigurieren oder die Funktion substitute-missing verwenden. |
Es gibt einen Unterschied zwischen der Definition eines leeren Ersetzungswerts und einer überhaupt fehlenden Definition der Andernfalls-Bedingung. Im ersten Fall wird das Feld in der Ausgabe generiert, hat aber einen leeren Wert. Im zweiten Fall wird das Feld (oder XML-Element), das den Wert enthält, gar nicht erstellt. Nähere Informationen dazu finden Sie unter Beispiel: Ersetzen von Stellenbezeichnungen.
Befüllen einer Wertezuordnung
Sie können so viele Wertpaare wie nötig in einer Lookup-Tabelle definieren. Sie können die Werte manuell eingeben oder Tabellendaten aus Text-, CSV-, oder Excel-Tabellen hineinkopieren. In den meisten Fällen funktioniert es auch, wenn Sie Tabellen über einen gebräuchlichen Browser aus einer HTML-Seite kopieren und einfügen. Sie können Daten auch aus dem Datenbankraster im Fenster "DB-Abfrage" einfügen. Wenn Sie Daten aus Textdateien kopieren, müssen die Felder durch Tabulatorzeichen voneinander getrennt sein. Außerdem erkennt MapForce in den meisten Fällen durch Kommas oder Semikola getrennten Text.
Beachten Sie bei der Erstellung von Lookup-Tabellen die folgenden Punkte:
1.Alle Datenelemente in der linken Spalte müssen eindeutig sein. Andernfalls ließe sich nicht ermitteln, für welches Datenelement genau eine Entsprechung benötigt wird.
2.Datenelemente, die zur selben Spalte gehören, müssen denselben Datentyp haben. Sie können den Datentyp aus der Dropdown-Liste am oberen Rand der jeweiligen Spalte der Lookup-Tabelle auswählen. Um Boolesche Typen zu konvertieren, geben Sie den Text "true" oder "false" wortwörtlich ein. Ein Beispiel dazu finden Sie unter Beispiel: Ersetzen von Wochentagen.
Wenn MapForce in der Lookup-Tabelle ungültige Daten findet, wird eine Fehlermeldung angezeigt und die ungültigen Zeilen werden rosa markiert, z.B:
![mf_lookup_03](./images/mf_lookup_03.png)
So importieren Sie Daten aus einer externen Quelle in die Wertezuordnungskomponente:
1.Wählen Sie im Ausgangsprogramm (z.B. Excel) die entsprechenden Zellen aus. Dabei kann es sich entweder um eine einzelne Spalte oder um zwei benachbarte Spalten handeln.
2.Kopieren Sie die Daten mit dem Befehl Kopieren des externen Programms in die Zwischenablage.
3.Klicken Sie in der Wertezuordnungskomponente auf die Zeile, vor der die Daten eingefügt werden sollen.
4.Klicken Sie in der Wertezuordnungskomponente auf die Schaltfläche Tabelle aus der Zwischenablage einfügen oder drücken Sie alternativ dazu Strg+V oder Umschalt+Einfg.
Anmerkung: | Die Schaltfläche Tabelle aus der Zwischenablage einfügen ist nur dann aktiv, wenn Sie vorher Daten aus einer Ausgangsdatei kopiert haben (d.h. wenn sich in der Zwischenablage Daten befinden). |
Wenn Ihre Zwischenablage mehrere Spalten enthält, werden nur Daten aus den beiden ersten Spalten in die Lookup-Tabelle eingefügt, weitere Spalten werden ignoriert. Wenn Sie Daten aus einer einzigen Spalte über vorhandene Werte einfügen, erscheint ein Kontextmenü, in dem Sie gefragt werden, ob die Daten aus der Zwischenablage als neue Zeilen eingefügt werden sollen oder ob die vorhandenen Zeilen überschrieben werden sollen. Stellen Sie daher sicher, dass die Zwischenablage nur eine Spalte und nicht mehrere enthält, wenn Sie vorhandene Werte in der Lookup-Tabelle überschreiben möchten, anstatt neue Zeilen einzufügen.
Um Zeilen manuell vor einer vorhandenen Zeile einzufügen, klicken Sie auf die betreffende Zeile und anschließend auf die Schaltfläche Einfügen .
Um eine vorhandene Zeile an eine andere Position zu verschieben, ziehen Sie die Zeile (noch oben oder nach unten) an die neue Position, während Sie die linke Maustaste gedrückt halten.
Um Zeilen zu kopieren oder auszuschneiden, um sie an einer anderen Position einzufügen, wählen Sie die Zeile zuerst aus und klicken Sie anschließend auf die Schaltfläche Kopieren (bzw. Ausschneiden
). Sie können auch mehrere nicht unbedingt aufeinander folgende Zeilen kopieren oder ausschneiden. Halten Sie dazu beim Auswählen der Zeilen die Strg-Taste gedrückt. Beachten Sie, dass ausgeschnittener oder kopierter Text immer Werte aus beiden Spalten enthält. Sie können nicht Werte aus nur einer Spalte ausschneiden oder kopieren.
Um eine Zeile zu entfernen, klicken Sie darauf und anschließend auf die Schaltfläche Löschen .
Um die linke und die rechte Spalte zu vertauschen, klicken Sie auf die Schaltfläche Spalten tauschen .
Umbenennen von Wertezuordnungsparametern
Standardmäßig hat der Input-Parameter einer Wertezuordnungskomponente den Namen "input" und der Output-Parameter den Namen "result". Um das Mapping übersichtlicher zu machen, haben Sie die Möglichkeit, jeden dieser Parameter durch Klicken auf die Schaltfläche Bearbeiten neben dem jeweiligen Namen umzubenennen. Im Folgenden sehen Sie ein Beispiel für eine Wertezuordnung mit benutzerdefinierten Parameternamen:
![mf_lookup_04](./images/mf_lookup_04.png)
Vorschau auf eine Wertezuordnung
Nachdem Sie mit der Erstellung einer Wertezuordnung fertig sind, können Sie direkt über das Mapping schnell eine Vorschau darauf anzeigen, indem Sie die Maus über die Titelleiste der Komponente platzieren:
![mf_lookup_05](./images/mf_lookup_05.png)