Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Clausola SET
Utilizzate la clausola SET per definire le variabili che memorizzano i risultati delle espressioni. È possibile riutilizzare queste variabili nelle clausole SELECT e WHERE e nei modelli sostitutivi. Ciò consente di evitare la duplicazione di espressioni complesse e di ridurre il numero di chiamate di funzione nell'istruzione SQL.
La clausola SET supportaTipi di dati,,Operatori,Funzioni, Valori letterali Istruzioni caseEstensioni JSON, Variabili e. Query di oggetti nidificati
Sintassi della clausola SET
La clausola SET deve comparire prima della clausola SELECT nell'istruzione SQL. Utilizzare la seguente sintassi:
SET @variable_name = expression [, @variable_name2 = expression2]
Regole di sintassi:
Inizia i nomi delle variabili con
@I nomi delle variabili possono contenere lettere, numeri e caratteri di sottolineatura
I nomi delle variabili possono contenere fino a 64 caratteri
È possibile impostare più variabili in una singola clausola SET, separate da virgole
Ogni variabile può essere assegnata una sola volta (le variabili sono immutabili)
La parola chiave SET può essere utilizzata solo una volta per istruzione SQL
Utilizzo di variabili
Dopo aver definito le variabili, puoi usarle in:
Clausole SELECT
Clausole WHERE
Altre assegnazioni di variabili SET
Modelli di sostituzione delle azioni
Modelli di sostituzione delle azioni di errore
Interrogazioni SELECT annidate
Parametri delle funzioni (alcuni parametri come i parametri ROLearn e i parametri che modificano la modalità di una funzione in modo simile a
transform("enrichArray", attributes, values)non supportare le variabili)
Le variabili vengono referenziate utilizzando la stessa @variable_name sintassi utilizzata nella clausola SET. È inoltre possibile utilizzare la sintassi dell'estensione JSON per accedere alle proprietà delle variabili che contengono oggetti, ad esempio. @variable_name.property
Esempi di clausole SET
Utilizzo delle variabili di base
L'esempio seguente mostra un payload pubblicato sull'argomentodevice/data: {"temp_fahrenheit": 75, "humidity": 60}
Istruzione SQL:
SET @temp_celsius = (temp_fahrenheit - 32) * 5 / 9 SELECT @temp_celsius AS celsius, humidity FROM 'device/data'
Payload in uscita: {"celsius": 23.89, "humidity": 60}
Accedi ai membri negli oggetti JSON incorporati
L'esempio seguente mostra un payload pubblicato sull'argomento: device/data {"device1": {"deviceId":"weather_sensor", "deviceData": {"sensors": {"temp_fahrenheit": 75, "humidity": 60}, "location": [47.606,-122.332]}}}
Istruzione SQL:
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'
Payload in uscita: {"temp_fahrenheit":75,"humidity":60,"deviceId":"weather_sensor"}
per ulteriori informazioni su come lavorare con le estensioni JSON, consulta Estensioni JSON
Evitare chiamate di funzione duplicate
Le variabili SET aiutano a evitare la duplicazione di operazioni di decodifica complesse:
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
Senza le variabili SET, sarebbe necessario ripetere la funzione di decodifica tre volte, il che supera i limiti di chiamata alla funzione.
Variabili multiple
È possibile definire più variabili in una singola clausola SET separandole con virgole:
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
Utilizzo di variabili nei modelli sostitutivi
Le variabili possono essere utilizzate anche nei modelli di sostituzione delle azioni, che consentono di riutilizzare i valori calcolati sia nell'istruzione SQL che nelle azioni delle regole.
Istruzione SQL:
SET @temp_celsius = (temp_fahrenheit - 32) * 5 / 9 SELECT @temp_celsius AS celsius, humidity FROM 'device/data'
Configurazione dell'azione:
{ "s3": { "roleArn": "arn:aws:iam::123456789012:role/testRuleRole", "bucketName": "bucket", "key": "temperature-data/${device_id}/temp-${@temp_celsius}C.json" } }
In questo esempio, la variabile SET @temp_celsius viene utilizzata in un modello sostitutivo per costruire il campo chiave dell'azione S3.
Utilizzo di payload non JSON
Le variabili SET non supportano direttamente payload non JSON, quindi il payload deve essere prima codificato o decodificato:
SET @encoded_payload = encode(*, 'base64') SELECT @encoded_payload AS raw_data FROM 'device/binary'
per ulteriori informazioni su come lavorare con payload non JSON, consulta Utilizzo di payload binari
Limiti della clausola SET
I seguenti limiti si applicano alle variabili SET:
Massimo 10 variabili univoche per istruzione SQL
Dimensione massima del valore variabile di 128 KiB (stringa JSON UTF-8 minimizzata)
Dimensione massima del valore totale di 128 KB per tutte le variabili
Nomi di variabili limitati a 64 caratteri
Le variabili possono accettare i payload JSON direttamente così come sono (i payload non JSON devono prima essere codificati/decodificati)