Teilstring Projektion

Projektion - Kurzfassung

Zweck: Gibt einen Abschnitt aus einer durch eine Projektion ermittelten Zeichenfolge zurück.

images/download/attachments/78258012/image-2023-10-10_11-25-54-version-1-modificationdate-1696929962980-api-v2.png

Die Teilstring Projektion gibt einen Abschnitt aus einer durch die Projektion ermittelten Zeichenfolge zurück.

Die optionalen Parameter Startindex und Max. Länge steuern, welcher Abschnitt des Rückgabewerts aus der Projektion als "Teilstring" zurückgegeben wird.

Konfiguration


images/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg ACHTUNGimages/s/-95e2zf/9012/8yg2g7/_/images/icons/emoticons/warning.svg Abhängig vom verwendeten Datenbanksystem können sich die Ergebnisse einer Teilstring Projektion signifikant variieren. Die hier vorgestellte Benutzeroberfläche lässt dabei rein technisch auch Parametrierungen zu, die nur auf bestimmten Datenbanken funktionieren.

Die Dokumentation im folgenden Abschnitt beschränkt sich auf Parameter-Kombinationen, die unabhängig vom verwendeten Datenbanksystem die beschriebenen Ergebnisse liefern.

Abweichende Parameter-Kombinationen sind in der Praxis rein technisch durchaus praktikabel, soweit mit dem verwendeten Datenbanksystem in Tests die gewünschten Ergebnisse erzielt werden.

Allerdings ist zu bedenken, dass dann bei einem späteren Wechsel des Datenbanksystems für eine bestehende Implementierung oder beim Austausch von Lösungskomponenten zwischen Lobster Data Platform / Orchestration-Systemen, die unterschiedliche Datenbanksysteme verwenden, schwerwiegende Fehlfunktionen und signifikante Abweichungen von angestrebten Verarbeitungslogiken auftreten können, deren Ursache ggf. nur mit erheblichem Aufwand lokalisierbar ist und im Kontext des "alternativen" Datenbanksystems unter Umständen auch nicht komplett behoben werden kann.


In der folgenden Tabelle beziehen sich die grün schattierten Zellen auf den Gebrauch der Parameter, der unabhängig vom Datenbanksystem gewährleistet sein sollte.
Die gelbe Schattierung kennzeichnet dagegen Hinweise für den Gebrauch der Parameter außerhalb des "strengen" Standard.

Parameter

Typ

Beschreibung

Name
optional


String

Der Parameter Name definiert optional einen Alias-Namen für die Projektion. Wird kein Name angegeben, wird der Name der Projektion mit dem statischen Präfix "substring of " als Name verwendet.

Projektion
optional

String

Als Projektion kann eine Projektion (s. Projektionen) eines beliebigen Typs (z. B. auch eine Literale Projektion) verwendet werden, solange diese einen String-Wert zurückgibt.

  • Wird keine Projektion definiert, liefert die Teilstring Projektion unabhängig von der anderweitigen Parametrierung einen leere Zeichenfolge ("") als Wert.

Liefert die Projektion einen anderen Datentyp als String, findet abhängig vom Datentyp und dem Datenbanksystem eine Typumwandlung zu String statt oder ein Fehler tritt auf.
HINWEIS◄ Wenn ein Datenbanksystem die von einer Projektion zur Laufzeit gelieferten Werte eines von String abweichenden Datentyps nicht akzeptiert, kann man eventuell eine explizite Typumwandlung in String erzwingen, indem man die gegebene Projektionskonfiguration innerhalb einer Textverkettungsprojektion mit einem Leerstring verkettet. Dieser Schritt kann in einem konkreten Anwendungsszenario helfen, einen Abbruch der Suche mit Fehler zu vermeiden und erzielt dann ggf. auch das gewünschte Ergebnis. Dass diese Typumwandlung im Kontext eines anderen Datenbanksystems übereinstimmende Ergebnisse liefert, sollte allerdings nicht ohne Prüfung angenommen werden. Die Ergebnisse von bestimmten Typumwandlungen können zusätzlich von Einstellungen für die konkrete Datenbank abhängen (z. B. ein bestimmtes Pattern für die Darstellung von Datumswerten als String).

