View a markdown version of this page

SET-Klausel - 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.

SET-Klausel

Verwenden Sie die SET-Klausel, um Variablen zu definieren, die Ausdrucksergebnisse speichern. Sie können diese Variablen in SELECT- und WHERE-Klauseln sowie in Substitutionsvorlagen wiederverwenden. Dies hilft Ihnen, das Duplizieren komplexer Ausdrücke zu vermeiden und die Anzahl der Funktionsaufrufe in Ihrer SQL-Anweisung zu reduzieren.

Die SET-Klausel unterstützt Datentypen OperatorenFunktionen,Literale,Case-Anweisungen,JSON-Erweiterungen,, Variablen undVerschachtelte Objektabfragen.

Syntax der SET-Klau

Die SET-Klausel muss in Ihrer SQL-Anweisung vor der SELECT-Klausel stehen. Verwenden Sie die folgende Syntax:

SET @variable_name = expression [, @variable_name2 = expression2]

Syntaxregeln:

  • Beginnen Sie Variablennamen mit @

  • Variablennamen können Buchstaben, Zahlen und Unterstriche enthalten

  • Variablennamen können bis zu 64 Zeichen lang sein

  • In einer einzigen SET-Klausel können mehrere Variablen, durch Kommas getrennt, festgelegt werden

  • Jede Variable kann nur einmal zugewiesen werden (Variablen sind unveränderlich)

  • Das SET-Schlüsselwort kann nur einmal pro SQL-Anweisung verwendet werden

Verwenden von Variablen

Nachdem Sie Variablen definiert haben, können Sie sie verwenden in:

  • SELECT-Klauseln

  • WO KLAUSELN

  • Andere SET-Variablenzuweisungen

  • Vorlagen für die Ersetzung von Aktionen

  • Vorlagen für die Ersetzung von Aktionen durch Fehler

  • Verschachtelte SELECT-Abfragen

  • Funktionsparameter (bestimmte Parameter wie RoleArn-Parameter und Parameter, die den Modus einer Funktion wechseln, unterstützen ähnlich wie transform("enrichArray", attributes, values) keine Variablen)

Auf Variablen wird mit derselben @variable_name Syntax verwiesen, die in der SET-Klausel verwendet wird. Sie können auch die JSON-Erweiterungssyntax verwenden, um auf Eigenschaften von Variablen zuzugreifen, die Objekte enthalten, wie @variable_name.property z.

Beispiele für SET-Klausel

Grundlegende Verwendung von Variablen

Das folgende Beispiel zeigt eine Payload, die zum Thema device/data veröffentlicht wurde: {"temp_fahrenheit": 75, "humidity": 60}

SQL-Anweisung:

SET @temp_celsius = (temp_fahrenheit - 32) * 5 / 9 SELECT @temp_celsius AS celsius, humidity FROM 'device/data'

Ausgehende Nutzlast: {"celsius": 23.89, "humidity": 60}

Greifen Sie auf Mitglieder in eingebetteten JSON-Objekten zu

Das folgende Beispiel zeigt eine Payload, die zum Thema device/data veröffentlicht wurde: {"device1": {"deviceId":"weather_sensor", "deviceData": {"sensors": {"temp_fahrenheit": 75, "humidity": 60}, "location": [47.606,-122.332]}}}

SQL-Anweisung:

SET @device_sensor_data = device1.deviceData.sensors SELECT @device_sensor_data.temp_fahrenheit AS temp_fahrenheit, @device_sensor_data.humidity as humidity, device1.deviceId as deviceId FROM 'device/data'

Ausgehende Nutzlast: {"temp_fahrenheit":75,"humidity":60,"deviceId":"weather_sensor"}

Weitere Informationen zur Arbeit mit JSON-Erweiterungen finden Sie unter JSON-Erweiterungen

Vermeidung doppelter Funktionsaufrufe

SET-Variablen helfen dabei, das Duplizieren komplexer Dekodierungsoperationen zu vermeiden:

SET @decoded_data = decode(encode(*, 'base64'), 'proto', 'schema', 'schema.desc', 'message.proto', 'Message') SELECT @decoded_data.sensor_id, @decoded_data.reading FROM 'device/protobuf' WHERE @decoded_data.reading > 100

Ohne SET-Variablen müssten Sie die Dekodierungsfunktion dreimal wiederholen, was die Grenzwerte für Funktionsaufrufe überschreitet.

Mehrere Variablen

Sie können mehrere Variablen in einer einzigen SET-Klausel definieren, indem Sie sie durch Kommas trennen:

SET @user_data = get_user_properties(device_id), @threshold = 50 SELECT @user_data.name, temp_fahrenheit FROM 'sensors/+' WHERE temp_fahrenheit > @threshold AND @user_data.active = true

Verwenden von Variablen in Substitutionsvorlagen

Variablen können auch in Vorlagen zur Aktionsersetzung verwendet werden, sodass Sie berechnete Werte sowohl für die SQL-Anweisung als auch für Regelaktionen wiederverwenden können.

SQL-Anweisung:

SET @temp_celsius = (temp_fahrenheit - 32) * 5 / 9 SELECT @temp_celsius AS celsius, humidity FROM 'device/data'

Konfiguration der Aktion:

{ "s3": { "roleArn": "arn:aws:iam::123456789012:role/testRuleRole", "bucketName": "bucket", "key": "temperature-data/${device_id}/temp-${@temp_celsius}C.json" } }

In diesem Beispiel @temp_celsius wird die SET-Variable in einer Substitutionsvorlage verwendet, um das Schlüsselfeld der S3-Aktion zu erstellen.

Non-JSON Nutzung der Nutzlast

SET-Variablen unterstützen Nicht-JSON-Payloads nicht direkt, daher muss die Nutzlast zuerst codiert oder dekodiert werden:

SET @encoded_payload = encode(*, 'base64') SELECT @encoded_payload AS raw_data FROM 'device/binary'

Weitere Informationen zur Arbeit mit Nicht-JSON-Payloads finden Sie unter Arbeiten mit binären Nutzlasten

Grenzen der SET-Klausel

Die folgenden Grenzwerte gelten für SET-Variablen:

  • Maximal 10 eindeutige Variablen pro SQL-Anweisung

  • Maximale Größe des Variablenwerts von 128 KiB (minimierte UTF-8 JSON-Zeichenfolge)

  • Maximale Gesamtwertgröße von 128 KiB für alle Variablen

  • Variablennamen sind auf 64 Zeichen begrenzt

  • Variablen können JSON-Payloads direkt so akzeptieren, wie sie sind (Nicht-JSON-Payloads müssen zuerst akzeptiert werden) encoded/decoded