Funktionen - AWS IoT Core

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Funktionen

Verwenden Sie die folgenden integrierten Funktionen in den SELECT- oder WHERE-Klauseln Ihrer SQL-Ausdrücke.

abs(Decimal)

Gibt den absoluten Wert einer Zahl zurück. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: abs(-5) gibt 5 zurück.

Argumenttyp Ergebnis
Int Int, der absolute Wert des Arguments
Decimal Decimal, der absolute Wert des Arguments
Boolean Undefined.
String Decimal: das Ergebnis ist der absolute Wert des Arguments. Wenn die Zeichenfolge nicht konvertiert werden kann, ist das Ergebnis Undefined.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

accountid()

Gibt die ID des Kontos zurück, das diese Regel als String besitzt. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

accountid() = "123456789012"

acos(Decimal)

Gibt den umgekehrten Kosinus einer Zahl im Bogenmaß zurück. Decimal-Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: acos(0) = 1,5707963267948966

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der umgekehrte Kosinus des Arguments. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Decimal Decimal (mit doppelter Genauigkeit), der umgekehrte Kosinus des Arguments. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Boolean Undefined.
String Decimal, der umgekehrte Kosinus des Arguments. Wenn die Zeichenfolge nicht konvertiert werden kann, ist das Ergebnis Undefined. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

asin(Decimal)

Gibt den umgekehrten Sinus einer Zahl im Bogenmaß zurück. Decimal-Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: asin(0) = 0,0

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der umgekehrte Sinus des Arguments. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Decimal Decimal (mit doppelter Genauigkeit), der umgekehrte Sinus des Arguments. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Boolean Undefined.
String Decimal (mit doppelter Genauigkeit), der umgekehrte Sinus des Arguments. Wenn die Zeichenfolge nicht konvertiert werden kann, ist das Ergebnis Undefined. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

atan(Decimal)

Gibt den umgekehrten Tangens einer Zahl im Bogenmaß zurück. Decimal-Argumente werden vor Anwendung des Features auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: atan(0) = 0,0

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der umgekehrte Tangens des Arguments. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Decimal Decimal (mit doppelter Genauigkeit), der umgekehrte Tangens des Arguments. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Boolean Undefined.
String Decimal, der umgekehrte Tangens des Arguments. Wenn die Zeichenfolge nicht konvertiert werden kann, ist das Ergebnis Undefined. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

atan2(Decimal, Decimal)

Gibt den Winkel im Bogenmaß zwischen der positiven x-Achse und dem Punkt (x, y) an, der in den beiden Argumenten definiert ist.  Der Winkel ist positiv für Winkel gegen den Uhrzeigersinn (obere Halbebene, y > 0) und negativ für Winkel im Uhrzeigersinn (untere Halbebene, y < 0). Decimal Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: atan2(1, 0) = 1,5707963267948966

Argumenttyp Argumenttyp Ergebnis
Int/Decimal Int/Decimal Decimal (mit doppelter Genauigkeit), der Winkel zwischen der x-Achse und dem festgelegten Punkt (x, y)
Int/Decimal/String Int/Decimal/String Decimal, der umgekehrte Tangens des beschriebenen Punkts. Wenn eine Zeichenfolge nicht konvertiert werden kann, ist das Ergebnis Undefined.
Anderer Wert Anderer Wert Undefined.

aws_lambda(functionArn, inputJson)

Ruft die angegebene Lambda-Funktion. Dabei wird inputJson an die Lambda-Funktion übergeben und das von der Lambda-Funktion generierte JSON-Objekt zurückgegeben.

Argumente
Argument Beschreibung
functionArn

Der ARN der aufzurufenden Lambda-Funktion. Die Lambda-Funktion muss JSON-Daten zurückgeben.

inputJson

Die an die Lambda-Funktion übergebene JSON-Eingabe. Um Abfragen und Literale verschachtelter Objekte zu übergeben, müssen Sie die SQL-Version 2016-03-23 verwenden.

Sie müssen AWS IoT lambda:InvokeFunction Berechtigungen erteilen, um die angegebene Lambda-Funktion aufzurufen. Das folgende Beispiel zeigt, wie die lambda:InvokeFunction-Berechtigung mit AWS CLI erteilt wird:

aws lambda add-permission --function-name "function_name" --region "region" --principal iot.amazonaws.com --source-arn arn:aws:iot:us-east-1:account_id:rule/rule_name --source-account "account_id" --statement-id "unique_id" --action "lambda:InvokeFunction"

Im Folgenden werden die Argumente für den Befehl add-permission aufgeführt:

--function-name

Der Name der Lambda-Funktion. Sie fügen eine neue Berechtigung hinzu, um die Ressourcenrichtlinie der Funktion zu aktualisieren.

--Region

Die AWS-Region Ihres Kontos.

--Prinzipal

Der Prinzipal, der die Berechtigung erhält. Dies sollte dazu dieneniot.amazonaws.com, die AWS IoT Erlaubnis zum Aufrufen einer Lambda-Funktion zu gewähren.

--source-arn

Der ARN der Regel. Sie können den get-topic-rule AWS CLI Befehl verwenden, um den ARN einer Regel abzurufen.

--source-account

Der AWS-Konto Ort, an dem die Regel definiert ist.

--statement-id

Ein eindeutiger Anweisungsbezeichner

--action

Die Lambda-Aktionen, die Sie in dieser Anweisung zulassen möchten. Um AWS IoT den Aufruf einer Lambda-Funktion zu erlauben, geben Sie lambda:InvokeFunction an.

Wichtig

Wenn Sie eine Berechtigung für einen AWS IoT Prinzipal hinzufügen, ohne das source-arn oder anzugeben, kann jedesource-account, AWS-Konto die mit Ihrer Lambda-Aktion eine Regel erstellt, Regeln auslösen, von denen aus Ihre Lambda-Funktion aufgerufen wird. AWS IoT Weitere Informationen finden Sie unter Lambda-Berechtigungsmodell.

Bei einer JSON-Nachrichtennutzlast wie:

{ "attribute1": 21, "attribute2": "value" }

Die aws_lambda-Funktion kann verwendet werden, um die Lambda-Funktion wie folgt aufzurufen.

SELECT aws_lambda("arn:aws:lambda:us-east-1:account_id:function:lambda_function", {"payload":attribute1}) as output FROM 'topic-filter'

Wenn Sie möchten, dass die vollständige MQTT-Nachrichtnutzlast übergeben wird, können Sie die JSON-Nutzlast mit „*“ angeben.

SELECT aws_lambda("arn:aws:lambda:us-east-1:account_id:function:lambda_function", *) as output FROM 'topic-filter'

payload.inner.element wählt Daten von der zu Thema „Thema/Unterthema” veröffentlichten Nachrichten aus.

some.value wählt Daten aus der Ausgabe aus, die von der Lambda Funktion generiert wurde.

Anmerkung

Die Regeln-Engine begrenzt die Ausführungsdauer von Lambda-Funktionen. Aufrufe von Lambda-Funktionen über Regeln sollten innerhalb von 2.000 Millisekunden abgeschlossen werden.

bitand(Int, Int)

Führt Bit für Bit AND für die Bit-Darstellungen der beiden Int(-konvertierten) Argumente durch. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: bitand(13, 5) = 5

Argumenttyp Argumenttyp Ergebnis
Int Int Int, ein bitweises AND der beiden Argumente.
Int/Decimal Int/Decimal Int, ein bitweises AND der beiden Argumente. Alle Zahlen, die nicht vom Typ Int sind, werden auf den nächsten Int-Wert abgerundet. Wenn eines der Argumente nicht in einen Int-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Int/Decimal/String Int/Decimal/String Int, ein bitweises AND der beiden Argumente. Alle Zeichenfolgen werden in Dezimal-Werte konvertiert und auf den nächsten Int-Wert abgerundet. Wenn die Konvertierung fehlschlägt, ist das Ergebnis Undefined.
Anderer Wert Anderer Wert Undefined.

bitor(Int, Int)

Führt eine bBit für Bit einen OR-Vorgang für die Bit-Darstellungen der beiden Argumente durch. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: bitor(8, 5) = 13

Argumenttyp Argumenttyp Ergebnis
Int Int Int, das bitweise OR der beiden Argumente.
Int/Decimal Int/Decimal Int, das bitweise OR der beiden Argumente. Alle Zahlen, die nicht vom Typ Int sind, werden auf den nächsten Int-Wert abgerundet. Wenn die Konvertierung fehlschlägt, ist das Ergebnis Undefined.
Int/Decimal/String Int/Decimal/String Int, das bitweise OR für die beiden Argumente. Alle Zeichenfolgen werden in Dezimal-Werte konvertiert und auf den nächsten Int-Wert abgerundet. Wenn die Konvertierung fehlschlägt, ist das Ergebnis Undefined.
Anderer Wert Anderer Wert Undefined.

bitxor(Int, Int)

Führt Bit für Bit eine XOR-Maßnahme für die Bit-Darstellungen der beiden Int(-konvertierten) Argumente durch. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: bitor(13, 5) = 8

Argumenttyp Argumenttyp Ergebnis
Int Int Int, ein bitweises XOR für die beiden Argumente
Int/Decimal Int/Decimal Int, ein bitweises XOR für die beiden Argumente Zahlen, die nicht vom Typ Int sind, werden auf den nächsten Int-Wert abgerundet.
Int/Decimal/String Int/Decimal/String Int, ein bitweises XOR für die beiden Argumente. Zeichenfolgen werden in Dezimal-Werte konvertiert und auf den nächsten Int-Wert abgerundet. Wenn eine Konvertierung fehlschlägt, ist das Ergebnis Undefined.
Anderer Wert Anderer Wert Undefined.

bitnot(Int)

Führt Bit für Bit einen NOT-Vorgang für die Bit-Darstellungen des Int(-konvertierten) Arguments durch. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: bitnot(13) = 2

Argumenttyp Ergebnis
Int Int, ein bitweises NOT des Arguments.
Decimal Int, ein bitweises NOT des Arguments. Der Decimal-Wert wird auf den nächsten Int-Wert abgerundet.
String Int, ein bitweises NOT des Arguments. Zeichenfolgen werden in Dezimal-Werte konvertiert und auf den nächsten Int-Wert abgerundet. Wenn eine Konvertierung fehlschlägt, ist das Ergebnis Undefined.
Anderer Wert Anderer Wert.

