Singuläres-Attribut-Join

images/download/attachments/167860455/image-2024-1-31_9-18-21-version-1-modificationdate-1706689101410-api-v2.png

Ein Singuläres-Attribut-Join liefert analog zur Singuläres-Attribut-Projektion ausgehend von der Haupt-Entität der Suche oder einem abweichenden Attributbesitzerpfad den Wert des per Parameter Attribut ausgewählten Attributtyps, sofern die Join Bedingung erfüllt ist.

ANMERKUNG◄ Der Singuläres-Attribut-Join liefert im Unterschied zu Joins für alle anderen Attributtypen immer nur genau ein (oder kein) Attribut als Rückgabewert. Dies entspricht der singulären Charakteristik für die Attributtypen, die als Attribut auswählbar sind.
Die Join Bedingung kann in diesem Zusammenhang effektiv eigentlich nur verhindern, dass ein ggf. vorhandenes einzelnes Attribut nicht zurückgegeben wird oder sie wirkt in Verbindung mit dem Join Typ "Inner" einschränkend auf die betreffende Suche als Ganzes.

Konfiguration

Parameter

Datentyp

Beschreibung

Spezifische Parameter

Attributbesitzerpfad

Entität
(Projektion)

Ein Attributbesitzerpfad muss nur explizit durch die Konfiguration einer Projektion (s. Projektionen) definiert werden, wenn die Entität im Kontext der Suche nicht der Besitzer der Attribute ist, die ausgewertet werden sollen.

Dies ist z. B. in den folgenden Fällen relevant:

  • Der Attributbesitzer ist eine per Datenobjekt Join in die Suche einbezogene Entität.

  • Der Attributbesitzer ist eine Position einer Entität im Kontext der Suche.

  • Beim Attributbesitzer handelt es sich um eine in die Daten der Entität im Kontext der Suche eingebettete Entität, z. B. die "Adresse" (address) eines Kontos (s. Benutzer, Firmen).

Attribut

Klasse
(Attributtyp)

Im Auswahlfeld/Combobox-Element für den Parameter Attribut muss eine Auswahl aus den per Dropdown angebotenen Optionen für den Attributtyp erfolgen.

Hier stehen nur die Attributtypen für Singuläre Attribute zur Auswahl, die der Entitätstyp des anwendbaren Attributbesitzers per Implementierung unterstützt.

HINWEIS◄ Stehen für das Attribut keine Optionen zur Auswahl oder werden Optionen vermisst, dann wurde eventuell versäumt den Attributbesitzerpfad passend zu setzen (z. B. die "Adresse" eines Kontos, für das keine Attribute implementiert sind).

Generische Parameter

Join Alias, Join Typ, Optional, Join Bedingung

s. Datenobjekt Join

Beispiele

Typischer Anwendungsfall: Mehrere Projektionen auf ein Singuläres Attribut

Innerhalb einer CSV Suche für einen benutzerdefinerten Entitätstyp "Point of Interest" (POI), der ein benutzerdefiniertes Singuläres Attribut "PositionXyz" (PositionXyz) besitzen kann, sollen mehrere Felder aus dem Attributwert (x, y, z) als Ausgabespalten enthalten sein.

Konfiguration:

Der Screenshot rechts zeigt die Konfiguration für einen Singuläres-Attribut-Join, der den mehrfachen Zugriff auf das Singuläre Attribut "PositionXyz" (PositionXyz) regelt:

  • Um auf die Attribute der Haupt-Entität der CSV Suche zuzugreifen ist kein Attributbesitzerpfad erforderlich.

  • Als Attribut wird "PositionXyz" (PositionXyz) ausgewählt.

  • Als Join Alias wird willkürlich der Name pos zugeordnet

  • Für Join Typ und Optional wird der Standard (Left/Optional) beibehalten, damit auch "Points of Interest" ohne Positionsangabe als Treffer gelten.

  • Die Definition einer Join Bedingung ist nicht erforderlich.

images/download/attachments/167860455/image-2024-1-31_11-40-22-version-1-modificationdate-1706697622174-api-v2.png

Die Detaildaten aus dem PositionXyz-Attribut können über den Join Alias pos für den Singuläres-Attribut-Join mit mehreren Instanzen der Feldprojektion in Projektionen für Ausgabespalten adressiert werden:

  • Die erste Feldprojektion benennt den "Point of Interest" anhand eines Felds der Haupt-Entität.

  • Die folgenden drei Feldprojektion-Instanzen beziehen sich zunächst auf den Join Alias pos, um danach ein spezifisches Detail (x, y, z) aus dessen value-Feld abzurufen.

    ANMERKUNG◄ Auf sprechende Spaltennamen (etwa LATITUDE, LONGITUDE, ELEVATION) wurde hier nur verzichtet, damit die Pfade im zugeklappten Zustand lesbar sind.

