Textverkettungsprojektion

Projektion - Kurzfassung

Zweck: Verbindet geeignete Rückgabewerte aus mehreren Verkettungsprojektionen zu einer gemeinsamen Zeichenfolge.

images/download/attachments/155420061/image-2023-11-2_13-50-59-version-1-modificationdate-1698929474353-api-v2.png

Die Textverkettungsprojektion verbindet geeignete Rückgabewerte aus mehreren Verkettungsprojektionen zu einer gemeinsamen Zeichenfolge.

Die Anzahl der Verkettungsprojektionen ist variabel. Dabei sind folgende Fälle zu unterscheiden:

Verkettungsprojektionen

Rückgabewert

Hinweise

mehrere Projektionen

Verkettung der in Zeichenfolgen umgewandelten Rückgabewerte aller Verkettungsprojektionen

Standardfall "Verkettung"

  • Die Rückgabewerte aller Verkettungsprojektionen müssen Zeichenfolgen sein oder datenbankseitig in Zeichenfolgen umgewandelt werden können

  • Das Ergebnis einer Typumwandlung kann abhängig vom Typ des verwendeten Datenbanksystems oder dort vorgenommenen Einstellungen abhängen.

  • Beim Scheitern einer Typumwandlung läuft die Suche insgesamt auf einen Fehler.

Sonderfall "Typumwandlung zu String":
Die Textverkettungsprojektion kann verwendet werden, um einen durch eine Projektion gegebenen Wert nach den im Datenbanksystem anwendbaren Regeln in eine Zeichenfolge (String) umzuwandeln. Dies wird durch eine rein formale "Verkettung" mit einem Leerstring ("") oder null-Wert erreicht (s. Beispiel unten).

genau eine Projektion

Rückgabewert der einzigen Verkettungsprojektion
ohne Typumwandlung

Sonderfall "keine Verkettung"

  • Das datenbankseitige SQL-Statement verwendet die CONCAT()-Funktion nicht, sondern liefert direkt als Rückgabewert der Textverkettungsprojektion.

  • Eine Umwandlung seines Rückgabewerts in eine Zeichenfolge (String) findet nicht statt. Insofern können ausnahmsweise auch komplexe Werte (z. B. ein "Datumsbereich mit Zeit" oder eine "Adresse"-Entität) verarbeitet werden.

keine Projektion

Leerstring ("")

Sonderfall "keine Projektion"

Konfiguration

Parameter

Typ

Beschreibung

Name

String

Der optionale Parameter Name kann verwendet werden, um der Projektion einen (Alias-)Namen zuzuweisen.

  • Wenn kein Name angegeben ist, werden die anwendbaren Spaltennamen aus den Verkettungsprojektionen ohne Trennzeichen verkettet.

Verkettungsprojektionen

images/download/attachments/155420061/image-2023-11-2_16-17-26-version-1-modificationdate-1698938261131-api-v2.png

Die Konfiguration für Verkettungsprojektionen wird in einem Aufklappbar (Expandable)-Element dargestellt, das initial immer "zugeklappt" erscheint.

  • Das benachbarte Textfeld-Element zeigt die Anzahl der bereits konfigurierten Verkettungsprojektionen.

  • Ein Klick auf das [+]-Symbol expandiert den Detailbereich des Aufklappbar (Expandable)-Elements.

images/download/attachments/155420061/image-2023-11-2_16-20-31-version-1-modificationdate-1698938446521-api-v2.png

Initial ist die Liste der Verkettungsprojektionen leer. Im Detailbereich erscheint dann nur die schreibgeschützte "Schablone" für die Konfiguration.

Ein Klick auf das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg -Symbol ist dann notwendig, um die erste Verkettungsprojektion konfigurieren zu können.

Prinzipiell können beliebige Projektionen als Verkettungsprojektion innerhalb der Textverkettungsprojektion eingesetzt werden, solange sie geeignete Rückgabewerte liefern.

images/download/attachments/155420061/image-2023-11-2_16-31-23-version-1-modificationdate-1698939098382-api-v2.png

Wenn bereits Verkettungsprojektionen eingerichtet sind, fügt ein Klick auf das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg -Symbol eine zusätzliche Verkettungsprojektion unterhalb (="nach") der angeklickten ein.