cast()

Konvertiert einen Wert von einem Datentyp in einen anderen. Diese Umwandlung verhält sich größtenteils wie die Standardkonvertierungen. Zusätzlich verfügt sie jedoch über die Möglichkeit, Zahlen von oder zu booleschen Werten umzuwandeln. Wenn Sie AWS IoT nicht feststellen können, wie ein Typ in einen anderen umgewandelt werden soll, lautet das Ergebnis. Undefined Unterstützt von SQL Version 2015-10-08 und höher. Format: cast(value as type).

Beispiel:

cast(true as Int) = 1

Die folgenden Schlüsselwörter können beim Aufrufen von cast unter Umständen nach „as“ angezeigt werden:

Für SQL-Version 2015-10-08 und 2016-03-23
Stichwort Ergebnis
String Wandelt einen Wert in String um.
Nvarchar Wandelt einen Wert in String um.
Text Wandelt einen Wert in String um.
Ntext Wandelt einen Wert in String um.
varchar Wandelt einen Wert in String um.
Int Wandelt einen Wert in Int um.
Ganzzahl Wandelt einen Wert in Int um.
Double Überträgt den Wert auf Decimal (mit doppelter Genauigkeit).
Außerdem für SQL-Version 2016-03-23
Stichwort Ergebnis
Decimal Wandelt einen Wert in Decimal um.
Bool Wandelt einen Wert in Boolean um.
Boolean Wandelt einen Wert in Boolean um.

Umwandlungsregeln:

In Dezimalwert umwandeln
Argumenttyp Ergebnis
Int Ein Wert vom Typ Decimal ohne Dezimaltrennzeichen
Decimal

Der Quellwert

Anmerkung

Bei SQL V2 (23.03.2016) geben numerische Werte, bei denen es sich um ganze Zahlen handelt, z. B. 10.0 einen Int Wert (10) anstelle des erwarteten Decimal Werts (10.0) zurück. Um ganzzahlige numerische Werte zuverlässig in Decimal-Werte umzuwandeln, verwenden Sie SQL V1 (2015-10-08) für die Regelabfrageanweisung.

Boolean "true" = 1,0, "false" = 0,0
String Versucht, die Zeichenfolge als Decimal aufzulösen. AWS IoT versucht, Zeichenfolgen aufzulösen, die dem regex entsprechen: ^-?\d+(\.\d+)?((?i)E-?\d+)?$. „0“, „-1,2“ und „5E-12“ sind Beispiele für Zeichenfolgen, die automatisch in Dezimal-Werte umgewandelt werden.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.
In Ganzzahl umwandeln
Argumenttyp Ergebnis
Int Der Quellwert
Decimal Der Quellwert, auf den nächsten Int-Wert abgerundet
Boolean "true" = 1,0, "false" = 0,0
String Versucht, die Zeichenfolge als Decimal aufzulösen. AWS IoT versucht, Zeichenfolgen aufzulösen, die dem regex entsprechen: ^-?\d+(\.\d+)?((?i)E-?\d+)?$. „0“, „-1,2“ und „5E-12“ sind Beispiele für Zeichenfolgen, die automatisch in Dezimal-Werte umgewandelt werden. AWS IoT versucht, die Zeichenfolge in einen Decimal-Wert zu konvertieren und auf den nächsten Int-Wert abzurunden.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.
In Boolean umwandeln
Argumenttyp Ergebnis
Int 0 = false, alle Werte außer Null = true
Decimal 0 = false, alle Werte außer Null = true
Boolean Der Quellwert
String "true" = wahr und "false" = falsch (ohne Beachtung der Groß- und Kleinschreibung). Andere Zeichenfolgenwerte sind = Undefined.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.
In Zeichenfolge umwandeln
Argumenttyp Ergebnis
Int Eine Zeichenfolgendarstellung des Int-Werts in Standardnotation
Decimal Eine Zeichenfolge, die den Decimal-Wert in Standardnotation darstellt
Boolean "true" oder "false", in Kleinbuchstaben
String "true" = wahr und "false" = falsch (ohne Beachtung der Groß- und Kleinschreibung). Andere Zeichenfolgenwerte sind = Undefined.
Array Das in JSON serialisierte Array. Die resultierende Zeichenfolge ist eine durch Kommata getrennte Liste in eckigen Klammern. String-Werte werden mit Anführungszeichen angegeben. Dies ist bei Decimal-, Int-, Boolean-Werten nicht der Fall.
Object Das in JSON serialisierte Objekt. Die JSON-Zeichenfolge ist eine durch Kommata getrennte Liste von Schlüssel-Wert-Paaren, die mit geschweiften Klammern beginnt und endet. String-Werte werden mit Anführungszeichen angegeben. Dies ist bei Decimal-, Int-, – Booleanund Null-Werten nicht der Fall.
Null Undefined.
Undefined Undefined.

ceil(Decimal)

Rundet den angegebenen Decimal-Wert auf den nächsten Int-Wert auf. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

ceil(1.2) = 2

ceil(-1.2) = -1

Argumenttyp Ergebnis
Int Int, der Argumentwert
Decimal Int, der Decimal-Wert, auf den nächsten Int-Wert gerundet
String Int. Die Zeichenfolge wird in Decimal konvertiert und auf den nächsten Int aufgerundet. Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Anderer Wert Undefined.

chr(String)

Gibt das ASCII-Zeichen zurück, das dem angegebenen Int-Argument entspricht. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

chr(65) = "A".

chr(49) = "1".

Argumenttyp Ergebnis
Int Das Zeichen, das dem angegebenen ASCII-Wert entspricht. Wenn das Argument kein gültiger ASCII-Wert ist, ist das Ergebnis Undefined.
Decimal Das Zeichen, das dem angegebenen ASCII-Wert entspricht. Das Decimal-Argument wird auf den nächsten Int-Wert abgerundet. Wenn das Argument kein gültiger ASCII-Wert ist, ist das Ergebnis Undefined.
Boolean Undefined.
String Wenn der String-Wert nicht in einen Decimal-Wert konvertiert werden kann, wird er auf den nächsten Int-Wert abgerundet. Wenn das Argument kein gültiger ASCII-Wert ist, ist das Ergebnis Undefined.
Array Undefined.
Object Undefined.
Null Undefined.
Anderer Wert Undefined.

clientid()

Gibt die ID des MQTT-Clients zurück, der die Nachricht sendet, oder n/a, wenn die Nachricht nicht über MQTT gesendet wurde. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

clientid() = "123456789012"

concat()

Hängt Arrays oder Zeichenfolgen aneinander an. Diese Funktion akzeptiert eine beliebige Anzahl von Argumenten und gibt einen – Stringoder Array-Wert zurück. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

concat() = Undefined.

concat(1) = "1".

concat([1, 2, 3], 4) = [1, 2, 3, 4].

concat([1, 2, 3], "hello") = [1, 2, 3, "hello"]

concat("con", "cat") = "concat"

concat(1, "hello") = "1hello"

concat("he","is","man") = "heisman"

concat([1, 2, 3], "hello", [4, 5, 6]) = [1, 2, 3, "hello", 4, 5, 6]

Anzahl der Argumente Ergebnis
0 Undefined.
1 Das Argument wird unverändert zurückgegeben.
2+

Wenn ein Argument ein Array ist, ist das Ergebnis ein einzelnes Array, das alle Argumente enthält. Wenn kein Argument den Typ Array hat, und mindestens ein Argument den Typ String hat, ist das Ergebnis eine Verkettung der String-Darstellungen aller Argumente. Argumente werden mithilfe von oben genannten Standardkonvertierungen in Zeichenfolgen konvertiert.

cos(Decimal)

Gibt den Kosinus einer Zahl im Bogenmaß zurück. Decimal-Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

cos(0) = 1.

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der Kosinus des Arguments. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Decimal Decimal (mit doppelter Genauigkeit), der Kosinus des Arguments. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Boolean Undefined.
String Decimal (mit doppelter Genauigkeit), der Kosinus des Arguments. Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

cosh(Decimal)

Gibt den hyperbolischen Kosinus einer Zahl im Bogenmaß zurück. Decimal-Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: cosh(2.3) = 5,037220649268761.

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der hyperbolische Kosinus des Arguments. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Decimal Decimal (mit doppelter Genauigkeit), der hyperbolische Kosinus des Arguments. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Boolean Undefined.
String Decimal (mit doppelter Genauigkeit), der hyperbolische Kosinus des Arguments. Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined. Imaginäre Ergebnisse werden als Undefined zurückgegeben.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

decode(value, decodingScheme)

Verwenden Sie die decode Funktion, um einen kodierten Wert zu dekodieren. Wenn es sich bei der dekodierten Zeichenfolge um ein JSON-Dokument handelt, wird ein adressierbares Objekt zurückgegeben. Andernfalls wird die dekodierte Zeichenfolge als Zeichenfolge zurückgegeben. Die Funktion gibt NULL zurück, wenn die Zeichenfolge nicht dekodiert werden kann. Diese Funktion unterstützt die Dekodierung von Base64-kodierten Zeichenketten und das Nachrichtenformat Protocol Buffer (protobuf).

Unterstützt von der SQL Version vom 23.03.2016 und höher.

Wert

Ein Zeichenkettenwert oder einer der gültigen Ausdrücke, wie unter AWS IoT SQL-Referenz definiert, die eine Zeichenfolge zurückgeben.

decodingScheme

Eine Literalzeichenfolge, die das Schema darstellt, das zur Dekodierung des Wertes verwendet wurde. Aktuell werden nur 'base64' und 'proto' unterstützt.

Dekodierung von base64-verschlüsselten Strings

In diesem Beispiel enthält die Nachrichtennutzlast einen kodierten Wert.

{ encoded_temp: "eyAidGVtcGVyYXR1cmUiOiAzMyB9Cg==" }

Die decode-Funktion in dieser SQL-Anweisung dekodiert den Wert in der Nachrichtennutzlast.

SELECT decode(encoded_temp,"base64").temperature AS temp from 'topic/subtopic'

Die Dekodierung des encoded_temp-Wertes führt zu dem folgenden gültigen JSON-Dokument, das es der SELECT-Anweisung ermöglicht, den Temperaturwert zu lesen.

{ "temperature": 33 }

