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

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Datenquellen und -ziele > CSV- und Textdateien >

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

Sie finden dieses Beispiel im Ordner <Dokumente>\Altova\MapForce2019\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\MapForce2019\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


© 2019 Altova GmbH