Analytics Builder 10.14.0 | Bedienungsanleitung für Analytics Builder for Cumulocity IoT | Blockreferenz | Berechnung | Ausdruck
 
Ausdruck
apama.analyticskit.blocks.core.Expression
Bewertet einen Ausdruck, um arithmetische oder logische Berechnungen oder Zeichenfolgen-Operationen durchzuführen.
Bei Änderung der Eingabewerte (wenn alle verwendeten Eingaben erhalten wurden), wird der im Parameter angegebene Ausdruck neu berechnet.
Die Ausdruckssprache ist ähnlich wie Apama EPL (siehe EPL-Referenz in der Apama-Dokumentation), sie ist jedoch auf die Typen float, integer, string und boolean beschränkt. Alle numerischen Literale werden als Wert vom Typ float behandelt, auch wenn sie keinen Bruchteil haben. Integer-Werte können nur als Ergebnis von Funktionen wie etwa floor() erhalten werden. Ähnlich wie bei Apama EPL, können integer und float nicht implizit in einem Ausdruck konvertiert werden. Wenn das Ergebnis eines Ausdrucks ein integer-Wert ist, wird er automatisch in float umgewandelt (dies kann zu einem Genauigkeitsverlust führen). Boolesche Werte können mittels der booleschen Literale true und false angegeben werden. Bei booleschen Literalen wird nicht zwischen Groß- und Kleinbuchstaben unterschieden, somit ist zum Beispiel TRUE ebenso zulässig wie True. Zeichenfolgenwerte können angegeben werden, indem die Zeichenfolgen-Literale in doppelte Anführungszeichen gesetzt werden (zum Beispiel "mein Wert"). Sonderzeichen werden mit einem Rückwärtsschrägstrich (\) codiert. Die folgenden Sonderzeichen (und ihre Codierung) werden in Zeichenfolgen-Literalen unterstützt:
*Doppelte Anführungszeichen - \"
*Rückwärtsschrägstrich - \\
*Zeilenumbruch - \n
*Tabulator - \t
Die Werte der Eingaben sind als input1, input2, input3, input4 und input5 verfügbar. Die Eingabewerte können vom Typ float, string, boolean und any sein. Logische, relationale, numerische und Gleichheits-Operatoren können mit Werten der unterstützten Typen verwendet werden. Bei logischen Operatoren wird nicht zwischen Groß- und Kleinbuchstaben unterschieden, somit ist zum Beispiel AND ebenso zulässig wie And. Integrierte Methoden für die Typen float, integer, string und boolean können aufgerufen werden, unter anderem x.abs() (absoluter Wert von x), x.pow(y) (x hoch y), x.sin() (Sinus von x in Radiant), x.round() (Rundung von x auf die nächste Integerzahl) und s.ltrim() (ohne Leerzeichen am Anfang der Zeichenfolge s). Integrierte statische Methoden der unterstützten Typen können durch Angabe des Typnamens, gefolgt von einem Punkt (.) und vom Methodennamen aufgerufen werden, zum Beispiel float.max(input1, input2) (findet den größeren von zwei Eingabewerten). Integrierte Konstanten bei den unterstützten Typen können durch Angabe des Typnamens, gefolgt von einem Punkt (.) und dem Konstantennamen aufgerufen werden, zum Beispiel float.E (Eulersche Konstante). Werte vom Typ any werden zur Laufzeit entpackt, um den Ausdruck zu bewerten. Nach dem Entpacken muss der Wert vom Typ float, string oder boolean sein. Der Typ-Checker versucht, die Ausdrücke während der Validierungsphase zu validieren, aber dies ist beim Typ any nicht immer möglich. Wenn also ein Ausdruck den Typ any enthält, kann er, selbst wenn er die Validierungsphase übersteht, zur Laufzeit fehlschlagen, weil ein falscher Variablentyp übergeben oder eine nicht unterstützte Operation ausgeführt wurde. Eine vollständige Liste der integrierten Methoden und Konstanten finden Sie in der API-Referenz für EPL (ApamaDoc), die über die Apama-Dokumentation aufgerufen werden kann.
Beispiele:
*Umrechnung von Fahrenheit in Celsius: (input1 - 32) * 5/9
*Umrechnung von Tagen in Sekunden: input1 * 86400
*Durchschnittswert aus 4 Eingaben: (input1 + input2 + input3 + input4) / 4
*Vergleich mit Schwelle: input1 > 3.1412 (siehe aber auch Schwellenblock)
*Pythagoras zur Berechnung der Hypotenuse eines rechtwinkligen Dreiecks: (input1.pow(2) + input2.pow(2)).sqrt()
*Vergleich auf 3 Dezimalstellen: (input1 * 1000 - (input1 * 1000).fractionalPart()) = (input2 * 1000 - (input2 * 1000).fractionalPart())
*Überprüfung eines Bereichs: input1 >= 1 and input1 <= 10
*Vergleich einer Zeichenfolge: input1 = "my value"
*Größerer Wert: float.max(input1, float.PI)
*Rest von Integerdivision: input1.round() % input2.round()
Parameter
Name
Beschreibung
Typ
Hinweise
Ausdruck
Ein Ausdruck - die Darstellung eines EPL-Ausdrucks als Zeichenkette.
Ähnlich EPL-Ausdrücken, aber mit den oben beschriebenen Unterschieden.
string
Details zum Eingangsport
Name
Beschreibung
Typ
input1
Erster Eingabewert; im Ausdruck als input1 zu verwenden.
any
input2
Zweiter Eingabewert; im Ausdruck als input2 zu verwenden.
any
input3
Dritter Eingabewert; im Ausdruck als input3 zu verwenden.
any
input4
Vierter Eingabewert; im Ausdruck als input4 zu verwenden.
any
input5
Fünfter Eingabewert; im Ausdruck als input5 zu verwenden.
any
Details zum Ausgangsport
Name
Beschreibung
Typ
Ergebnis
Ergebnis des Ausdrucks.
any