Das Ergebnis der SELECT-Anweisung in diesem Beispiel wird hier gezeigt.

{ "temp": 33 }

Ist der dekodierte Wert kein gültiges JSON-Dokument, wird der dekodierte Wert als Zeichenfolge zurückgegeben.

Payloads der protobuf-Nachrichten entschlüsseln

Sie können SQL-Funktion dekodieren, um eine Regel zu konfigurieren, die die protobuf-Nachrichtennutzlast dekodieren kann. Weitere Informationen finden Sie unter Payloads von protobuf-Nachrichten dekodieren.

Die Signatur der Funktion sieht wie folgt aus:

decode(<ENCODED DATA>, 'proto', '<S3 BUCKET NAME>', '<S3 OBJECT KEY>', '<PROTO NAME>', '<MESSAGE TYPE>')
ENCODED DATA

Gibt die protobuf-kodierten Daten an, die dekodiert werden sollen. Wenn es sich bei der gesamten an die Regel gesendeten Nachricht um protobuf-kodierte Daten handelt, können Sie die eingehende rohe binäre Nutzlast mit * referenzieren. Andernfalls muss es sich bei diesem Feld um eine Base-64-kodierte JSON-Zeichenfolge handeln, und ein Verweis auf die Zeichenfolge kann direkt übergeben werden.

1) Um eine eingehende rohe binäre protobuf-Nutzlast zu dekodieren:

decode(*, 'proto', ...)

2) Um eine protobuf-kodierte Nachricht zu dekodieren, die durch eine Base64-kodierte Zeichenfolge 'a.b' dargestellt wird:

decode(a.b, 'proto', ...)
proto

Spezifiziert die zu dekodierenden Daten in einem protobuf-Nachrichtenformat. Wenn Sie base64 statt proto angeben, dekodiert diese Funktion Base64-kodierte Zeichenketten als JSON.

S3 BUCKET NAME

Der Name des Amazon S3 Buckets, in den Sie die FileDescriptorSet-Datei hochgeladen haben.

S3 OBJECT KEY

Der Objektschlüssel, das die FileDescriptorSet-Datei im Amazon S3 S3-Bucket spezifiziert.

PROTO NAME

Der Name der .proto-Datei (ohne Erweiterung), aus der die FileDescriptorSet-Datei generiert wurde.

MESSAGE TYPE

Der Name der protobuf-Nachrichtenstruktur innerhalb der FileDescriptorSet-Datei, der die zu dekodierenden Daten entsprechen sollen.

Ein Beispiel für einen SQL-Ausdruck, der die SQL-Funktion decode verwendet, kann wie folgt aussehen:

SELECT VALUE decode(*, 'proto', 's3-bucket', 'messageformat.desc', 'myproto', 'messagetype') FROM 'some/topic'
  • *

    Stellt eine binäre eingehende Nutzlast dar, die dem aufgerufenen protobuf-Nachrichtentyp mit dem Namen mymessagetypeentspricht.

  • messageformat.desc

    Die in einem Amazon S3 S3-Bucket gespeicherte FileDescriptorSet-Datei mit dem Namen s3-bucket.

  • myproto

    Die .proto-Originaldatei, die zur Generierung der FileDescriptorSet-Datei mit dem Namen myproto.proto verwendet wurde.

  • messagetype

    Der aufgerufene Nachrichtentyp messagetype (zusammen mit allen importierten Abhängigkeiten), wie in definiertmyproto.proto.

encode(value, encodingScheme)

Verwenden Sie die Funktion encode, um die Nutzlast, bei der es sich möglicherweise um Nicht-JSON-Daten handelt, auf der Grundlage des Kodierungsschemas in ihre String-Darstellung zu kodieren. Unterstützt von der SQL Version vom 23.03.2016 und höher.

Wert

Einer der gültigen Ausdrücke, wie in AWS IoT SQL-Referenz definiert. Sie können „*“ angeben, um die gesamte Nutzlast zu verschlüsseln, unabhängig davon, ob sie das JSON-Format oder ein anderes Format aufweist. Wenn Sie einen Ausdruck angeben, wird das Ergebnis der Auswertung vor dem Verschlüsseln in eine Zeichenfolge umgewandelt.

encodingScheme

Eine Literalzeichenfolge, die das zu verwendende Verschlüsselungsschema darstellt. Derzeit wird nur 'base64' unterstützt.

endswith(String, String)

Gibt einen Wert vom Typ Boolean zurück, der angibt, ob das erste String-Argument mit dem zweiten String-Argument endet. Wenn ein Argument Null oder Undefined ist, ist das Ergebnis Undefined. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: endswith("cat","at") = true.

Argumenttyp 1 Argumenttyp 2 Ergebnis
String String "True", wenn das erste Argument auf das zweite Argument endet. Ansonsten „false”.
Anderer Wert Anderer Wert Beide Argumente werden mithilfe der Standardkonvertierungsregeln zu Zeichenfolgen konvertiert. "True", wenn das erste Argument auf das zweite Argument endet. Ansonsten „false”. Wenn ein Argument Null oder Undefined ist, ist das Ergebnis Undefined.

exp(Decimal)

Gibt "e" zurück, potenziert mit dem Decimal-Argument. Decimal-Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: exp(1) = e.

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), e ^ Argument.
Decimal Decimal (mit doppelter Genauigkeit), e ^ Argument.
String Decimal (mit doppelter Genauigkeit), e ^ Argument. Wenn der String-Wert nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Anderer Wert Undefined.

floor(Decimal)

Rundet den angegebenen Decimal-Wert auf den nächsten Int-Wert ab. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

floor(1.2) = 1

floor(-1.2) = -2

Argumenttyp Ergebnis
Int Int, der Argumentwert
Decimal Int, der auf den nächsten Int abgerundete Decimal-Wert.
String Int. Die Zeichenfolge wird konvertiert in Decimal und auf den nächsten Int-Wert abgerundet. Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Anderer Wert Undefined.

get

Extrahiert einen Wert aus einem sammlungsartigen Typ (Array, Zeichenfolge, Objekt). Auf das erste Argument wird keine Konvertierung angewendet. Die Konvertierung wird wie in der Tabelle dokumentiert auf das zweite Argument angewendet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

get(["a", "b", "c"], 1) = "b"

get({"a":"b"}, "a") = "b"

get("abc", 0) = „a“.

Argumenttyp 1 Argumenttyp 2 Ergebnis
Array Beliebiger Typ (konvertiert in Int) Das Element am 0-basierten Index des Array-Werts, der vom zweiten Argument angegeben wird (konvertiert in Int). Wenn die Konvertierung fehlschlägt, ist das Ergebnis Undefined. Wenn sich der Index außerhalb von Array befindet (negativ oder >= array.length), ist das Ergebnis Undefined.
String Beliebiger Typ (konvertiert in Int) Das Zeichen am 0-basierten Index der Zeichenfolge, der vom zweiten Argument angegeben wird (konvertiert in Int). Wenn die Konvertierung fehlschlägt, ist das Ergebnis Undefined. Wenn sich der Index außerhalb der Zeichenfolge befindet (negativ oder >= string.length), ist das Ergebnis Undefined.
Object String (keine Konvertierung wird angewendet) Der im ersten Argumentobjekt gespeicherte Wert, der dem Zeichenfolgenschlüssel entspricht, der als zweites Argument angegeben wurde.
Anderer Wert Beliebiger Wert Undefined.

get_dynamodb (tableName,,, partitionKeyName, partitionKeyValue roleArn) sortKeyName sortKeyValue

Ruft Daten aus einer DynamoDB-Tabelle ab. get_dynamodb() ermöglicht es Ihnen, eine DynamoDB-Tabelle abzufragen, während eine Regel evaluiert wird. Sie können den Nachrichten-Payload mit Hilfe von Daten aus DynamoDB filtern oder erweitern. Unterstützt von der SQL Version vom 23.03.2016 und höher.

get_dynamodb() verwendet folgenden Parameter:

tableName

Der Name der DynamoDB-Tabelle für die Abfrage.

partitionKeyName

Der Name des Partitionsschlüssels. Weitere Informationen finden Sie unter DynamoDB Keys.

partitionKeyValue

Der Wert des Partitionsschlüssels, der zur Identifizierung eines Datensatzes verwendet wird. Weitere Informationen finden Sie unter DynamoDB Keys.

sortKeyName

(Optional) Der Name des Sortierschlüssels. Dieser Parameter ist nur erforderlich, wenn die abgefragte DynamoDB-Tabelle einen zusammengesetzten Schlüssel verwendet. Weitere Informationen finden Sie unter DynamoDB Keys.

sortKeyValue

Der Wert des Sortierschlüssels. Dieser Parameter ist nur erforderlich, wenn die abgefragte DynamoDB-Tabelle einen zusammengesetzten Schlüssel verwendet. Weitere Informationen finden Sie unter DynamoDB Keys.

roleArn

Der ARN der IAM-Rolle, der den Zugriff auf die DynamoDB-Tabelle gewährt. Die Regel-Engine übernimmt diese Rolle, um in Ihrem Namen auf die DynamoDB-Tabelle zuzugreifen. Vermeiden Sie die Verwendung einer zu großzügigen Rolle. Erteilen Sie der Rolle nur die von der Regel benötigten Berechtigungen. Nachfolgend finden Sie eine Beispielrichtlinie, die Zugriff auf eine DynamoDB-Tabelle gewährt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "arn:aws:dynamodb:aws-region:account-id:table/table-name" } ] }}

Als Beispiel dafür, wie Sie get_dynamodb() verwenden können, nehmen wir an, Sie haben eine DynamoDB-Tabelle, die Geräte-ID- und Standortinformationen für alle mit AWS IoT verbundenen Geräte enthält. Die folgende SELECT-Anweisung verwendet die get_dynamodb()-Funktion, um den Standort für die angegebene Geräte-ID abzurufen:

SELECT *, get_dynamodb("InServiceDevices", "deviceId", id, "arn:aws:iam::12345678910:role/getdynamo").location AS location FROM 'some/topic'

Anmerkung
  • Sie können get_dynamodb() maximal einmal pro SQL-Anweisung aufrufen. Der mehrfache Aufruf von get_dynamodb() in einer einzigen SQL-Anweisung führt dazu, dass die Regel ohne Aufruf von Aktionen beendet wird.

  • Wenn get_dynamodb() mehr als 8 KB an Daten zurückgibt, darf die Regelaktion nicht aufgerufen werden.

