Empty Flag

Begriffsklärung


Jedes Feld (in der Quellstruktur und der Zielstruktur) hat prinzipiell einen Wert (das ist mindestens ein leerer String "").

Zudem hat jeder Wert ein sogenanntes Empty Flag. Das Empty Flag ist eine Eigenschaft, die aussagt, ob ein Wert als leer (im Sinne von nicht vorhanden) angesehen werden soll, unabhängig davon, ob der Wert einen leeren String darstellt (es gibt also leere Strings mit und ohne Empty Flag und auch konkrete Werte mit Empty Flag, wie wir später sehen werden).

Hinweis: Genaugenommen hat ein Wert ein Empty Flag und ein Feld hat einen Wert. Zur Vereinfachung sprechen wir aber von einem Feld mit Empty Flag. Wenn das Empty Flag des Wertes eines Feldes true ist, dann sagt man auch das Feld hat ein Empty Flag und wenn das Empty Flag des Wertes eines Feldes false ist, dann sagt man auch das Feld hat kein Empty Flag.

Entstehung


Quellstruktur


  • Wenn man z. B. das Eingangsformat XML verwendet und in den Eingangsdaten fehlt ein Tag (das einem Quellstruktur-Feld entspricht), dann erhält das Quellstruktur-Feld einen leeren String und das Empty Flag. Dasselbe gilt für eine CSV-Quellstruktur mit x Feldern, wenn die Eingangsdatei nur x-1 Felder enthält. Das letzte Feld der Quellstruktur erhält dann einen leeren String und das Empty Flag.

  • In diesem Zusammenhang spielt auch die Option Leerer Wert gilt als 'nicht vorhanden' (Phase 2, Erweitert) eine Rolle. Ist die Option gesetzt und die Eingangsdaten für ein Quellstruktur-Feld (Datentyp CSV) enthalten lediglich einen leeren String, dann wird für das Quellstruktur-Feld ein leerer String gesetzt und das Empty Flag. Ist die Option nicht gesetzt, dann wird lediglich der leere String gesetzt, nicht aber das Empty Flag.

  • Einen weiteren Spezialfall finden Sie im Abschnitt "Versteckte Werte" beschrieben.

Zielstruktur


  • Einem Zielstruktur-Feld ist kein Quellstruktur-Feld zugewiesen (also nicht gemappt). Das Zielstruktur-Feld enthält zudem keine Funktionen und keinen Fixwert. In diesem Fall erhält das Zielstruktur-Feld einen leeren String und das Empty Flag.

  • Einem Zielstruktur-Feld ist ein Quellstruktur-Feld zugewiesen (also gemappt). Das Zielstruktur-Feld enthält zudem keine Funktionen und keinen Fixwert. In diesem Fall erhält das Zielstruktur-Feld den Wert und das Empty Flag des Quellstruktur-Felds (falls es eines hat).

  • Explizites Setzen des Empty Flags für ein Zielstruktur-Feld mit Funktion set empty flag(a). Die Funktion setzt einen leeren String und das Empty Flag.

  • Es gibt eine Reihe weiterer Funktionen, die ein Empty Flag setzen können. Hier bitte die jeweiligen Funktionsdokumentationen beachten.

Prüfung auf Empty Flag


Mit der Funktion get empty flag(a) kann geprüft werden, ob das Empty Flag gesetzt ist für ein (Quell- oder Zielstruktur-) Feld.

Versteckte Werte


Mit "versteckt" ist hier gemeint, dass Felder mit diesen Werten im Mappingtest mit no value angezeigt werden, intern ist aber ein Wert vorhanden, der wegen des gesetzten Empty Flags nicht sichtbar wird. Versteckte Werte können auf folgende Weise zustande kommen.


  • Ein Feld der Quellstruktur hat den Typ Date und der Parser konnte den Wert der Eingangsdaten für dieses Feld nicht erfolgreich mithilfe dessen Templates in ein Datum parsen. In diesem Fall erhält das Quellstruktur-Feld das aktuelle Datum und zudem das Empty Flag. Im Mappingtest wird man also no value angezeigt bekommen (Im Log des Tests kann man aber die Zuordnung des aktuellen Datums sehen). Wie bereits erwähnt wird auch ein gemapptes Zielstruktur-Feld diesen versteckten Wert und das Empty Flag erhalten.

  • Verwendet ein Feld der Zielstruktur eine der Funktionen create date strict(value a, template b, default c, [Locale d, Timezone e]), create date strict(value a, adjustable template b, default c, [Locale d, Timezone e]), bzw. date-from-excel(text a, default b) dann gilt auch hier, dass das aktuelle Datum und das Empty Flag gesetzt werden, wenn mit dem in der Funktion angegebenen Wert und Template kein gültiges Datum erzeugt werden kann.

  • Als Result-Wert mancher Funktionen, wenn sie bereits einen versteckten Wert als Eingangswert erhalten. Hier bitte die jeweiligen Funktionsdokumentationen beachten.

  • Durch explizites Verwenden der Funktion set empty flag(a).

Auswirkung des Empty Flags und versteckte Werte


  • In einer erzeugten Ausgangsdatei wird meist für ein Zielstruktur-Feld mit Empty Flag kein Wert ausgegeben. Hier gibt es allerdings auch Ausnahmen bei denen die Ausgabe dieser Werte erzwungen werden kann (siehe z. B. die Option With empty fields in der XMLNoTemplateUnit). Das kann bei versteckten Datumswerten relevant sein. Dazu bitte die Dokumentation der jeweiligen Ausgabeart/Komponenten beachten.

  • In einem Mapping-Test wird ein Feld mit gesetztem Empty Flag mit no value angezeigt (in der Quellstruktur und der Zielstruktur).

  • Die Funktion get empty flag(a) liefert (für Quellstruktur- und Zielstruktur-Felder) das Ergebnis true. Das würde er nicht tun, wenn das Feld den Wert "" (also einen leerer String, d. h. einen String der Länge 0) zugeordnet hätte und kein Empty Flag.

  • Es gibt auch Funktionen, die versteckte Werte als Eingabeparameter erlauben. Als Beispiel seien hier die Funktionen concat( a, b ) und concat(a,b,c,d,e,f,g,h) genannt. Auch hier bitte die jeweiligen Funktionsdokumentationen beachten. Werden Feldwerte einer Liste hinzugefügt, dann werden versteckte Werte evtl. in die Liste geschrieben. Siehe z. B. Funktion add to list(unique value a, name of list b, [skip empty c]).

  • In SQL-Anweisungen in Phase 4 können Werte mit gesetztem Empty Flag übersprungen werden.