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