get_mqtt_property(name)

Verweist auf einen der folgenden MQTT5-Header: contentType, payLoadFormatIndicator, responseTopic und correlationData Diese Funktion verwendet eine der folgenden Literalzeichenfolgen als Argument:content_type, format_indicator. response_topic und correlation_data Weitere Informationen in der folgenden Tabelle mit Funktionsargumenten.

contentType

Zeichenfolge: Eine UTF-8-kodierte Zeichenfolge, die den Inhalt der Veröffentlichungsnachricht beschreibt.

payLoadFormatIndikator

Zeichenfolge: Ein Enum-Zeichenfolgenwert, der angibt, ob die Nutzlast als UTF-8 formatiert ist. Gültige Werte sind UNSPECIFIED_BYTES und UTF8_DATA.

responseTopic

Zeichenfolge: Eine UTF-8 kodierte Zeichenfolge, die als Themenname für eine Antwortnachricht verwendet wird. Das Antwortthema wird verwendet, um das Thema zu beschreiben, das der Empfänger im Rahmen des Ablaufs Anforderung-Antwort veröffentlichen soll. Das Thema darf keine Platzhalterzeichen enthalten.

correlationData

Zeichenfolge: Die base64-kodierten Binärdaten, die vom Absender der Request Message verwendet werden, um zu identifizieren, für welche Anforderung die Response Message bestimmt ist, wenn sie empfangen wird.

Die folgende Tabelle zeigt die zulässigen Funktionsargumente und die zugehörigen Rückgabetypen für die get_mqtt_property-Funktion:

Funktionsargumente
SQL Zurückgegebener Datentyp (falls vorhanden) Zurückgegebener Datentyp (falls vorhanden)
get_mqtt_property("format_indicator") Zeichenfolge (UNSPECIFIED_BYTES oder UTF8_DATA) Zeichenfolge (UNSPECIFIED_BYTES)
get_mqtt_property("content_type") String Undefined
get_mqtt_property("response_topic") String Undefined
get_mqtt_property("correlation_data") base64-kodierte Zeichenfolge Undefined
get_mqtt_property("some_invalid_name") Undefined Undefined

Das folgende Beispiel für Rules SQL verweist auf einen der folgenden MQTT5-Header:,, und. contentType payLoadFormatIndicator responseTopic correlationData

SELECT *, get_mqtt_property('content_type') as contentType, get_mqtt_property('format_indicator') as payloadFormatIndicator, get_mqtt_property('response_topic') as responseTopic, get_mqtt_property('correlation_data') as correlationData FROM 'some/topic'

get_secret (secretId, geheimer Typ, Schlüssel, roleArn)

Ruft den Wert des verschlüsselten SecretString oder SecretBinary-Feldes der aktuellen Version eines Secrets in AWS Secrets Manager ab. Weitere Hinweise zum Erstellen und Verwalten von Geheimnissen finden Sie unter CreateSecretUpdateSecret, und PutSecretValue.

get_secret() verwendet folgenden Parameter:

secretId

Zeichenfolge: Der Amazon-Ressourcenname (ARN) oder der Anzeigename des Secrets, das abgerufen werden soll.

SecretType

Zeichenfolge: Der Secret-Typ. Zulässige Werte: SecretString | SecretBinary.

SecretString
  • Informationen zu Geheimnissen, die Sie als JSON-Objekte mithilfe der APIs AWS CLI, der oder der AWS Secrets Manager Konsole erstellen:

    • Wenn Sie einen Wert für den key-Parameter angeben, gibt diese Funktion den Wert des angegebenen Schlüssels zurück.

    • Wenn Sie keinen Wert für den key-Parameter angeben, gibt diese Funktion das gesamte JSON-Objekt zurück.

  • Für Geheimnisse, die Sie als Nicht-JSON-Objekte erstellen, indem Sie die APIs verwenden oder: AWS CLI

    • Wenn Sie einen Wert für den key-Parameter angeben, schlägt diese Funktion mit einer Ausnahme fehl.

    • Wenn Sie keinen Wert für den key-Parameter angeben, gibt diese Funktion den Inhalt des Secrets zurück.

SecretBinary
  • Wenn Sie einen Wert für den key-Parameter angeben, schlägt diese Funktion mit einer Ausnahme fehl.

  • Wenn Sie keinen Wert für den key-Parameter angeben, gibt diese Funktion den geheimen Wert als Base64-kodierte UTF-8-Zeichenfolge zurück.

Schlüssel

(Optional) Zeichenfolge: Der Schlüsselname in einem JSON-Objekt, das im SecretString-Feld eines Geheimnisses gespeichert ist. Verwenden Sie diesen Wert, wenn Sie statt des gesamten JSON-Objekts nur den Wert eines in einem geheimen Schlüssel gespeicherten Schlüssels abrufen möchten.

Wenn Sie einen Wert für diesen Parameter angeben und das Geheimnis kein JSON-Objekt in seinem SecretString-Feld enthält, schlägt diese Funktion mit einer Ausnahme fehl.

roleArn

Zeichenfolge: Eine Rollen-ARN mit den Berechtigungen secretsmanager:GetSecretValue und secretsmanager:DescribeSecret.

Anmerkung

Diese Funktion gibt immer die aktuelle Version des Geheimnisses zurück (die Version mit dem AWSCURRENT Tag). Die AWS IoT Regel-Engine speichert jedes Geheimnis bis zu 15 Minuten lang im Cache. Daher kann es bis zu 15 Minuten dauern, bis die Regel-Engine ein Geheimnis aktualisiert. Das heißt, wenn Sie ein Geheimnis bis zu 15 Minuten nach einem Update mit abrufen AWS Secrets Manager, gibt diese Funktion möglicherweise die vorherige Version zurück.

Diese Funktion ist nicht kostenpflichtig, es AWS Secrets Manager fallen jedoch Gebühren an. Aufgrund des geheimen Caching-Mechanismus ruft die Regel-Engine gelegentlich AWS Secrets Manager auf. Da es sich bei der Regel-Engine um einen vollständig verteilten Dienst handelt, können Sie während des 15-minütigen Caching-Fensters mehrere Secrets Manager Manager-API-Aufrufe von der Regel-Engine sehen.

Beispiele:

Sie können die get_secret-Funktion in einem Authentifizierungsheader in einer HTTPS-Regelaktion verwenden, wie im folgenden Beispiel für die API-Schlüsselauthentifizierung.

"API_KEY": "${get_secret('API_KEY', 'SecretString', 'API_KEY_VALUE', 'arn:aws:iam::12345678910:role/getsecret')}"

Weitere Informationen zu Regelaktionen finden Sie unter HTTP.

get_thing_shadow(thingName, shadowName, roleARN)

Gibt den angegebenen Schatten des angegebenen Geräts zurück. Unterstützt von der SQL Version vom 23.03.2016 und höher.

thingName

Zeichenfolge: Der Name des Geräts, dessen Schatten Sie abrufen möchten.

shadowName

(Optionale) Zeichenfolge: Der Name des Schattens. Dieser Parameter ist nur erforderlich, wenn auf benannte Schatten verwiesen wird.

roleArn

Zeichenfolge: Eine Rollen-ARN mit der Berechtigung iot:GetThingShadow.

Beispiele:

Geben Sie bei Verwendung mit einem benannten Schatten den shadowName-Parameter an.

SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","MyThingShadow","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'

Lassen Sie bei Verwendung mit einem benannten Schatten den shadowName-Parameter aus.

SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'

get_user_properties () userPropertyKey

Verweist auf Benutzereigenschaften, eine Art von Eigenschaftsheadern, die in MQTT5 unterstützt werden.

userProperty

Zeichenfolge: Eine Benutzereigenschaft ist ein Schlüssel-Wert-Paar. Diese Funktion verwendet den Schlüssel als Argument und gibt ein Array mit allen Werten zurück, die dem zugehörigen Schlüssel entsprechen.

Funktionsargumente

Für die folgenden Benutzereigenschaften in den Nachrichtenkopfzeilen:

Schlüssel Wert
ein Schlüssel ein Wert
ein anderer Schlüssel ein anderer Wert
ein Schlüssel Wert mit doppeltem Schlüssel

Die folgende Tabelle zeigt das erwartete SQL-Verhalten:

SQL Ein Rückgabedatentyp Zurückgegebener Datenwert
get_user_properties ('irgendein Schlüssel') Zeichenfolgen-Array ['some value', 'value with duplicate key']
get_user_properties ('anderer Schlüssel') Zeichenfolgen-Array ['a different value']
get_user_properties () Array von Schlüssel-Wert-Paar-Objekten [{'"some key": "some value"'}, {"other key": "a different value"}, {"some key": "value with duplicate key"}]
get_user_properties ('Schlüssel nicht vorhandener Schlüssel') Undefined

Das folgende Beispiel für Rules SQL referenziert Benutzereigenschaften (eine Art MQTT5-Eigenschaftsheader) in die Nutzlast:

SELECT *, get_user_properties('user defined property key') as userProperty FROM 'some/topic'

Hashfunktionen

AWS IoT bietet die folgenden Hashing-Funktionen:

  • md2

  • md5

  • sha1

  • sha224

  • sha256

  • sha384

  • sha512

Alle Hashfunktionen erwarten ein Zeichenfolgenargument. Das Ergebnis ist der Hashwert dieser Zeichenfolge. Standard-Zeichenfolgenkonvertierungen gelten für alle Argumente, die keine Zeichenfolgen sind. Alle Hashfunktionen werden von der SQL Version 2015-10-08 und höher unterstützt.

Beispiele:

md2("hello") = "a9046c73e00331af68917d3804f70655"

md5("hello") = "5d41402abc4b2a76b9719d911017c592"

indexof(String, String)

Gibt den ersten Index (0-basiert) des zweiten Arguments als Teilzeichenfolge des ersten Arguments zurück. Beide Argumente werden als Zeichenfolgen erwartet. Argumente, die keine Zeichenfolgen sind, unterliegen den Standardregeln für die Zeichenfolgenkonvertierung. Diese Funktion gilt nicht für Arrays, nur für Zeichenfolgen. Unterstützt von der SQL Version vom 23.03.2016 und höher.

Beispiele:

indexof("abcd", "bc") = 1

isNull()

Gibt „true“ zurück, wenn das Argument der Wert Null ist. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

isNull(5) = false.

isNull(Null) = true.

Argumenttyp Ergebnis
Int false
Decimal false
Boolean false
String false
Array false
Object false
Null true
Undefined false

isUndefined()

Gibt „true“ zurück, wenn das Argument Undefined ist. Unterstützt von der SQL Version vom 23.03.2016 und höher.

Beispiele:

isUndefined(5) = false.

isUndefined(floor([1,2,3]))) = true.

Argumenttyp Ergebnis
Int false
Decimal false
Boolean false
String false
Array false
Object false
Null false
Undefined true

length(String)

Gibt die Anzahl der Zeichen in der angegebenen Zeichenfolge zurück. Für andere Argumente als String gelten Standardkonvertierungsregeln. Unterstützt von der SQL Version vom 23.03.2016 und höher.

Beispiele:

length("hi") = 2

length(false) = 5

ln(Decimal)

Gibt den natürlichen Logarithmus des Arguments zurück. Decimal-Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: ln(e) = 1.

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der natürliche Logarithmus des Arguments
Decimal Decimal (mit doppelter Genauigkeit), der natürliche Logarithmus des Arguments
Boolean Undefined.
String Decimal (mit doppelter Genauigkeit), der natürliche Logarithmus des Arguments Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

log(Decimal)

Gibt den Logarithmus des Arguments zur Basis 10 zurück. Decimal-Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: log(100) = 2.0.

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der Logarithmus des Arguments zur Basis 10.
Decimal Decimal (mit doppelter Genauigkeit), der Logarithmus des Arguments zur Basis 10.
Boolean Undefined.
String Decimal (mit doppelter Genauigkeit), der Logarithmus des Arguments zur Basis 10. Wenn der String-Wert nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

lower(String)

Gibt die kleingeschriebene Version des angegebenen String-Werts zurück. Andere Argumente als Zeichenfolgen werden mithilfe der Standardkonvertierungsregeln zu Zeichenfolgen konvertiert. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

lower("HELLO") = „hello“

lower(["HELLO"]) = "[\"hello\"]"

lpad(String, Int)

Gibt das Argument String zurück, das auf der linken Seite mit der vom zweiten Argument festgelegten Anzahl an Leerzeichen aufgefüllt wurde. Das Argument Int muss zwischen 0 und 1000 liegen. Wenn der angegebene Wert außerhalb des gültigen Bereichs liegt, wird das Argument auf den nächsten gültigen Wert (0 oder 1000) festgelegt. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

lpad("hello", 2) = "  hello".

lpad(1, 3) = "   1"

Argumenttyp 1 Argumenttyp 2 Ergebnis
String Int String, der angegebene String-Wert, der auf der linken Seite mit der Anzahl an Leerzeichen aufgefüllt wurde, die dem angegebenen Int-Wert entspricht
String Decimal Das Decimal-Argument wird auf den nächsten Int-Wert abgerundet und String wird links mit der angegebenen Anzahl an Leerzeichen aufgefüllt
String String Das zweite Argument wird in einen Decimal-Wert konvertiert, der auf den nächsten Int-Wert abgerundet wird und der String-Wert wird links mit der angegebenen Anzahl an Leerzeichen aufgefüllt. Wenn das zweite Argument nicht in einen Int-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Anderer Wert Int/Decimal/String Der erste Wert wird mit der Standardkonvertierungen in String konvertiert und anschließend wird die LPAD-Funktion auf diesen String angewendet. Wenn er nicht konvertiert werden kann, ist das Ergebnis Undefined.
Beliebiger Wert Anderer Wert Undefined.

ltrim(String)

Entfernt alle führenden Leerzeichen (Tabulatoren und Leerzeichen) aus dem angegebenen String-Wert. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

Ltrim(" h i ") = "hi "

Argumenttyp Ergebnis
Int Die String-Darstellung des Int-Werts nach dem Entfernen der führenden Leerzeichen.
Decimal Die String-Darstellung des Decimal-Werts nach dem Entfernen der führenden Leerzeichen.
Boolean Die String-Darstellung des booleschen Werts („true“ oder „false“) nach dem Entfernen der führenden Leerzeichen.
String Das Argument nach dem Entfernen der führenden Leerzeichen.
Array Die String-Darstellung dvon es Array (mit Standardkonvertierungsregeln) nach dem Entfernen der führenden Leerzeichen.
Object Die String-Darstellung des Objekts (mit Standardkonvertierungsregeln) nach dem Entfernen der führenden Leerzeichen.
Null Undefined.
Undefined Undefined.

machinelearning_predict (modelId, roleArn, Datensatz)

Verwenden Sie die machinelearning_predict Funktion, um anhand der Daten aus einer MQTT-Nachricht, die auf einem SageMaker Amazon-Modell basiert, Vorhersagen zu treffen. Unterstützt von SQL Version 2015-10-08 und höher. Die Argumente für die machinelearning_predict-Funktion sind:

modelId

Die ID des Modells, für das die Voraussage ausgeführt werden soll. Der Echtzeitendpunkt des Modells muss aktiviert sein.

roleArn

Die IAM-Rolle, die über eine Richtlinie mit den Berechtigungen machinelearning:Predict und machinelearning:GetMLModel verfügt und Zugriff auf das Modell erlaubt, für das die Voraussage ausgeführt wird.

record

Die Daten, die an die SageMaker Predict API übergeben werden sollen. Dies sollte als JSON-Objekt mit einer einzelnen Ebene dargestellt werden. Wenn der Datensatz ein JSON-Objekt mit mehreren Ebenen ist, wird der Datensatz auf eine Ebene gebracht, indem seine Werte serialisiert werden. Das folgende JSON-Objekt:

{ "key1": {"innerKey1": "value1"}, "key2": 0}

wird beispielsweise folgendermaßen geändert:

{ "key1": "{\"innerKey1\": \"value1\"}", "key2": 0}

Die Funktion gibt ein JSON-Objekt mit den folgenden Feldern zurück:

predictedLabel

Die Klassifizierung der Eingabe auf Grundlage des Modells

Details

Enthält die folgenden Attribute:

PredictiveModelType

Der Modelltyp. Gültige Werte sind REGRESSION, BINARY, MULTICLASS.

Algorithmus

Der Algorithmus, der von verwendet wird SageMaker , um Vorhersagen zu treffen. Dieser Wert muss SGD sein.

predictedScores

Enthält den Klassifizierungs-Rohwert für jede Bezeichnung.

predictedValue

Der von vorhergesagte Wert SageMaker.

mod(Decimal, Decimal)

Gibt den Rest zurück, der beim Teilen des ersten Arguments durch das zweite Argument entstanden ist. Äquivalent mit remainder(Decimal, Decimal). Sie können auch "%" als infix-Operator für die gleiche Modulfunktionalität verwenden. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: mod(8, 3) = 2

Left operator Right operator Output
Int Int Int, das erste Argumentmodulo des zweiten Arguments
Int/Decimal Int/Decimal Decimal, das erste Argumentmodulo des zweiten Operanden
String/Int/Decimal String/Int/Decimal Wenn alle Zeichenfolgen in Dezimal-Werte konvertiert werden, ist das Ergebnis das erste Argumentmodulo des zweiten Arguments. Andernfalls Undefined.
Anderer Wert Anderer Wert Undefined.

nanvl (AnyValue, AnyValue)

Gibt das erste Argument zurück, wenn es ein gültiger Decimal-Wert ist. Andernfalls wird das zweite Argument zurückgegeben. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: Nanvl(8, 3) = 8.

Argumenttyp 1 Argumenttyp 2 Output
Undefined Beliebiger Wert Das zweite Argument
Null Beliebiger Wert Das zweite Argument
Decimal (NaN) Beliebiger Wert Das zweite Argument
Decimal (nicht NaN) Beliebiger Wert Das erste Argument
Anderer Wert Beliebiger Wert Das erste Argument

newuuid()

Gibt eine zufällige 16-Byte-UUID zurück. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: newuuid() = 123a4567-b89c-12d3-e456-789012345000

numbytes(String)

Gibt die Anzahl von Bytes in der UTF-8-Codierung der angegebenen Zeichenfolge zurück. Für andere Argumente als String gelten Standardkonvertierungsregeln. Unterstützt von der SQL Version vom 23.03.2016 und höher.

Beispiele:

numbytes("hi") = 2

numbytes("€") = 3

parse_time(String, Long, [String])

Verwenden Sie die Funktion parse_time, um einen Zeitstempel in ein verständliches Datums- und Zeitformat umzuwandeln. Unterstützt von der SQL Version vom 23.03.2016 und höher. Informationen zur Konvertierung einer Zeitstempelzeichenfolge in Millisekunden finden Sie unter time_to_epoch (Zeichenfolge, Zeichenfolge).

Die parse_time-Funktion verwendet folgende Argumente:

pattern

(Zeichenfolge) Ein Datums-/Uhrzeitmuster, das den Joda-Time-Formaten folgt.

Zeitstempel

(Long) Die zu formatierende Zeit in Millisekunden seit dem Startdatum der Unixzeit. Siehe Funktion timestamp().

Zeitzone

(Zeichenfolge) Die Zeitzone des formatierten Datums bzw. der formatierten Uhrzeit. Der Standardwert ist "UTC". Die Funktion unterstützt Joda-Zeitzonen Dieses Argument ist optional.

Beispiele:

Wenn diese Nachricht für das Thema „A/B“ veröffentlicht wird, wird die Nutzlast {"ts": "1970.01.01 AD at 21:46:40 CST"} an den S3-Bucket gesendet:

{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT parse_time(\"yyyy.MM.dd G 'at' HH:mm:ss z\", 100000000, 'America/Belize' ) as ts FROM 'A/B'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "KEY_NAME" } } ], "ruleName": "RULE_NAME" } }

Wenn diese Nachricht für das Thema „A/B“ veröffentlicht wird, wird eine Nutzlast ähnlich {"ts": "2017.06.09 AD at 17:19:46 UTC"} (aber mit aktuellen Datum/Uhrzeit) an den S3-Bucket gesendet:

{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT parse_time(\"yyyy.MM.dd G 'at' HH:mm:ss z\", timestamp() ) as ts FROM 'A/B'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false, "actions": [ { "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "KEY_NAME" } } ], "ruleName": "RULE_NAME" } }