WICHTIG◄ Für jede angelegte Verkettungsprojektion-Instanz muss auch eine Konfiguration erfolgen, sonst tritt beim Ausführen der Suche eine Fehlermeldung (NullPointerException) auf.

Eine "undefinierte" Verkettungsprojektion wie die folgende muss also noch per Klick auf das Menüsymbol (links) "konkretisiert" oder über das Mülltonne-Symbol (ganz rechts) wieder entfernt werden.

images/download/attachments/155420061/image-2023-11-2_16-37-0-version-1-modificationdate-1698939434987-api-v2.png


images/download/attachments/155420061/image-2023-11-2_17-57-43-version-1-modificationdate-1698944277613-api-v2.png

Um die Reihenfolge von bereits konfigurierten Verkettungsprojektionen nachträglich anzupassen, kann man diese einerseits über die Kontextmenüfunktionen "Kopieren" oder "Ausschneiden" in die Lobster Data Platform / Orchestration-Zwischenablage übernehmen, um sie an anderer Position wieder einzufügen.

Andererseits kann man die Anordnung auch einfach in der Baumansicht (links im Editor) bearbeiten, indem man eine einzelne Verkettungsprojektion per Drag & Drop an die neue Zielposition verschiebt.

Im konkreten Beispiel kann die "Verkettung" countryCode-zipcode in zwei Zügen umgewandelt werden in zipcode-countryCode.

Diese Technik bietet sich auch an, wenn man eine zusätzliche Verkettungsprojektion vor der erstplatzierten Instanz hinzufügen möchte. Über das images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/add.svg -Symbol kann man der Liste schließlich - wie üblich - nur eine nachfolgende Instanz hinzufügen. Diese kann - über die Baumansicht - anschließend aber problemlos auf Platz 1 verschoben werden.

images/download/attachments/155420061/image-2023-11-2_17-11-8-version-1-modificationdate-1698941482909-api-v2.png

Die mehr oder weniger umfangreiche Liste der Verkettungsprojektionen kann per Klick auf das [-] Symbol des Aufklappbar (Expandable)-Elements wieder "zugeklappt" werden.

  • Dann zeigt die Konfigurationsoberfläche der Textverkettungsprojektion nur noch an, wie viele Verkettungsprojektionen vorliegen, aber keinen Hinweis auf deren Inhalt.


images/download/attachments/155420061/image-2023-11-2_17-21-0-version-1-modificationdate-1698942074596-api-v2.png

Ein Klick auf das Minus-Symbol (rechts oben) minimiert die Konfigurationsoberfläche, so dass die Textverkettungsprojektion nur noch insgesamt angezeigt wird.

Dann erscheinen, wie im Bild links für den konkreten Fall zu sehen, die Spaltennamen für die enthaltenen Verkettungsprojektionen ihrerseits als Textverkettung.

Allerdings ist dies nur der Fall, solange der Parameter Name nicht verwendet wird um ausdrücklich einen Spaltennamen (z. B. COUNTRY_ZIP) zuzuweisen.

Beispiele

Typischer Anwendungsfall: Feldwerte verketten

Im Kontext einer CSV-Suche für Benutzer sollen die Felder "Benutzername" (username) und "ID" (id) über einen Unterstrich (_) als Trennzeichen verkettet werden, um eine Spalte "proUser" zu befüllen.

Konfiguration:

Der Screenshot rechts zeigt die Konfiguration für die Textverkettungsprojektion:

  • Als Name ist der gewünschte Spaltenname für die ausgabe eingetragen: proUser

  • Es sind drei Verkettungsprojektionen konfiguriert:

    • Die erste Feldprojektion liefert den Wert des Felds "Benutzername" (username).

    • Die Literale Projektion steuert den Unterstrich (_) als statisch definiertes Textzeichen bei.

    • An der dritten Position liefert die Feldprojektion die interne "ID" (id) des Benutzerkontos. Der primär bereitgestellte Long -Wert wird hier automatisch in einen String umgewandelt.

images/download/attachments/155420061/image-2023-11-2_17-33-0-version-1-modificationdate-1698942795498-api-v2.png

Laufzeitbeispiel:

proUser
admindent_4151
adent2_2653
adent_2651
...

Besonderer Anwendungsfall: Typumwandlung zu Zeichenfolge (String)

Im Allgemeinen referenzieren die Felder "Erstellt von" (creatorId) und "Zuletzt geändert von ID" (lastModifierId) einer Entität eines beliebigen Typs direkt den Wert im Feld "ID" (id) des betreffenden Benutzerkontos.

