Altova MapForce 2024 Professional Edition

Beispiel: Erstellen von Hierarchien anhand von CSV- und FLF-Dateien

Zur Startseite Zurück Nach oben Weiter

Sie finden dieses Beispiel im Ordner <Dokumente>\Altova\MapForce2024\MapForceExamples\ unter Tut-headerDetail.mfd. In diesem Beispiel wurde eine CSV-Datei (Orders.csv) mit dem folgenden Format verwendet:

 

Field 1: H definiert einen Header-Datensatz und D einen Detail-Datensatz.

Field 2: Ein gemeinsamer Schlüssel sowohl für Header- als auch Detail-Datensätze.

Jeder Header- oder Detail-Datensatz befindet sich in einer eigenen Zeile.

 

Nachfolgend sehen Sie den Inhalt der Datei Orders.csv.

Head-detail-01

Ziel dieses Mapping ist:

 

die Flat File CSV-Datei auf eine hierarchische XML-Datei zu mappen

die mit einem H gekennzeichneten Header-Datensätze zu filtern  

die entsprechenden Detail-Datensätze, die mit einem D gekennzeichnet sind, mit den einzelnen Header-Datensätzen zu verknüpfen.

 

 

Tut-headerDetail-ENT

tut-headerDetail.mfd

Damit dies möglich ist, müssen die Header- und Detail-Datensätze ein gemeinsames Feld haben. In diesem Fall handelt es sich beim gemeinsamen Feld/Schlüssel um das zweite Feld in der CSV-Datei, nämlich OrderNo. In der CSV-Datei enthalten sowohl der erste Header-Datensatz als auch die folgenden beiden Detail-Datensätze den gemeinsamen Wert 111.

 

Die Datei Orders.csv wurde zweimal eingefügt, um das Mapping intuitiver zu machen.

 

Die Schema-Datei Tut-headerDetail.xsd hat eine hierarchische Struktur: "Order" ist das Root-Element, das das Child-Element "Header" enthält, das wiederum das Child-Element "Detail" enthält.

 

Die erste Orders.csv-Datei liefert die Header-Datensätze (und alle gemappten Felder) für das Header-Datenelement in der Schema-Zieldatei. Mit Hilfe der filter-Komponente werden alle Datensätze mit Ausnahme derer, die mit H beginnen herausgefiltert. Das Rows-Datenelement liefert die gefilterten Datensätze für das Header-Datenelement in der Schema-Datei.

 

Die zweite Orders.csv-Datei liefert die Detail-Datensätze (und alle gemappten Felder), indem die Detail-Datensätze, die mit dem OrderNo-Schlüssel des Header-Datensatzes übereinstimmen, herausgefiltert werden. Dies geschieht folgendermaßen:

 

Das OrderNo-Feld des Header-Datensatzes wird mit Hilfe der equal-Funktion (der Prioritätskontext wird aus Gründen der Effizienz für den Parameter a festgelegt) mit demselben Feld der Details-Datensätze verglichen.

Die Logical-and-Funktion wird verwendet, um nur diejenigen Detail-Datensätze weiterzugeben, die dasselbe OrderNo-Feld enthalten, wie der Header-Datensatz.

 

Über den on-true-Parameter der Filter-Komponente liefert das Datenelement Rows diese gefilterten Datensätze an die Datenelemente "Header" und "Detail" in der Schema-Datei.

 

Wenn Sie auf die Schaltfläche "Ausgabe" klicken, wird die unten gezeigte XML-Datei erzeugt. Jeder Header-Datensatz enthält die dazugehörigen Daten sowie alle damit verknüpften Detail-Datensätze mit derselben Bestellnummer (OderNo).

Head-detail-2

 

Werfen wir kurz einen Blick auf eine andere Beispieldatei, in der eine etwas andere CSV-Datei verwendet wird. Die Datei befindet sich unter dem Namen Head-detail-inline.mfd im Ordner <Dokumente>\Altova\MapForce2024\MapForceExamples\. Dies sind die Unterschiede:

 

Es ist hier keine Datensatzkennung (H, or D) vorhanden

Es gibt jedoch weiterhin ein gemeinsames Schlüsselfeld für den Header- und die Detail-Datensätze (Head-key, Detail-key...), nämlich das erste Feld in der CSV-Datei. Das Feld wird auf OrderNo im Zielschema gemappt.

"Header" und alle entsprechenden "Detail"-Felder befinden sich alle in derselben Zeile.

csv-hier-1

Das Mapping wurde folgendermaßen erstellt:

Die Schlüsselfelder werden auf die entsprechenden OrderNo-Datenelemente im Zielschema gemappt.

Das Datenelement "Detail" in der Schema-Zieldatei wurde dupliziert und wird als Detail (2) angezeigt, damit Sie den zweiten Satz von Detail-Datensätzen auf das richtige Datenelement mappen können.

Als Ergebnis dieses Mappings erhalten Sie in etwa dieselbe XML-Datei, wie im ersten Beispiel.

 

Head-detail-inline-ENT

Head-detail-inline.mfd

© 2017-2023 Altova GmbH