parse_time() kann auch als Ersatz-Vorlage verwendet werden. Wenn diese Nachricht beispielsweise für das Thema „A/B“ veröffentlicht wird, wird die Nutzlast an den S3-Bucket mit Schlüssel = „2017“ gesendet:

{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT * FROM 'A/B'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false, "actions": [{ "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "${parse_time('yyyy', timestamp(), 'UTC')}" } }], "ruleName": "RULE_NAME" } }

power(Decimal, Decimal)

Gibt das erste Argument, potenziert mit dem zweiten Argument, zurück. Decimal-Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: power(2, 5) = 32,0

Argumenttyp 1 Argumenttyp 2 Output
Int/Decimal Int/Decimal Ein Decimal-Wert (mit doppelter Genauigkeit), das erste Argument, potenziert mit dem zweiten Argument
Int/Decimal/String Int/Decimal/String Ein Decimal-Wert (mit doppelter Genauigkeit), das erste Argument, potenziert mit dem zweiten Argument Alle Zeichenfolgen werden in Dezimal-Werte konvertiert. Wenn String-Werte nicht in Decimal-Werte umgewandelt werden können, ist das Ergebnis Undefined.
Anderer Wert Anderer Wert Undefined.

Prinzipal()

Gibt den Prinzipal zurück, den das Gerät für die Authentifizierung verwendet, basierend darauf, wie die auslösende Nachricht veröffentlicht wurde. Die folgende Tabelle beschreibt den Prinzipal, der für jede Veröffentlichungsmethode und jedes Protokoll zurückgegeben wird.

So wird die Nachricht veröffentlicht Protokoll Anmeldeinformationstyp Auftraggeber
MQTT-Client MQTT X.509-Gerätezertifikat X.509-Zertifikat-Thumbprint
AWS IoT MQTT-Client für die Konsole MQTT IAM-Benutzer oder Rolle iam-role-id: Sitzungsname
AWS CLI HTTP IAM-Benutzer oder Rolle userid
AWS IoT Geräte-SDK MQTT X.509-Gerätezertifikat X.509-Zertifikat-Thumbprint
AWS IoT Geräte-SDK MQTT vorbei WebSocket IAM-Benutzer oder Rolle userid

Die folgenden Beispiele zeigen die verschiedenen Arten von Werten, die von principal() zurückgegeben werden:

  • X.509-Zertifikat-Thumbprint: ba67293af50bf2506f5f93469686da660c7c844e7b3950bfb16813e0d31e9373

  • IAM-Rollen-ID und Sitzungsname: ABCD1EFG3HIJK2LMNOP5:my-session-name

  • gibt eine Benutzer-ID zurück: ABCD1EFG3HIJK2LMNOP5

rand()

Gibt einen pseudozufälligen, einheitlich verteilten doppelten Wert zwischen 0,0 und 1,0 zurück. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

rand() = 0.8231909191640703

regexp_matches(String, String)

Gibt „true“ zurück, wenn die Zeichenfolge (erstes Argument) eine Übereinstimmung für den regulären Ausdruck (zweites Argument) enthält. Wenn Sie | den regulären Ausdruck verwenden, verwenden Sie ihn mit ().

Beispiele:

regexp_matches("aaaa", "a{2,}") = true.

regexp_matches("aaaa", "b") = false.

regexp_matches("aaa", "(aaa|bbb)") = true.

regexp_matches("bbb", "(aaa|bbb)") = true.

regexp_matches("ccc", "(aaa|bbb)") = false.

Erstes Argument:
Argumenttyp Ergebnis
Int Die String-Darstellung des Int-Werts
Decimal Die String-Darstellung des Decimal-Werts
Boolean Die String-Darstellung des booleschen Werts („true“ oder „false“)
String Das Tool String.
Array Die String-Darstellung des Array-Werts (mit Standardkonvertierungsregeln)
Object Die String-Darstellung des Objekts (mit Standardkonvertierungsregeln)
Null Undefined.
Undefined Undefined.

Zweites Argument:

Muss ein gültiger regulärer Ausdruck sein. Nicht-String-Typen werden mit den Standardkonvertierungsregeln umgewandelt in String. Je nach Typ ist die resultierende Zeichenfolge unter Umständen kein gültiger regulärer Ausdruck. Wenn das (konvertierte) Argument kein gültiger regulärer Ausdruck ist, ist das Ergebnis Undefined.

regexp_replace(String, String, String)

Ersetzt alle Vorkommen des zweiten Arguments (regulärer Ausdruck) im ersten Argument durch das dritte Argument. Verweist auf Erfassungsgruppen mit "$". Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

regexp_replace("abcd", "bc", "x") = "axd"

regexp_replace("abcd", "b(.*)d", "$1") = "ac"

Erstes Argument:
Argumenttyp Ergebnis
Int Die String-Darstellung des Int-Werts
Decimal Die String-Darstellung des Decimal-Werts
Boolean Die String-Darstellung des booleschen Werts („true“ oder „false“)
String Der Quellwert
Array Die String-Darstellung des Array-Werts (mit Standardkonvertierungsregeln)
Object Die String-Darstellung des Objekts (mit Standardkonvertierungsregeln)
Null Undefined.
Undefined Undefined.

Zweites Argument:

Muss ein gültiger regulärer Ausdruck sein. Nicht-String-Typen werden mit den Standardkonvertierungsregeln umgewandelt in String. Je nach Typ ist die resultierende Zeichenfolge unter Umständen kein gültiger regulärer Ausdruck. Wenn das (konvertierte) Argument kein gültiger regulärer Ausdruck ist, ist das Ergebnis Undefined.

Drittes Argument:

Muss eine gültige RegEx-Ersetzungszeichenfolge sein. (Kann auf Erfassungsgruppen verweisen.) Nicht-String-Typen werden mit den Standardkonvertierungsregeln umgewandelt in String. Wenn das (konvertierte) Argument keine gültige RegEx-Ersetzungszeichenfolge ist, ist das Ergebnis Undefined.

regexp_substr(String, String)

Findet die erste Übereinstimmung des zweiten Parameters (regex) im ersten Parameter. Verweist auf Erfassungsgruppen mit "$". Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

regexp_substr("hihihello", "hi") = "hi"

regexp_substr("hihihello", "(hi)*") = "hihi"

Erstes Argument:
Argumenttyp Ergebnis
Int Die String-Darstellung des Int-Werts
Decimal Die String-Darstellung des Decimal-Werts
Boolean Die String-Darstellung des booleschen Werts („true“ oder „false“)
String Das String-Argument
Array Die String-Darstellung des Array-Werts (mit Standardkonvertierungsregeln)
Object Die String-Darstellung des Objekts (mit Standardkonvertierungsregeln)
Null Undefined.
Undefined Undefined.

Zweites Argument:

Muss ein gültiger regulärer Ausdruck sein. Nicht-String-Typen werden mit den Standardkonvertierungsregeln umgewandelt in String. Je nach Typ ist die resultierende Zeichenfolge unter Umständen kein gültiger regulärer Ausdruck. Wenn das (konvertierte) Argument kein gültiger regulärer Ausdruck ist, ist das Ergebnis Undefined.

remainder(Decimal, Decimal)

Gibt den Rest zurück, der beim Teilen des ersten Arguments durch das zweite Argument entstanden ist. Äquivalent mit mod(Decimal, Decimal). Sie können auch "%" als infix-Operator für die gleiche Modulfunktionalität verwenden. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: remainder(8, 3) = 2

Left operator Right operator Output
Int Int Int, das erste Argumentmodulo des zweiten Arguments
Int/Decimal Int/Decimal Decimal, das erste Argumentmodulo des zweiten Operanden
String/Int/Decimal String/Int/Decimal Wenn alle Zeichenfolgen in Dezimal-Werte konvertiert werden, ist das Ergebnis das erste Argumentmodulo des zweiten Arguments. Andernfalls Undefined.
Anderer Wert Anderer Wert Undefined.

replace(String, String, String)

Ersetzt alle Vorkommen des zweiten Arguments im ersten Argument durch das dritte Argument. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

replace("abcd", "bc", "x") = "axd".

replace("abcdabcd", "b", "x") = "axcdaxcd".

Alle Argumente
Argumenttyp Ergebnis
Int Die String-Darstellung des Int-Werts
Decimal Die String-Darstellung des Decimal-Werts
Boolean Die String-Darstellung des booleschen Werts („true“ oder „false“)
String Der Quellwert
Array Die String-Darstellung des Array-Werts (mit Standardkonvertierungsregeln)
Object Die String-Darstellung des Objekts (mit Standardkonvertierungsregeln)
Null Undefined.
Undefined Undefined.

rpad(String, Int)

Gibt das Zeichenfolgenargument zurück, das auf der rechten Seite mit der im zweiten Argument festgelegten Anzahl an Leerzeichen aufgefüllt wurde. Das Argument Int muss zwischen 0 und 1000 liegen. Wenn der angegebene Wert außerhalb des gültigen Bereichs liegt, wird das Argument auf den nächsten gültigen Wert (0 oder 1000) festgelegt. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

rpad("hello", 2) = "hello  ".

rpad(1, 3) = "1   ".

Argumenttyp 1 Argumenttyp 2 Ergebnis
String Int Der String-Wert, der auf der rechten Seite mit der Anzahl an Leerzeichen aufgefüllt wurde, die dem angegebenen Int-Wert entspricht
String Decimal Das Decimal-Argument wird auf den nächsten Int-Wert abgerundet und die Zeichenfolge wird auf der rechten Seite mit der Anzahl an Leerzeichen aufgefüllt, die dem angegebenen Int-Wert entspricht.
String String Das zweite Argument wird in einen Decimal-Wert konvertiert, der auf den nächsten Int-Wert abgerundet wird. Der String-Wert wird auf der rechten Seite mit der Anzahl an Leerzeichen aufgefüllt, die dem Int-Wert entspricht.
Anderer Wert Int/Decimal/String Der erste Wert wird mit der Standardkonvertierungen in String konvertiert und anschließend wird die rpad-Funktion auf String angewendet. Wenn er nicht konvertiert werden kann, ist das Ergebnis Undefined.
Beliebiger Wert Anderer Wert Undefined.

round(Decimal)

Runden den angegebenen Decimal-Wert auf den nächsten Int-Wert. Wenn Decimal gleich weit von zwei Int-Werten entfernt ist (z. B. 0,5), wird Decimal aufgerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: Round(1.2) = 1.

Round(1.5) = 2.

Round(1.7) = 2.

Round(-1.1) = -1.

Round(-1.5) = -2.

Argumenttyp Ergebnis
Int Das Argument
Decimal Decimal wird auf den nächsten Int-Wert abgerundet.
String Decimal wird auf den nächsten Int-Wert abgerundet. Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Anderer Wert Undefined.

rtrim(String)

Entfernt alle nachstehenden Leerzeichen (Tabulatoren und Leerzeichen) aus dem angegebenen String-Wert. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

rtrim(" h i ") = " h i"

Argumenttyp Ergebnis
Int Die String-Darstellung des Int-Werts
Decimal Die String-Darstellung des Decimal-Werts
Boolean Die String-Darstellung des booleschen Werts („true“ oder „false“)
Array Die String-Darstellung des Array-Werts (mit Standardkonvertierungsregeln)
Object Die String-Darstellung des Objekts (mit Standardkonvertierungsregeln)
Null Undefined.
Undefined Undefined

sign(Decimal)

Gibt das Vorzeichen der angegebenen Zahl zurück. Wenn das Vorzeichen des Arguments positiv ist, wird 1 zurückgegeben. Wenn das Vorzeichen des Arguments negativ ist, wird -1 zurückgegeben. Wenn das Argument 0 ist, wird 0 zurückgegeben. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

sign(-7) = -1.

sign(0) = 0.

sign(13) = 1.

Argumenttyp Ergebnis
Int Int, das Vorzeichen des Int-Werts
Decimal Int, das Vorzeichen des Decimal-Werts
String Int, das Vorzeichen des Decimal-Werts Die Zeichenfolge wird in einen Decimal-Wert konvertiert und das Vorzeichen des Decimal-Werts wird zurückgegeben. Wenn der String-Wert nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined. Unterstützt von SQL Version 2015-10-08 und höher.
Anderer Wert Undefined.

sin(Decimal)

Gibt den Sinus einer Zahl im Bogenmaß zurück. Decimal-Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: sin(0) = 0,0

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der Sinus des Arguments.
Decimal Decimal (mit doppelter Genauigkeit), der Sinus des Arguments.
Boolean Undefined.
String Decimal (mit doppelter Genauigkeit), der Sinus des Arguments. Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

sinh(Decimal)

Gibt den hyperbolischen Sinus einer Zahl zurück. Decimal-Werte werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Das Ergebnis ist ein Decimal-Wert mit doppelter Genauigkeit. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: sinh(2.3) = 4,936961805545957

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der hyperbolische Sinus des Arguments.
Decimal Decimal (mit doppelter Genauigkeit), der hyperbolische Sinus des Arguments.
Boolean Undefined.
String Decimal (mit doppelter Genauigkeit), der hyperbolische Sinus des Arguments. Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

SourceIp

Ruft die IP-Adresse eines Geräts oder des Routers ab, der eine Verbindung zu diesem Gerät herstellt. Wenn Ihr Gerät direkt mit dem Internet verbunden ist, gibt die Funktion die Quell-IP-Adresse des Geräts zurück. Wenn Ihr Gerät mit einem Router verbunden ist, der eine Verbindung zum Internet herstellt, gibt die Funktion die Quell-IP-Adresse des Routers zurück. Unterstützt von der SQL-Version 2016-03-23. sourceip() benötigt keine Parameter.

Wichtig

Die öffentliche Quell-IP-Adresse eines Geräts ist häufig die IP-Adresse des letzten Network Address Translation (NAT)-Gateways, z. B. des Routers oder des Kabelmodems Ihres Internetdienstanbieters.

Beispiele:

sourceip()="192.158.1.38"

sourceip()="1.102.103.104"

sourceip()="2001:db8:ff00::12ab:34cd"

SQL-Beispiel

SELECT *, sourceip() as deviceIp FROM 'some/topic'

Beispiele für die Verwendung der Funktion sourceip () in AWS IoT Core Regelaktionen:

Beispiel 1

Das folgende Beispiel zeigt, wie die Funktion () als Ersatzvorlage in einer DynamoDB-Maßnahme aufgerufen wird.

{ "topicRulePayload": { "sql": "SELECT * AS message FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "dynamoDB": { "tableName": "my_ddb_table", "hashKeyField": "key", "hashKeyValue": "${sourceip()}", "rangeKeyField": "timestamp", "rangeKeyValue": "${timestamp()}", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_dynamoDB" } } ] } }