Das jeweilige Long-Feld (creatorId bzw. lastModifierId) muss allerdings nicht nur Benutzer referenzieren können, sondern auch Gastbenutzer. Schließlich können diese, wenn ausreichend berechtigt, auch für das "Erstellen" oder "Ändern" einer Entität verantwortlich sein.

Die "ID"-Werte für Benutzer und Gastbenutzer sind nur innerhalb des jeweiligen Entitätstyps eindeutig. Beim Referenzieren (creatorId bzw. lastModifierId) wird die "ID" eines Gastbenutzers deshalb als negativer Long-Wert abgebildet.

Wenn im Kontext einer Suche Detaildaten für referenzierte Gastbenutzer einbezogen werden sollen, erfordert die "Vorzeichenumkehr" in der Referenz besondere Vorkehrungen.

Im konkreten Anwendungsfall soll eine Subselect Projektion den "Login Token" des Gastbenutzers ermitteln, der im Feld "Erstellt von" durch einen negativen Referenzwert "indirekt" referenziert wird.

Dabei ist zu berücksichtigen:

Für normale Benutzer liefert die rechts abgebildete Feld Einschränkung in der Bedingung einer Subselect Projektion das passende Benutzerkonto (id) zur Referenz im Feld "Erstellt von"(_parentQuery.creatorId) der Entität, auf die sich die übergeordneten Suche bezieht.

Der Verglecih bezieht sich hier auf beiden Seiten (Prüfwert/Vergleichswert) auf Long-Werte.

images/download/attachments/155420061/image-2023-11-3_8-42-38-version-1-modificationdate-1698997373416-api-v2.png

Für Gastbenutzer muss in der Bedingung der Subselect Projektion für eine der beiden Seiten (Prüfwert/Vergleichswert) ein "Vorzeichenwechsel" erfolgen, da die interne "ID" für einen Gastbenutzer ja nicht wirklich negativ ist. Leider stellt Lobster Data Platform / Orchestration über Projektionen keine Berechnungsfunktionen bereit. Stattdessen müssen wir buchstäblich "vergleichbare" Werte mit anderen Mitteln fabrizieren, um Referenzen für Gastbenutzer auflösen zu können.

Konfiguration:

Die folgende Konfiguration zielt darauf ab, ...

  1. ... negative Werten im Feld "Erstellt von" (creatorId) in eine Zeichenfolge umzuwandeln und ...

  2. ... ausgehend von den positiven Werten für die "ID" (id) der referenzierten Gastbenutzer vergleichbare Zeichenfolgen herzustellen.

Beide Aufgaben können per Textverkettungsprojektion gelöst werden, wie die folgende Konfiguration für die Bedingung zeigt:

images/download/attachments/155420061/image-2023-11-3_9-22-13-version-1-modificationdate-1698999748997-api-v2.png

  • Auf der linken Seite (Prüfwert) wird die Textverkettungsprojektion verwendet, um der positiven "ID" (id) in der Subselect Projektion zu bewertenden Gastbenutzer-Kontos ein Minuszeichen (-) voranzustellen. Der Long-Wert wird dabei mi Zuge der Verkettung automatisch in einen String umgewandelt.

  • Auf der rechten Seite (Vergleichswert) dient die Textverkettungsprojektion ausschließlich dazu, den negativen Wert aus der Referenz formal in einen String umzuwandeln. Dies wird dadurch erreicht, dass der Rückgabewert der Feldprojektion für das "Erstellt von"-Feld (_parentQuery,.creatorId) eine zweite Verkettungsprojektion mit einem statischen Leerstring ("") verkettet wird.

ANMERKUNG◄ Abhängig vom verwendeten Datenbanksystem sind Vergleiche zwischen String- und Long-Werten auch ohne ausdrückliche Typumwandlung möglich. Dann könnte man diese Konfiguration etwas vereinfachen. Allerdings funktioniert die Bedingung dann ggf. nicht mehr, wenn ein Wechsel des Datenbanksystems vorgenommen bzw. die Konfiguration auf ein Lobster Data Platform / Orchestration-System übertragen wird, das ein anderes Datenbanksystem verwendet. Mit der ausdrücklichen Typumwandlung zu String über die Textverkettungsprojektion sollte die Bedingung übergreifend einsetzbar sein.