Startindex
optional

Integer

Der Startindex definiert über einen Integer-Wert (Ganzzahl) die Position innerhalb der aus der Projektion gewonnenen Zeichenfolge, ab der eine Teilzeichenfolge für den Rückgabewert übernommen werden soll.

  • Ein Startindex von 1 bezieht sich auf das erste Zeichen aus der Projektion

  • Der Startindex kann auf eine Position nach dem Ende der aus der Projektion gewonnenen Zeichenfolge verweisen. Dann wird eine leere Zeichenfolge ("") zurückgegeben.

Als Startindex muss zur Laufzeit ein positiver Integer-Wert vorliegen, damit das Ergebnis der Teilstring Projektion nicht von datenbankspezifischen Eigenheiten abhängt.

  • Per Standard wird die Direkteingabe für eine statisch bestimmte Integer-Konstante (per Textfeld mit Numeric Stepper) angeboten.

  • Um stattdessen eine zur Laufzeit dynamisch bestimmte Integer-Konstante zuzuweisen, kann wahlweise (s. kleiner grauer Pfeil im Textfeld) zur allgemeinen Wert-Konfiguration gewechselt werden.
    WICHTIG◄ Die Wert-Konfiguration darf nur den Datentyp Integer zurückgeben. Bereits ein Long-Wert wird abhängig vom Datenbanksystem schon als "fehlerhaft" zurückgewiesen. Ein verketteter Eingabeobjekt (Typsicher)-Wertauflöser mit dem Typ Integer kann hilfreich sein.

  • Außerdem kann eine Projektion (Projektionen) verwendet werden, um den Startindex innerhalb der Suche über einen variablen Integer-Wert zu definieren.
    HINWEIS◄ Für Projektionen existiert eine Option für eine explizite Typumwandlung in Integer. Die Optionen für eine uneingeschränkt lauffähige Projektion für den Startindex sind daher meistens begrenzt.

Wenn für den Startindex kein Wert ($null), der Wert 0, ein negativer Wert oder ein anderer Typ als Integer vorliegt, kann nicht von einem einheitlichen Ergebnis für unterschiedliche Datenbanksysteme ausgegangen werden.
HINWEIS◄ Einige Datenbanksysteme interpretieren einen negativen Startindex als Offset vom Ende der ausgewerteten Zeichenfolge.

Max. Länge
optional



Integer

Der Parameter Max. Länge definiert eine Obergrenze für die Länge der Zeichenfolge im Rückgabewert über einen Integer-Wert. Der zurückgegebene "Teilstring" endet aber spätestens mit dem letzten Zeichen aus der Projektion.

  • Beim Verzicht auf eine Wert-Konfiguration werden alle Zeichen ab der durch den Startindex referenzierten Position zurückgegeben, wenn ein positiver Startindex vorliegt.

Für die Parametrierung greifen dieselben Optionen und Einschränkungen wie beim Startindex.

Wenn für den Startindex kein Wert ($null), ein negativer Wert oder ein anderer Typ als Integer vorliegt, kann nicht von einem einheitlichen Ergebnis für unterschiedliche Datenbanksysteme ausgegangen werden.

Beispiele

Einfaches Beispiel: Länderkennzeichen und Postleitzahlgebiet verketten

Ausgehend von den Feldern "Land" (countryCode) und "Postleitzahl" (zipcode) soll im Kontext einer Tupel-Suche ein zusammengesetzter Code für die REGION gebildet werden, nach dem das Suchergebnis z. B. sortiert oder gefiltert werden kann.