Beispiel 2

Das folgende Beispiel zeigt, wie die Funktion sourceip() als MQTT-Benutzereigenschaft mithilfe von Ersetzungsvorlagen hinzugefügt wird.

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "topic": "${topic()}/republish", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_republish", "headers": { "payloadFormatIndicator": "UTF8_DATA", "contentType": "rule/contentType", "correlationData": "cnVsZSBjb3JyZWxhdGlvbiBkYXRh", "userProperties": [ { "key": "ruleKey1", "value": "ruleValue1" }, { "key": "sourceip", "value": "${sourceip()}" } ] } } } ] } }

Sie können die Quell-IP-Adresse aus Nachrichten abrufen, die sowohl über den Message Broker- als auch über den Basic-Ingest-Pfad an AWS IoT Core Regeln weitergeleitet werden. Sie können die Quell-IP auch für IPv4- und IPv6-Nachrichten abrufen. Die Quell-IP wird wie folgt angezeigt:

IPv6: yyyy:yyyy:yyyy::yyyy:yyyy

IPv4: xxx.xxx.xxx.xxx

Anmerkung

Die ursprüngliche Quell-IP wird bei der Maßnahme Erneut veröffentlichen nicht weitergegeben.

substring(String, Int[, Int])

Erwartet einen String-Wert, gefolgt von einem oder zwei Int-Werten. Für einen String-Wert und ein einzelnes Int-Argument gibt diese Funktion die Teilzeichenfolge des angegebenen String-Werts vom angegebenen Int-Index (0-basiert, inklusive) am Ende des String-Werts zurück. Für einen String-Wert und ein zwei Int-Argumente gibt diese Funktion die Teilzeichenfolge des angegebenen String-Werts vom ersten Int-Indexargument (0-basiert, inklusive) an das zweiteInt-Indexargument (0-basiert, exklusive) zurück. Indizes, die kleiner als Null sind, werden auf Null festgelegt. Indizes, die größer sind als die String-Länge, werden auf die String-Länge festgelegt. Wenn bei drei Argumenten der erste Index mindestens genauso groß ist wie der zweite Index, ist das Ergebnis der leere String-Wert.

 Wenn die angegebenen Argumente nicht (Zeichenfolge, Int) oder (Zeichenfolge, Int, Int) lauten, werden die Standardkonvertierungen auf die Argumente angewendet, um sie in die korrekten Typen zu konvertieren. Wenn die Typen nicht konvertiert werden können, ist das Ergebnis der Funktion Undefined. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

substring("012345", 0) = "012345".

substring("012345", 2) = "2345".

substring("012345", 2.745) = "2345".

substring(123, 2) = "3".

substring("012345", -1) = "012345".

substring(true, 1.2) = "true".

substring(false, -2.411E247) = "false".

substring("012345", 1, 3) = "12".

substring("012345", -50, 50) = "012345".

substring("012345", 3, 1) = "".

sql_version()

Gibt die in dieser Regel angegebene SQL Version zurück. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

sql_version() = "2016-03-23"

sqrt(Decimal)

Gibt die Quadratwurzel einer Zahl zurück. Decimal-Argumente werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: sqrt(9) = 3.0.

Argumenttyp Ergebnis
Int Die Quadratwurzel des Arguments.
Decimal Die Quadratwurzel des Arguments.
Boolean Undefined.
String Die Quadratwurzel des Arguments. Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

startswith(String, String)

Gibt einen Wert vom Typ Boolean zurück, der angibt, ob das erste Zeichenfolgenargument mit dem zweiten Zeichenfolgenargument beginnt. Wenn ein Argument Null oder Undefined ist, ist das Ergebnis Undefined. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

startswith("ranger","ran") = true

Argumenttyp 1 Argumenttyp 2 Ergebnis
String String Ob die erste Zeichenfolge mit der zweiten Zeichenfolge beginnt
Anderer Wert Anderer Wert Beide Argumente werden mithilfe der Standardkonvertierungsregeln zu Zeichenfolgen konvertiert. Gibt „true“ zurück, wenn die erste Zeichenfolge mit der zweiten Zeichenfolge beginnt. Wenn ein Argument Null oder Undefined ist, ist das Ergebnis Undefined.

tan(Decimal)

Gibt den Tangens einer Zahl im Bogenmaß zurück. Decimal-Werte werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: tan(3) = -0,1425465430742778

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der Tangens des Arguments.
Decimal Decimal (mit doppelter Genauigkeit), der Tangens des Arguments.
Boolean Undefined.
String Decimal (mit doppelter Genauigkeit), der Tangens des Arguments. Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

tanh(Decimal)

Gibt den hyperbolischen Tangens einer Zahl im Bogenmaß zurück. Decimal-Werte werden vor dem Anwenden der Funktion auf doppelte Genauigkeit gerundet. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: tanh(2.3) = 0,9800963962661914

Argumenttyp Ergebnis
Int Decimal (mit doppelter Genauigkeit), der hyperbolische Tangens des Arguments
Decimal Decimal (mit doppelter Genauigkeit), der hyperbolische Tangens des Arguments
Boolean Undefined.
String Decimal (mit doppelter Genauigkeit), der hyperbolische Tangens des Arguments Wenn die Zeichenfolge nicht in einen Decimal-Wert konvertiert werden kann, ist das Ergebnis Undefined.
Array Undefined.
Object Undefined.
Null Undefined.
Undefined Undefined.

time_to_epoch (Zeichenfolge, Zeichenfolge)

Verwenden Sie die time_to_epoch-Funktion, um eine Zeitstempelzeichenfolge in eine Anzahl von Millisekunden in der Unix-Zeit umzuwandeln. Unterstützt von der SQL Version vom 23.03.2016 und höher. Informationen zur Konvertierung von Millisekunden in eine formatierte Zeitstempelzeichenfolge finden Sie unter parse_time(String, Long, [String]).

