Singuläres-Attribut-Join
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 |
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:
|
Attribut |
Klasse |
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 |
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:
|
|
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:
|
|
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 |
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:
►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. |
|
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:
►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. |
|
Laufzeitbeispiel:
Rolle |
Join Typ |
Ausgabe |
Querificus |
Left |
GREENWICH_PRIME_MERIDIAN,51.47781,-0.00148,223.0 |
andere Rolle |
Left |
GREENWICH_PRIME_MERIDIAN,,, |
Inner |
leer |