Konkret sollen die ersten zwei Ziffern (bzw. Zeichen) der "Postleitzahl" mit dem internen Kürzel für das Land verkettet werden, um einen vierstelligen Code zu erhalten, wenn beide Felder ordnungsgemäß befüllt sind.

Die Tabelle rechts zeigt in der ersten Spalte (REGION) Beispieldaten für eine Auswahl von Städten in Deutschland und der Schweiz.

REGION,AREA,CITY
=====================================
CH20,Neuchâtel,Bevaix
CH90,Kanton St. Gallen,St. Gallen
DE17,Mecklenburg-Vorpommern,Meiersberg
DE27,Niedersachsen,Varrel
DE39,Sachsen-Anhalt,Holzhausen
DE46,Nordrhein-Westfalen,Xanten
DE54,Rheinland-Pfalz,Bruch
DE67,Rheinland-Pfalz,Fußgönheim
DE68,Nordrhein-Westfalen,Mannheim
DE77,Baden-Württemberg,Mühlenbach
DE82,Bayern,Huglfing
DE84,Bayern,Au in der Hallertau
DE84,Bayern,Schwindegg
DE92,Bayern,Kastl

Konfiguration:

Der Screenshot rechts zeigt die Konfiguration für die Projektion der ersten Spalte (REGION):

  • Im zweiten Element der Textverkettungsprojektion extrahiert die Teilstring Projektion die ersten zwei Zeichen aus dem Feld "Postleitzahl" (zipcode):

    • Die Projektion verwendet eine Feldprojektion, um die Postleitzahl zu lesen.

    • Der Startindex verweist auf das erste Zeichen (1).

    • Die Max. Länge (2) limitiert die Anzahl der Zeichen, die zurückgegeben werden soll.

images/download/attachments/78258012/image-2023-10-10_14-19-40-version-1-modificationdate-1696940388781-api-v2.png

Komplexeres Beispiel: Variable Anzahl von Ziffern abhängig von der Länge der Postleitzahl

Ausgehend vom vorherigen Anwendungsfall soll nun abhängig vom "Land" (countryCode) eine variable Anzahl an führenden Ziffern aus der Postleitzahl (zipcode) in das Kennzeichen für die REGION übernommen werden,

Konkret soll aus vierstelligen Postleitzahlen nur die erste Ziffer und aus allen anderen die ersten zwei Zeichen übernommen werden.

Konfiguration:

Der Screenshot zeigt die angepasste Konfiguration für die Postleitzahlkomponente innerhalb der Textverkettungsprojektion für die REGION-Spalte:

  • Die Projektion verwendet immer noch eine Feldprojektion, um die Postleitzahl zu lesen.

  • Der Startindex verweist statisch auf das erste Zeichen (1).

  • Die Max. Länge wird diesmal über eine Wenn ( Case ) Projektion individuell für jede ausgewertete Postleitzahl ermittelt:

images/download/attachments/78258012/image-2023-10-10_17-21-50-version-1-modificationdate-1696951319863-api-v2.png

Laufzeitbeispiel:

REGION,AREA,CITY
======================================
AT2,Niederösterreich,Immendorf
CH2,Neuchâtel,Bevaix
CH9,Kanton St. Gallen,St. Gallen
DE27,Niedersachsen,Varrel
DE39,Sachsen-Anhalt,Holzhausen
DE46,Nordrhein-Westfalen,Xanten
DE54,Rheinland-Pfalz,Bruch
DE68,Nordrhein-Westfalen,Mannheim
DE77,Baden-Württemberg,Mühlenbach
DE84,Bayern,Schwindegg
ES30,Murcia,Gibraltar
ES36,Galicia,Vigo
FR54,Grand-Est,Nancy
FR69,Auvergne-Rhône-Alpes,Lyon
GBRG,England,Reading
IEF1,,Knock
IT02,Lazio,Collalto Sabino
IT16,Liguria,Genova
TR35,İzmir,Aliağa