Die time_to_epoch-Funktion verwendet folgende Argumente:

Zeitstempel

(Zeichenfolge) Die Zeitstempelzeichenfolge, die seit der Unix-Epoche in Millisekunden konvertiert werden soll. Wenn die Zeitstempelzeichenfolge keine Zeitzone angibt, verwendet die Funktion die UTC-Zeitzone.

pattern

(Zeichenfolge) Ein Datums-/Uhrzeitmuster, das den JDK11-Zeitformaten folgt.

Beispiele:

time_to_epoch("2020-04-03 09:45:18 UTC+01:00", "yyyy-MM-dd HH:mm:ss VV") = 1585903518000

time_to_epoch("18 December 2015", "dd MMMM yyyy") = 1450396800000

time_to_epoch("2007-12-03 10:15:30.592 America/Los_Angeles", "yyyy-MM-dd HH:mm:ss.SSS z") = 1196705730592

timestamp()

Gibt den aktuellen Zeitstempel in Millisekunden ab 00:00:00 Uhr Coordinated Universal Time (UTC), Donnerstag, 1. Januar 1970, zurück, wie er von der Regel-Engine beobachtet wird. AWS IoT Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel: timestamp() = 1481825251155

topic(Decimal)

Gibt das Topic zurück, an das die Nachricht gesendet wurde, welche die Regel ausgelöst hat. Wenn kein Parameter angegeben ist, wird das gesamte Topic zurückgegeben. Der Parameter Decimal wird verwendet, um ein bestimmtes Themensegment anzugeben, wobei 1 das erste Segment bezeichnet. Für das Thema foo/bar/baz gibt topic(1) foo zurück, topic(2) gibt bar zurück usw. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

topic() = "things/myThings/thingOne"

topic(1) = "things"

Wenn Basic Ingest verwendet wird, ist das anfängliche Präfix des Themas ($aws/rules/rule-name) nicht für die Thema()-Funktion verfügbar. Angenommen, das Thema ist:

$aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights

topic() = "Buildings/Building5/Floor2/Room201/Lights"(„Gebäude/Gebäude5/Etage2/Raum201/Beleuchtung“/)

topic(3) = "Floor2" („Etage2”)

traceid()

Gibt die Ablaufverfolgungs-ID (UUID) der MQTT-Nachricht zurück oder Undefined, wenn die Nachricht nicht über MQTT gesendet wurde. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

traceid() = "12345678-1234-1234-1234-123456789012"

transformieren (Zeichenfolge, Objekt, Array)

Gibt ein Array von Objekten zurück, das das Ergebnis der angegebenen Transformation des Object Parameters für den Array-Parameter enthält.

Unterstützt von der SQL Version vom 23.03.2016 und höher.

String

Der zu verwendende Transformationsmodus. In der folgenden Tabelle finden Sie Informationen zu den unterstützten Transformationsmodi und dazu, wie sie die Array-Parameter Result aus den Object und erstellen.

Object

Ein Objekt, das die Attribute enthält, die auf jedes Element von Array angewendet werden sollen.

Array

Eine Reihe von Objekten, auf die die Attribute von Object angewendet werden.

Jedes Objekt in diesem Array entspricht einem Objekt in der Antwort der Funktion. Jedes Objekt in der Antwort der Funktion enthält die Attribute, die im ursprünglichen Objekt vorhanden sind, und die Attribute, die von Object bereitgestellt werden, wie durch den in String angegebenen Transformationsmodus bestimmt.

String Parameter

Object Parameter

Array Parameter

Ergebnis

enrichArray

Object

Array von -Objekten.

Ein Array von Objekten, in dem jedes Objekt die Attribute eines Elements aus dem Array-Parameter und die Attribute des Object-Parameters enthält.

Jeder andere Wert

Beliebiger Wert

Beliebiger Wert

Undefined

Anmerkung

Das von dieser Funktion zurückgegebene Array ist auf 128 KiB begrenzt.

Beispiel 1 für die Transformationsfunktion

Dieses Beispiel zeigt, wie die transform()-Funktion aus einem Datenobjekt und einem Array ein einzelnes Array von Objekten erzeugt.

In diesem Beispiel wird folgende Nachricht im MQTT-Thema A/B veröffentlicht.

{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }

Diese SQL-Anweisung für eine Themenregelaktion verwendet die transform()-Funktion mit dem Wert String von enrichArray. In diesem Beispiel Object handelt es sich um die attributes-Eigenschaft aus der Nachrichtennutzlast und um Array das values Array, das drei Objekte enthält.

select value transform("enrichArray", attributes, values) from 'A/B'

Nach dem Empfang der Nachrichtennutzdaten wird die SQL-Anweisung zu der folgenden Antwort ausgewertet.

[ { "a": 3, "data1": 1, "data2": 2 }, { "b": 4, "data1": 1, "data2": 2 }, { "c": 5, "data1": 1, "data2": 2 } ]

Beispiel 2 für die Transformationsfunktion

Dieses Beispiel zeigt, wie die transform()-Funktion Literalwerte verwenden kann, um einzelne Attribute aus der Nachrichtennutzlast einzubeziehen und umzubenennen.

In diesem Beispiel wird folgende Nachricht im MQTT-Thema A/B veröffentlicht. Dies ist dieselbe Nachricht, die in Beispiel 1 für die Transformationsfunktion verwendet wurde.

{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }

Diese SQL-Anweisung für eine Themenregelaktion verwendet die transform()-Funktion mit dem Wert String von enrichArray. Die Object in der transform()-Funktion hat ein einzelnes Attribut, das key mit dem Wert von attributes.data1 in der Nachrichtennutzlast benannt ist, und Array ist das values Array, das dieselben drei Objekte enthält, die im vorherigen Beispiel verwendet wurden.

select value transform("enrichArray", {"key": attributes.data1}, values) from 'A/B'

Nach dem Empfang der Nachrichtennutzdaten wird diese SQL-Anweisung zu der folgenden Antwort ausgewertet. Beachten Sie, wie die data1-Eigenschaft key in der Antwort benannt ist.

[ { "a": 3, "key": 1 }, { "b": 4, "key": 1 }, { "c": 5, "key": 1 } ]

Beispiel 3 für die Transformationsfunktion

Dieses Beispiel zeigt, wie die transform()-Funktion in verschachtelten SELECT-Klauseln verwendet werden kann, um mehrere Attribute auszuwählen und neue Objekte für die nachfolgende Verarbeitung zu erstellen.

In diesem Beispiel wird folgende Nachricht im MQTT-Thema A/B veröffentlicht.

{ "data1": "example", "data2": { "a": "first attribute", "b": "second attribute", "c": [ { "x": { "someInt": 5, "someString": "hello" }, "y": true }, { "x": { "someInt": 10, "someString": "world" }, "y": false } ] } }

Das Object für diese Transformationsfunktion ist das Objekt, das von der SELECT-Anweisung zurückgegeben wurde, die die Elemente a und b des data2-Objekts der Nachricht enthält. Der Array-Parameter besteht aus den beiden Objekten aus dem data2.c Array in der ursprünglichen Nachricht.

select value transform('enrichArray', (select a, b from data2), (select value c from data2)) from 'A/B'

Bei der vorherigen Nachricht ergibt die SQL-Anweisung die folgende Antwort.

[ { "x": { "someInt": 5, "someString": "hello" }, "y": true, "a": "first attribute", "b": "second attribute" }, { "x": { "someInt": 10, "someString": "world" }, "y": false, "a": "first attribute", "b": "second attribute" } ]

Das in dieser Antwort zurückgegebene Array könnte mit Themenregelaktionen verwendet werden, die batchMode unterstützen.

trim(String)

Entfernt alle führenden und nachfolgenden Leerzeichen aus dem angegebenen String-Wert. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiel:

Trim(" hi ") = "hi"

Argumenttyp Ergebnis
Int Die String-Darstellung des Int-Werts nach dem Entfernen der führenden und nachfolgenden Leerzeichen.
Decimal Die String-Darstellung des Decimal-Werts nach dem Entfernen der führenden und nachfolgenden Leerzeichen.
Boolean Die String-Darstellung des Boolean-Werts ("true" oder "false") nach dem Entfernen der führenden und nachfolgenden Leerzeichen.
String Der String-Wert nach dem Entfernen der führenden und nachfolgenden Leerzeichen.
Array Die String-Darstellung des Array-Werts mit Standardkonvertierungsregeln
Object Die String-Darstellung des Objekts mit Standardkonvertierungsregeln
Null Undefined.
Undefined Undefined.

trunc(Decimal, Int)

Schneidet das erste Argument auf die Anzahl von Decimal-Stellen ab, die vom zweiten Argument festgelegt wurden. Wenn das zweite Argument kleiner ist als Null, wird es auf Null festgelegt. Wenn das zweite Argument größer ist als 34, wird es auf 34 festgelegt. Nachfolgende Nullen werden aus dem Ergebnis entfernt. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

trunc(2.3, 0) = 2.

trunc(2.3123, 2) = 2,31.

trunc(2.888, 2) = 2,88.

trunc(2.00, 5) = 2.

Argumenttyp 1 Argumenttyp 2 Ergebnis
Int Int Der Quellwert
Int/Decimal Int/Decimal Das erste Argument wird auf die Länge abgeschnitten, die vom zweiten Argument beschrieben wird. Wenn das zweite Argument kein Int-Wert ist, wird es auf den nächsten Int-Wert abgerundet.
Int/Decimal/String Int/Decimal Das erste Argument wird auf die Länge abgeschnitten, die vom zweiten Argument beschrieben wird. Wenn das zweite Argument kein Int-Wert ist, wird es auf den nächsten Int-Wert abgerundet. Ein String-Wert wird zu einem Decimal-Wert konvertiert. Wenn die Konvertierung der Zeichenfolge fehlschlägt, ist das Ergebnis Undefined.
Anderer Wert Undefined.

upper(String)

Gibt die großgeschriebene Version des angegebenen String-Werts zurück. Andere Argumente als String werden mit der Standardkonvertierungsregeln in ,String konvertiert. Unterstützt von SQL Version 2015-10-08 und höher.

Beispiele:

upper("hello") = "HELLO"

upper(["hello"]) = "[\"HELLO\"]"