Ausdrücke
Funktionen
Der Ausdrucksgenerator
Ausdrücke
Ausdrücke sind die dritte Programmieralternative (neben T-SQL und VB.NET) in den Integration
Services. Bei der Bezeichnung Ausdruck vermutet man eine sehr einfache Zuweisungsmöglichkeit.
Dies entspricht jedoch nicht der Realität, da der Funktionsumfang mit dem von T-SQL durchaus
vergleichbar ist.
Die Ausdrucksprogrammierung ist eine einzeilige Programmierung.
Die programmierte Zeile gibt einen Wert zurück, der entweder einem Ziel zugewiesen
oder anderweitig ausgewertet wird.
Innerhalb der Programmzeile können die zur Verfügung stehenden Funktionen mehrfach
ineinander geschachtelt werden. Da es nur eine Programmierzeile gibt, ist es nicht möglich,
innerhalb eines Ausdrucks Variablen zu definieren.
Zu beachten ist außerdem, dass die Länge des Gesamtausdruckes nicht die maximale Länge von
4.000 Zeichen überschreitet.
Verwendung von Ausdrücken
Ausdrücke können nur dort verwendet werden, wo sie ausdrücklich erlaubt und vorgesehen sind.
Diese Einschränkung ist notwendig, weil Ausdrücke ausgewertet werden müssen. Zum Zeitpunkt der
Ausführung muss der Ausdruckstext an einen Ausdrucksauswerter übergeben werden. Das Ergebnis der
Ausdrucksauswertung wird für die weitere Verarbeitung zur Verfügung gestellt.
Die Ausdrucksauswertung kann sehr anschaulich bei der Ausdruckszuordnung zu einer Variablen
verfolgt werden. Siehe hierzu den Abschnitt Ausdrücke als Variablenwert.
Typischen Anwendungen für Ausdrücke sind:
| Element |
Ausdrucksverwendung |
|
Eigenschaften |
Festlegung von Eigenschaften |
|
Variablen |
Wertzuweisung von Variablen |
|
Komponente bedingtes Teilen |
Bedingung für bedingtes Teilen |
|
Komponente abgeleitetes Spalte |
Abgeleitete Spalte Ergebnis eines Ausdruckes |
|
For-Schleifencontainer |
Dynamische Programmsteuerung eines For-Schleifencontainers |
|
Workflow |
Rangfolgeneinschränkung |
Tabelle 1: Anwendungen von Ausdrücken
Einfache Ausdrucksbeispiele:
| Ausdruck |
Erläuterung |
|
511 |
Die Zahl 511 wird als Integerwert zurückgegeben |
|
511 + 20 |
Die Zahl 531 wird als Integerwert zurückgegeben |
|
"Test" |
Der Text Test wird als String zurückgegeben |
|
GETDATE() |
Das aktuelle Datum wird als Datentyp Date zurückgegeben |
|
@Var |
Der Wert der Variable Var wird zurückgegeben. Der zurückgegebene Datentyp ist identisch mit dem der Variable Var |
|
[Spalte 0] > [Spalte 1] |
Vergleicht Spalte0 mit Spalte1. Es wird True oder False als Datentyp Boolean zurückgegeben. |
|
[Spalte 1] * 10 |
Der Wert der Spalte1 wird mit 10 multipliziert. |
Tabelle 2: Ausdrucksbeispiele
Syntax
Die Syntax der Ausdrucksprogrammierung ist eine Mischung aus C und T-SQL. Die Komplexität ist
überschaubar und es gibt nur wenige Besonderheiten, die es zu beachten gilt.
Ein Ausdruck besteht immer aus einer Programmzeile. Jeder Ausdruck gibt genau einen Wert zurück.
Die Ausdrucksprogrammierung ist mit der Zellenzuweisung in Microsoft Excel vergleichbar.
Auch in Excel kann auf andere Zellen und Variablen zugegriffen werden und es stehen umfangreiche Funktionen zur Verfügung.
Spalten- und Variablennamen
In Ausdrücken können Spalten des Datenflusses und Variable verwendet werden.
Variable werden durch das @-Präfix gekennzeichnet. Die Variable "Anzahl" wird in einem
Ausdruck mit @Anzahl angesprochen. Eine Variable kann durch die zusätzliche Nennung des
Namespace qualifiziert werden. Qualifiziert wird die Variable "Anzahl" im Namespace Benutzer
so angesprochen: @[Benutzer::Anzahl]. Die beiden aufeinander folgenden Doppelpunkte werden als
Namespaceauflösungsoperator bezeichnet. Der qualifizierte Variablenname muss immer von eckigen
Klammern eingeschlossen sein, da die beiden Doppelpunkte als Sonderzeichen gelten.
Spaltennamen lassen sich in Ausdrücken nur in Datenflusskomponenten verwenden.
Der jeweilige Editor zeigt auf Basis der Metadaten die zur Verfügung stehenden Spalten
an und unterstützt die Ausdrucksprogrammierung. Spaltennamen werden ohne weitere Kennung
in einem Ausdruck verwendet. Enthält der Spaltenname Sonderzeichen, ist der Spaltenname von
eckigen Klammern zu umgeben. Automatisch generierte Spalten enthalten vielfach Leerzeichen,
die ebenfalls als Sonderzeichen gelten.
Das erste Zeichen eines Namens muss ein Buchstabe gemäß Unicode-Standard 2.0 oder ein
Unterstrich sein. Die nachfolgende Zeichen können Buchstaben oder Zahlen gemäß
Unicode-Standard 2.0 sein oder eines der folgender Zeichen: _ @ $ #
Namen, die dieser Konvention nicht entsprechen, müssen von eckigen Klammen eingeschlossen werden.
Eckige Klammern als Namensbestandteil sind in Ausdrücken nicht erlaubt.
Operatoren
Bei der Auswertung eines Ausdrucks wird die Punkt vor Strichregel beachtet.
Die weitere Auswertungsreihenfolge ist durch Klammersetzung festzulegen.
Die wichtigsten Operatoren finden Sie in Tabelle 14.5. Bitte beachten Sie, dass für die
Addition von numerischen Ausdrücken der gleiche Operand verwendet wird, wie für das Verketten
von Texten. Welche Operation ausgeführt wird, entscheidet der Datentyp des angesprochenen
Ausdruckes.
| Operator |
Beschreibung |
|
() (Klammern) |
Identifiziert die Auswertungsreihenfolge von Ausdrücken |
|
+ (Addieren) |
Addiert zwei numerische Ausdrücke |
|
+ (Verketten) |
Verkettet zwei Ausdrücke |
|
- (Subtrahieren) |
Subtrahiert den zweiten numerischen Ausdruck vom ersten |
|
- (Negation) |
Negiert einen numerischen Ausdruck |
|
* (Multiplikation) |
Multipliziert zwei numerische Ausdrücke |
|
/ (Division) |
Dividiert den ersten numerischen Ausdruck durch den zweiten numerischen Ausdruck |
|
% (Modulo) |
Stellt den ganzzahligen Rest einer Division des ersten numerischen Ausdrucks durch den zweiten bereit |
|
|| (Logisches OR) |
Führt eine logische OR-Operation aus |
|
&& (Logisches AND) |
Führt eine logische AND-Operation aus |
|
! (Logisches NOT) |
Negiert einen booleschen Operanden |
|
== (Gleich) |
Führt einen Vergleich aus, um zu ermitteln, ob zwei Ausdrücke gleich sind |
|
!= (Ungleich) |
Führt einen Vergleich aus, um zu ermitteln, ob zwei Ausdrücke ungleich sind |
|
> (Größer als) |
Führt einen Vergleich aus, um zu ermitteln, ob der erste Ausdruck größer ist als der zweite |
|
? : (Bedingt) |
Gibt einen von zwei Ausdrücken basierend auf der Auswertung eines booleschen Ausdrucks zurück |
Tabelle 3: Operatoren und ihre Funktion
Die Funktionsweise der wichtigsten Operatoren wird im folgenden erläutert.
Konvertierungsoperator CAST
Es gibt zwei Arten von Datenkonvertierungen in Ausdrücken:
- Implizierte Konvertierung
- Explizite Konvertierung
Die implizierte Konvertierung wird vom Ausdrucksauswerter automatisch durchgeführt und
konvertiert bei Bedarf die verwendeten Datentypen. So wird bei einem Vergleich von einer
Smallint-Variable mit einer Int-Variablen, die Smallint-Variable für den Vergleich in eine
Int-Variable konvertiert. Eine implizierte Konvertierung kann nur durchgeführt werden, wenn
die Datentypen vergleichbar sind und bei der Konvertierung keine Daten verloren gehen. In den
Books Online finden Sie ein Diagramm über die möglichen implizierten Konvertierungen.
Bei jeder Operation zwischen 2 Teilausdrücken werden die Datentypen verglichen und bei Bedarf
impliziert konvertiert. Ist es dem Ausdrucksauswerter nicht möglich, ohne Datenverlust Datentypen
zu konvertieren, muss die Konvertierung explizit durchgeführt werden.
Für die explizite Konvertierung wird der Konvertierungsoperator CAST verwendet.
Der Konvertierungsoperator CAST hat eine ganz besondere Syntax. Er wird dem zu
konvertierenden Teilausdruck vorangestellt: "(SSIS-Datentyp) Ausdruck".
Beispiel: "(DT_I4) 7.6"
Hier wird die Zahl 7,6 in eine ganze Zahl konvertiert. Bei der Konvertierung wird automatisch
gerundet. Das Ergebnis ist also 8. Achten Sie darauf, dass das Dezimaltrennzeichen auch
in der deutschen Version der Punkt ist. Der Name des Operators CAST wird nicht mit aufgeführt.
Bei bestimmten Umwandlungen sind für eine korrekte Konvertierung zusätzliche Parameter
erforderlich:
| Datentyp |
Parameter |
Beispiel |
|
DT_STR |
Zeichenanzahl , Codepage |
(DT_STR,30,1252) wandelt 30 Zeichen, mithilfe der 1252-Codepage in den DT_STR-Datentyp um. |
|
DT_WSTR |
Zeichenanzahl |
(DT_WSTR,20) wandelt 20 Bytepaare, oder 20 Unicode-Zeichen, in den DT_WSTR-Datentyp um. |
|
DT_BYTES |
Byteanzahl |
(DT_BYTES,50) wandelt 50 Bytes in den DT_BYTES-Datentyp um. |
|
DT_DECIMAL |
Anzahl Dezimalstellen |
((DT_DECIMAL,2) wandelt einen numerischen Wert mithilfe von 2 Dezimalstellen in den DT_DECIMAL-Datentyp um. |
|
DT_NUMERIC |
Genauigkeit , Anzahl Dezimalstellen |
(DT_NUMERIC,10,3) wandelt einen numerischen Wert mithilfe einer Genauigkeit von 10 und 3 Dezimalstellen in den DT_NUMERIC-Datentyp um. |
|
DT_TEXT |
Codepage |
(DT_TEXT,1252) wandelt einen Wert mithilfe der 1252-Codepage in den DT_TEXT-Datentyp um. |
Tabelle 4: Die erweiterte Syntax des CAST-Operators
In der aktuellen Version des Ausdrucksauswerters erscheinen teilweise unerwartete Fehlermeldungen bei der Verwendung
des CAST-Operators. So produziert die Eingabe "(DT_Decimal,2)500" die Fehlermeldung: "Die angegebene OLE-Variante ist
ungültig". Wird die Zahl um den Dezimaltrenner ergänzt, "(DT_DECIMAL,2)500.0", wird die Konvertierung fehlerfrei
durchgeführt.
Dieser Fehler betrifft nur die deutsche Version und sollte mit dem 1.ServicePack behoben sein.
Weitergehende Informationen zur Umwandlungen von Datumsdatentypen finden Sie in den Books Online.
Funktionen
In der Ausdruckssprache steht eine Vielzahl von Funktionen zur Verfügung.
Es werden die folgenden Arten von Ausdruckfunktionen unterschieden:
- Mathematische Funktionen
- Zeichenfolgen-Funktionen
- Datums-Funktionen
- Null-Funktionen
Systeminformationen werden nicht per Funktion sondern über Systemvariable abgerufen.
Mathematische Funktionen
| Funktion |
Beschreibung |
|
ABS |
Gibt den absoluten, positiven Wert eines numerischen Ausdrucks zurück |
|
EXP |
Gibt den Exponenten für die Basis e des angegebenen Ausdrucks zurück |
|
CEILING |
Gibt die kleinste ganze Zahl zurück, die größer oder gleich einem numerischen Ausdruck ist |
|
FLOOR |
Gibt die größte ganze Zahl zurück, die kleiner oder gleich einem numerischen Ausdruck ist |
|
LN |
Gibt den natürlichen Logarithmus eines numerischen Ausdrucks zurück |
|
LOG |
Gibt den Logarithmus eines numerischen Ausdrucks zur Basis 10 zurück |
|
POWER |
Gibt das Ergebnis eines in eine Potenz erhobenen numerischen Ausdrucks zurück POWER(numerischer Ausdruck, Potenz) ; Beispiel: Power(2,3) => 8 |
|
ROUND |
Gibt einen numerischen Ausdruck zurück, der auf die angegebene Länge oder Genauigkeit gerundet wurde
ROUND(numerischer Ausdruck,Länge) ; Beispiel: Round(1234.557,2) => 1234.56 |
|
SIGN |
Gibt das positive (+) oder negative (-) Vorzeichen oder Null (0) für einen numerischen Ausdruck zurück |
|
SQUARE |
Gibt das Quadrat eines numerischen Ausdrucks zurück |
|
SQRT |
Gibt die Quadratwurzel eines numerischen Ausdrucks zurück |
Tabelle 5: Mathematischen Funktionen in Ausdrücken
Die meisten mathematischen Funktionen sind selbsterklärend und haben als Input nur einen Parameter.
Nur die beiden Funktionen POWER und ROUND erwarten 2 Parameter.
Zeichenfolgefunktionen
| Funktion |
Beschreibung |
|
CODEPOINT |
Gibt den Unicode-Codewert des äußeren linken Zeichens eines Zeichenausdrucks zurück |
|
FINDSTRING |
Gibt den einsbasierten Index für das angegebene Auftreten einer Zeichenfolge innerhalb eines Ausdrucks zurück.
FINDSTRING(Ausdruck, Suchtext, Auftreten)
Ausdruck: Ausdruck der durchsucht wird
Suchtext: Suchtext
Auftreten: Das wievielte Auftreten des Suchtextes gemeldet werden soll
Beispiel: FINDSTRING ("Server","r",1) => 3 |
|
HEX |
Gibt eine Zeichenfolge zurück, die den hexadezimalen Wert einer ganzen Zahl darstellt. |
|
LEN |
Gibt die Anzahl von Zeichen in einem Zeichenausdruck zurück. |
|
LOWER |
Gibt einen Zeichenausdruck zurück, nachdem Großbuchstaben in Kleinbuchstaben konvertiert wurden |
|
LTRIM |
Gibt einen Zeichenausdruck zurück, nachdem führende Leerzeichen entfernt wurden |
|
REPLACE |
Gibt einen Zeichenausdruck zurück, nachdem eine Zeichenfolge im Ausdruck durch eine andere Zeichenfolge oder durch eine leere Zeichenfolge ersetzt wurde.
REPLACE(Ausdruck, Suchtext, Ersetzungstext)
Ausdruck: Ausdruck der durchsucht und indem ersetzt wird
Suchtext: Der gesuchte Text
Ersetzungstext: Dieser Text ersetzt den Suchtext
Beispiel: REPLACE("SQL SERVER 2000","2000","2005")
Ergebnis: SQL SERVER 2005 |
|
REPLICATE |
Gibt einen Zeichenausdruck zurück, der mehrfach repliziert wurde |
|
REVERSE |
Gibt einen Zeichenausdruck in umgekehrter Reihenfolge zurück |
|
RIGHT |
Gibt den Teil einer Zeichenfolge zurück, der bei einer angegebenen Anzahl von Zeichen von rechts beginnend anfängt |
|
RTRIM |
Gibt einen Zeichenausdruck zurück, nachdem nachfolgende Leerzeichen entfernt wurden |
|
SUBSTRING |
Gibt einen Teil eines Zeichenausdrucks zurück.
SUBSTRING(Ausdruck, Position, Länge)
Ausdruck: Text aus dem ein Teil ausgeschnitten werden soll
Position: Position, ab der ausgeschnitten werden soll. Mit 1 beginnend
Länge: Anzahl auszuschneidender Zeichen
Beispiel: SUBSTRING("SQL SERVER",5,4)
Ergebnis: SERV |
|
TRIM |
Gibt einen Zeichenausdruck zurück, nachdem führende und nachfolgende Leerzeichen entfernt wurden |
|
UPPER |
Gibt einen Zeichenausdruck zurück, nachdem Kleinbuchstaben in Großbuchstaben konvertiert wurden |
Tabelle 6: Zeichenfolgefunktionen in Ausdrücken
Datumsfunktionen
| Funktion |
Beschreibung |
|
DATEADD |
Gibt einen neuen DT_DBTIMESTAMP-Wert zurück, indem ein Datums- oder Zeitintervall einem angegebenen Datum hinzugefügt wird. |
|
DATEDIFF |
Gibt die Anzahl von Datums- und Zeiteinheiten zurück, die zwischen zwei angegebenen Daten überschritten wurden. |
|
DATEPART |
Gibt eine ganze Zahl zurück, die einen datepart-Wert eines Datums darstellt. |
|
DAY |
Gibt eine ganze Zahl zurück, die den Tag des angegebenen Datums darstellt. |
|
GETDATE |
Gibt das aktuelle Datum des Systems zurück. |
|
GETUTCDATE |
Gibt das aktuelle Datum des Systems als UTC-Zeit (Universal Time Coordinate oder Greenwich Mean Time) zurück. |
|
MONTH |
Gibt eine ganze Zahl zurück, die den Monat des angegebenen Datums darstellt. |
|
YEAR |
Gibt eine ganze Zahl zurück, die das Jahr des angegebenen Datums darstellt. |
Tabelle 7: Datumsfunktionen in Ausdrücken
Die Syntax der Datumsfunktionen ist etwas umfangreicher. Um den gegebenen Rahmen nicht zu überschreiten wird
stellvertretend nur die DATEDIFF-Funktion besprochen. Die anderen Datumsfunktionen bauen auf einer ähnlichen
Syntax auf. Die Einzelheiten entnehmen Sie bitte den Books Online.
DATEDIFF
Die Funktion DATEDIFF gibt die Anzahl der überschrittenen Datums- und Zeiteinheiten zwischen zwei Daten zurück.
Die Syntax lautet:
DATEDIFF(Datumseinheit, Startdatum, Enddatum)
Das Startdatum und das Enddatum müssen Datums-Datentypen sein. Liegt das Datum als Text vor, muss es explizit
konvertiert werden.
Die Differenz zwischen zwei Daten kann in unterschiedlichen Datumseinheiten gemessen werden. Die gewünschte
Einheit in einem Literal angegeben. Das Literal enthält die Abkürzung der gewünschten Datumseinheit.
| Datumseinheit |
Abkürzungen |
Beschreibung |
|
Year |
yy, yyyy |
Jahr |
|
Year |
yy, yyyy |
Jahr |
|
Quarter |
qq,q |
Quartal (1 bis 4) |
|
Month |
mm, m |
Monat (1 bis 12) |
|
Dayofyear |
dy, y |
Tag im Jahr (1 bis 366) |
|
Day |
dd, d |
Tag im Monat (1 bis 31) |
|
Week |
wk, ww |
amerikanische Kalenderwoche (1 bis 53) |
|
Weekday |
dw, w |
Wochentag (1 bis 7) ; Sonntag ist 1.Tag der Woche |
|
Hour |
hh |
Stunde (0 bis 23) |
|
Minute |
mi, n |
Minute (0 bis 59) |
|
Second |
Ss, s |
Sekunde (0 bis 59) |
|
Millisecond |
ms |
Millisekunde (0 bis 999) |
Tabelle 8: Datumseinheiten der Zeitfunktion
Beispiele:
DATEDIFF("dd", (DT_DBTIMESTAMP)"21.01.2006", (DT_DBTIMESTAMP)"15.02.2006")
Es wird die Anzahl der Differenztage zwischen dem 21.Januar.2006 und dem 15.Februar.2006 ermittelt.
Als Ergebnis werden 25 Differenztage ausgegeben.
DATEDIFF("mm", (DT_DBTIMESTAMP)"21.1.2006",GETDATE())
Es wird die Anzahl der Monate zwischen dem 21.Januar.2006 und dem aktuellen Datum ermittelt.
Das Ergebnis hängt vom aktuellen Monat ab.
Nullfunktionen
| Funktion |
Beschreibung |
|
ISNULL |
Gibt abhängig davon, ob ein Ausdruck NULL ist, ein boolesches Ergebnis zurück. |
|
NULL |
Gibt einen NULL-Wert eines angeforderten Datentyps zurück. |
Tabelle 9: Nullfunktionen
Die ISNULL-Funktion gibt ein Ergebnis vom Datentyp DT_Bool zurück, in Abhängig davon, ob der überprüfte Ausdruck
NULL ist.
Diese Funktion ist sehr gut geeignet um Null-Werte im Datenfluss abzufangen. Unter einem Null-Wert versteht man
gar keinen Wert, es ist nicht die Zahl "0" gemeint. Datenbankfelder können Nullwerte enthalten.
Datenbankabfragen können Nullwerte zurückgeben und auch aus anderen Datenquellen können Nullwerte entstehen.
So erzeugt beispielsweise die Komponente Excel-Quelle Nullwerte, wenn der Feldinhalt einer Spalte nicht mit
den automatisch generierten Metadaten übereinstimmt.
Der Ausdrucksgenerator
Der Ausdrucks-Generator vereinfacht die Eingabe von Ausdrücken. Er steht aber nicht überall zur Verfügung und kann
abhängig von der Komponente unterschiedliche Ausprägungen haben.
Die Verwendung des Ausdrucksgenerators wird anhand eines Beispiels gezeigt.
In einer Skripttask wird die Eigenschaft ReadWriteVariables dynamisch über eine Variable zugewiesen.
Mit einem Doppelklick auf die Skripttask wird der Skriptask-Editor geöffnet. Die Eingabe von Ausdrücken
erfolgt auf der untersten Seite Ausdrücke.
Abbildung 1: Eintrag der Variable "@[Benutzer::Var]"
Eine direkte Eingabe ist an dieser Stelle nicht möglich. Zuerst muss über die Erweiterungsschaltfläche ( ) der
Eigenschaftsausdrucks-Editor geöffnet werden, um aus der Liste der zur Verfügung stehenden Eigenschaften die
gewünschte auszuwählen:
Abbildung 2: Auswahl der Eigenschaften
Die zur Verfügung stehenden Eigenschaften variieren von Task zu Task. In unserem Beispiel wählen wir die
Eigenschaft ReadWriteVariables aus.
Der Ausdruck kann im Eigenschaftsausdrucks-Editor direkt eingegeben werden. Bei der direkten Eingabe wird keine
Syntaxprüfung durchgeführt und es steht auch keinerlei Eingabeunterstützung zur Verfügung.
Diese wird nur im Ausdrucks-Generator angeboten, welcher durch einen Klick auf die Erweiterungsschaltfläche geöffnet
wird.
Abbildung 3: Der Ausdrucksgenerator
Der Ausdrucks-Generator unterstützt Sie bei der Auswahl von Variablen, Funktionen, Typenumwandlungen und
Operatoren. In den meisten Fällen wird es aber trotz allem notwendig sein den Ausdruck manuell zu vervollständigen.
Durch Klicken auf die Schaltfläche "Ausdruck auswerten" können Sie eine Testauswertung des Ausdruckes veranlassen.
Bei falscher Syntax erscheint eine ausführliche Fehlermeldung.
Das Ergebnis des ausgewerteten Ausdruckes wird angezeigt. In unserm Beispiel hat die Benutzervariable "VAR" den
Wert Test1. Dieser Wert wird der Eigenschaft ReadWriteVariables zugewiesen. Dies können Sie überprüfen, indem Sie im Skripttask-Editor auf die Seite Skript wechseln. Der Wert des Ausdruckes wird unter ReadWriteVariables angezeigt.
Diese Eigenschaft kann in der Skripttask zwar manuell überschrieben werden, aber bei jeder Paketausführung
wird der Ausdruck ausgewertet und die Eigenschaft mit dem Ausdruckswert überschrieben.
Transformations-Editor
Bei den beiden Datenflusskomponenten Bedingtes Teilen und Abgeleitete Spalte ersetzt eine Variante des
Ausdrucks-Generators den ansonsten üblichen Editor. Auch wenn in der Kopfzeile Transformations-Editor steht,
handelt es sich schlicht um einen erweiterten Ausdrucks-Generator. Die Erweiterungen spezifizieren lediglich
die Verwendung des Ausdruckes. In der Komponente Bedingtes Teilen wird in Abhängigkeit vom Wert der Ausdrücke
(Boolean - True oder False) der Datenfluss auf mehrere Pipelines geteilt.
In der Komponente Abgeleitete Spalte wird der Wert der Ausdrücke in einer neuen Spalte gespeichert. Für jede Spalte muss ein Spaltenname und einige Metadaten angegeben werden.
Weitere Details zu den Komponenten entnehmen Sie bitte der Einzelbesprechung.
Ausdrücke in Variablen
Um Variable mittels eines Ausdrucks zu füllen, muss das Eigenschaftsfenster mit F4 geöffnet und die Eigenschaft
EvaluateAsExpression auf True gesetzt werden. Der Ausdruck muss manuell eingegeben werde, da kein Generator
zur Verfügung steht. Mit dem Verlassen der Eigenschaft Expression wird der Ausdruck ausgewertet. Die
Eigenschaft Value wird mit dem Wert des Ausdruckes gefüllt. Bei fehlerhafter Syntax wird eine Fehlermeldung
ausgegeben. Siehe hierzu Abschnitt Ausdrücke als Variablenwert.
Einige Besonderheiten in der Ausdrucksprogrammierung werden nachfolgenden in kurzen Beispielen erläutert:
Vergleiche
Vergleiche werden immer mit Doppelzeichen durchgeführt:
| Vergleich |
Zeichen |
|
direkter Vergleich |
== |
|
ungleich |
!= |
|
logisches UND |
&& |
|
logisches ODER |
|| |
Tabelle 10: Vergleiche und ihre Syntax
Der folgende Ausdruck wertet den String "ABC" aus:
(SUBSTRING("ABC",1,1) == "A" || SUBSTRING("ABC",1,1) == "B") && SUBSTRING("ABC",3,1) == "C"
Geprüft wird:
- ob der 1.Buchstabe ein "A" ist
- oder ob der 1.Buchstabe ein "B" ist
- und ob der 3.Buchstabe ein "C" ist
Sind die Bedingungen erfüllt wird das boolesche Ergebnis True ausgegeben
Bedingung(if)
Eine explizite If-Funktion ist in der Ausdruckssprache nicht vorhanden. Eine bedingte Ausführung wird über ein
nachgestelltes Fragezeichen programmiert:
Boolescher-Ausdruck ? Ausdruck-if-true : Ausdruck-if-false
Mit einem Fragezeichen hinter einem Ausdruck vom Datentyp DT_BOOL (True oder False) wird eine Bedingung definiert. Ist das Ergebnis True, wird der Ausdruck vor dem Doppelpunkt ausgeführt. Ist das Ergebnis False, wird der Ausdruck nach dem Doppelpunkt ausgeführt. Beide möglichen Ausdrücke müssen den gleichen Datentyp zurückgeben.
Beispiel: Der 1.Buchstabe der Variablen "@Var" soll mit "A" verglichen werden. Ist der 1.Buchstabe ein "A" soll der Ausdruck den Text "Ergebnis ist richtig" zurückgeben, andernfalls den Text "Ergebnis ist falsch". Der Ausdruck müsste in diesem Fall lauten:
(SUBSTRING(@Var,1,1) == "A") ? "Ergebnis ist richtig" : "Ergebnis ist falsch"