images/download/attachments/167860455/image-2024-1-31_11-54-35-version-1-modificationdate-1706698476055-api-v2.png

Laufzeitbeispiel:

Wie rechts abgebildet, liefert die CSV-Suche ggf. auch Ausgabezeilen, für keine Positionsangabe vorliegt.

ANMERKUNG◄ Dasselbe Ergebnis ließe sich erzielen, wenn auf den Singuläres-Attribut-Join verzichtet würde und stattdessen drei Instanzen der Singuläres-Attribut-Projektion eingesetzt würden.

POI_NAME,pos.value.x,pos.value.y,pos.value.z
================================================
GREENWICH_PRIME_MERIDIAN,51.47781,-0.00148,223.0
TAJ_MAHAL,27.175,78.04194,240.0
PLANET_EARTH,,,
TOUR_EIFFEL,48.85822,2.2945,108.0

Variante:

Die bestehende CSV Suche soll so angepasst werden, dass in der Liste nur noch "Point of Interest"-Instanzen erscheinen, für die eine Positionsangabe vorliegt.

Konfiguration:

Der Singuläres-Attribut-Join kann wie rechts gezeigt angepasst werden, um "Point of Interest"-Instanzen ohne Positionsangaben auszuschließen:

  • Der Join Typ wurde auf "Inner" umgestellt.

  • Die Optional-Option kann ausgewählt bleiben.

  • Als Join Bedingung wurde eine Feld Einschränkung eingeführt, die prüft, ob das value-Feld des ggf. vorgefundenen Attributs nicht (!=) leer ist.

WICHTIG◄ Würde man auf die Join Bedingung verzichten, dann wäre der Fall nicht abgedeckt, dass ein "Point of Interest" mindestens einmal mit einer Positionsangabe gespeichert wurde, deren Detailfelder (x, y, z) seitdem gelöscht wurden. Dann bleibt eine leere Hülle für das Attribut zurück, sofern dieses beim Speichern nicht durch eine explizit konfigurierte Ereignisbehandlung entfernt wird.

images/download/attachments/167860455/image-2024-1-31_12-22-58-version-1-modificationdate-1706700178369-api-v2.png

Besonderer Anwendungsfall: Bedingter Zugriff auf das Singuläre Attribut

Die Join Bedingung im vorherige Beispiel soll nun so angepasst werden, dass die CSV Suche zwar alle "Point of Interest"-Instanzen auflistet, aber die Spalten zur Positionsangabe nur Werte enthalten, wenn für den Sitzungskontext eine bestimmte Rollenregel erfüllt ist.

Konfiguration:

Die rechts abgebildete Join Bedingung wertet ausnahmsweise keine Daten aus dem Singuläres-Attribut-Join aus, sondern bezieht sich in einer Feld Einschränkung mit einem Trick auf den Kontext der Sitzung:

  • Als Prüfwert (links) stellt eine Literale Projektion den statischen Boolean-Wert true bereit.

  • Als Vergleichswert (rechts) dient ein aus Sicht der Suche ebenfalls statischer boolean-Wert, der vor der Ausführung der Suche über einen Regelwert-Wertauflöser als Rückgabewert einer Rollenregel gewonnen wird. Die Rollenregel prüft ob eine bestimmte Rolle der Session (hier: "Querificus") angemeldet ist, oder ob die Rolle der Session dieser Rolle direkt oder indirekt untergeordnet ist.

WICHTIG◄ Ausgehend von der Variante (oben) muss der Join Typ auf "Left" geändert werden. Mit dem Join Typ "Inner" würden nicht nur die Ausgabespalten zur Position leer bleiben, sondern alle Ergebniszeilen ausgeschlossen.

images/download/attachments/167860455/image-2024-1-31_12-41-0-version-1-modificationdate-1706701260294-api-v2.png

Laufzeitbeispiel:

Rolle

Join Typ

Ausgabe

Querificus

Left

GREENWICH_PRIME_MERIDIAN,51.47781,-0.00148,223.0
TAJ_MAHAL,27.175,78.04194,240.0
PLANET_EARTH,,,
TOUR_EIFFEL,48.85822,2.2945,108.0
...

andere Rolle
(nicht "Querificus"
untergeordnet)


Left

GREENWICH_PRIME_MERIDIAN,,,
TAJ_MAHAL,,,
PLANET_EARTH,,,
TOUR_EIFFEL,,,
...

Inner

leer