Suche

über alle News und Events

 

Alle News

 

Durable Function ist eine Erweiterung der...

Weiterlesen

Wir haben eine gute, vor allem spannende und hoch...

Weiterlesen

Am 09.05.2022 wurde ein Artikel von Microsoft...

Weiterlesen

Neben den altbekannten Logic Apps (Consumption),...

Weiterlesen

Im Jahr 2022 fallen eine Reihe von .Net Versionen...

Weiterlesen

SAP in die Power Platform integrieren – In einem...

Weiterlesen

Bicep Templates benutzen eine deklarative Syntax...

Weiterlesen

In BizTalk gibt es einige Alternativen, wie...

Weiterlesen

Wir sind auf ein seltsames Phänomen bei einem...

Weiterlesen

Nach der Migration konnten in VS 2019 „normale“...

Weiterlesen

How-to: Stream Analytics Job für Wertetransformation und Default Werte

Wer mit Schnittstellen zu tun hat, hat auch mit Datentransformation zu tun. Das bedeutet nicht nur die Transformation der Struktur einer Nachricht, sondern oftmals auch die Umwandlung eines Wertes in einen anderen Wert, was insbesondere bei Codes und IDs der Fall ist.

Sprachen etwa können in einem Quellsystem als ISO-639-1 Codes vorliegen während das Zielsystem mit ISO-639-3 Codes arbeitet. Was also als 'de' für Deutsch das Quellsystem verlässt, muss als 'deu' im Zielsystem ankommen.

Die ISO Liste für Sprachcodes enthält 202 Einträge, und wenn man in der Lage sein will, jeden einzelnen davon transformieren zu können, ist ein switch / case Statement in einem Stück C# Code nicht mehr wirklich praktisch – es bietet sich an, mit einer Lookup Tabelle zu arbeiten, die etwa in einer SQL Datenbank vorgehalten wird, und die in einem Stream Analytics Job verwendet wird, um die Quell- in die Zielwerte zu übersetzen.

Einfache Werttransformation

Im simpelsten Fall würde diese Lookup Tabelle etwa so aussehen:

Diese Tabelle wird nun in dem Stream Analytics Job zusammen mit dem Datensatz aus dem Quellsystem als Input verwendet.

Die Query für die Umsetzung der Quell- in die Zielwerte könnte etwa so aussehen:

folgendermassen im Zielsystem:

'en' ist in der Lookup Tabelle nicht vorhanden, also gelangt dafür kein Wert ins Zielsystem.

Default für NULL und Unbekannt

Nehmen wir nun an, im Zielsystem soll ein Defaultwert 'Unknown' mit dem Code '0' eingetragen werden, wenn vom Quellsystem kein oder ein unbekannter Sprachcode daherkommt. Um das zu erreichen, wird die Query wie folgt angepasst:

Wird ein Quellwert in der Lookup Tabelle gefunden, kommt der entsprechende Zielwert in die Ausgabe, ist kein Quellwert da oder ist der Wert nicht in der Lookup Tabelle, wird '0' eingesetzt.

Damit kämen im Zielsystem die Datensätze so an:


 

Default für Unbekannt

Möglicherweise soll unterschieden werden können, ob kein Wert geliefert wird oder einer, der nicht in der Lookup Tabelle ist, etwa damit man diese dann ergänzen kann. Der Defaultwert 'Unknown' soll nur eingesetzt werden, wenn der Wert nicht in der Lookup Tabelle ist und wenn kein Wert geliefert wird, also NULL, soll auch NULL an das Zielsystem übermittelt werden.

Diese Abfrage ergibt folgendes Bild:


 

Default in Lookup Tabelle

Der Defaultwert kann auch in der Lookup Tabelle geführt werden, was vor allem dann zu empfehlen ist, wenn sich der Zielwert zwischen den verschiedenen Stages unterscheidet, etwa im Falle einer GUID. Unsere Lookup Tabelle sähe dann so aus:



Da diese GUIDs in jedem System anders sind, braucht man natürlich für jedes System (also jede Stage) eine eigene Lookup Tabelle, aber es kann immer die gleiche Query eingesetzt werden, wenn benötigte Defaults in dieser Tabelle vorgehalten werden.

Um das zu nutzen, muss die Query ein bisschen erweitert werden:

COALESCE

Um die Query ein wenig schlanker und eleganter zu machen, können wir die CASEWHEN Anweisung für den Lookup Wert bzw. den Default mit einer COALESCE Anweisung ersetzen. Da wird von links nach rechts eine kommagetrennte Liste von Werten durchgegangen und der erste Wert ausgewählt, der nicht NULL ist. Sind alle Werte NULL, dann kommt auch NULL heraus.


 

Dieser quiTeq-Tipp kommt aus der Schweiz von Robert.

Ihre Kontaktmöglichkeiten

Sie haben eine konkrete Frage an uns


 

Bleiben Sie immer auf dem Laufenden


 

Mit meinem "Ja" erkläre ich mich mit der Verarbeitung meiner Daten zur Zusendung von Informationen einverstanden. Ich weiß, dass ich diese Erklärung jederzeit durch einfache Mitteilung widerrufen kann. Bei einem Nein an dieser Stelle erhalte ich zukünftig keine Informationen mehr.

© QUIBIQ GmbH · Impressum · Datenschutz