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à.
Funzioni
È possibile utilizzare le seguenti funzioni integrate nelle WHERE clausole SELECT o delle espressioni. SQL
abs(Decimal)
Restituisce il valore assoluto di un numero. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: abs(-5)
restituisce 5.
Tipo di argomento | Risultato |
---|---|
Int |
Int , il valore assoluto dell'argomento. |
Decimal |
Decimal , il valore assoluto dell'argomento. |
Boolean |
Undefined . |
String |
Decimal . Il risultato è il valore assoluto dell'argomento. Se la stringa non può essere convertita, il risultato è Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
accountid()
Restituisce l'ID dell'account proprietario della regola come String
. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
accountid()
= "123456789012"
acos(Decimal)
Restituisce il coseno inverso di un numero in radianti. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: acos(0)
= 1.5707963267948966
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), il coseno inverso dell'argomento. I risultati immaginari vengono restituiti come Undefined . |
Decimal |
Decimal (a precisione doppia), il coseno inverso dell'argomento. I risultati immaginari vengono restituiti come Undefined . |
Boolean |
Undefined . |
String |
Decimal , il coseno inverso dell'argomento. Se la stringa non può essere convertita, il risultato è Undefined . I risultati immaginari vengono restituiti come Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
asin(Decimal)
Restituisce il seno inverso di un numero in radianti. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: asin(0)
= 0.0
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), il seno inverso dell'argomento. I risultati immaginari vengono restituiti come Undefined . |
Decimal |
Decimal (a precisione doppia), il seno inverso dell'argomento. I risultati immaginari vengono restituiti come Undefined . |
Boolean |
Undefined . |
String |
Decimal (a precisione doppia), il seno inverso dell'argomento. Se la stringa non può essere convertita, il risultato è Undefined . I risultati immaginari vengono restituiti come Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
atan(Decimal)
Restituisce la tangente inversa di un numero in radianti. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: atan(0)
= 0.0
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), la tangente inversa dell'argomento. I risultati immaginari vengono restituiti come Undefined . |
Decimal |
Decimal (a precisione doppia), la tangente inversa dell'argomento. I risultati immaginari vengono restituiti come Undefined . |
Boolean |
Undefined . |
String |
Decimal , la tangente inversa dell'argomento. Se la stringa non può essere convertita, il risultato è Undefined . I risultati immaginari vengono restituiti come Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
atan2(Decimal, Decimal)
Restituisce l'angolo in radianti, tra l'asse X positivo e il punto (x, y) definito nei due argomenti. L'angolo è positivo per gli angoli in senso antiorario (semipiano superiore, y > 0) e negativo per gli angoli in senso orario (semipiano inferiore, y < 0). Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: atan2(1, 0)
= 1.5707963267948966
Tipo di argomento | Tipo di argomento | Risultato |
---|---|---|
Int /Decimal |
Int /Decimal |
Decimal (a precisione doppia), l'angolo tra l'asse X e il punto (x, y) specificato. |
Int /Decimal /String |
Int /Decimal /String |
Decimal , la tangente inversa del punto descritto. Se una stringa non può essere convertita, il risultato è Undefined . |
Altro valore | Altro valore | Undefined . |
aws_lambda (,) functionArn inputJson
Chiama la funzione Lambda specificata che passa inputJson
alla funzione Lambda e restituisce quella generata dalla funzione JSON Lambda.
Argomento | Descrizione |
---|---|
functionArn |
La ARN funzione Lambda da chiamare. La funzione Lambda deve restituire JSON dati. |
inputJson |
L'JSONinput passato alla funzione Lambda. Per passare query e valori letterali a oggetti annidati, è necessario utilizzare la versione 2016-03-23. SQL |
È necessario concedere AWS IoT lambda:InvokeFunction
le autorizzazioni per richiamare la funzione Lambda specificata. L'esempio seguente illustra come concedere l'autorizzazione lambda:InvokeFunction
usando l' AWS CLI.
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"
Di seguito sono illustrati gli argomenti per il comando add-permission:
- --function-name
-
Il nome della funzione Lambda. Aggiungi una nuova autorizzazione per aggiornare la policy delle risorse della funzione.
- --region
-
Il del tuo Regione AWS account.
- --principal
-
Entità principale che riceve l'autorizzazione. Questo dovrebbe consentire AWS IoT il
iot.amazonaws.com
permesso di chiamare una funzione Lambda. - --source-arn
-
Il ARN fondamento della regola. È possibile utilizzare il get-topic-rule AWS CLI comando per ottenere ARN la regola.
- --source-account
-
Il Account AWS luogo in cui è definita la regola.
- --statement-id
-
Identificatore univoco di un'istruzione.
- --action
-
Le operazioni Lambda da permettere nell’istruzione. Per consentire a AWS IoT di invocare una funzione Lambda, specifica
lambda:InvokeFunction
.
Importante
Se aggiungi un'autorizzazione per un AWS IoT principale senza fornire source-arn
osource-account
, qualsiasi cosa Account AWS
che crea una regola con l'azione Lambda può attivare regole da cui richiamare la funzione Lambda. AWS IoT Per ulteriori informazioni, consulta Modello di autorizzazione Lambda.
Dato un payload di JSON messaggi come:
{ "attribute1": 21, "attribute2": "value" }
È possibile utilizzare la funzione aws_lambda
per chiamare la funzione Lambda come segue.
SELECT aws_lambda("arn:aws:lambda:
us-east-1
:account_id
:function:lambda_function
", {"payload":attribute1}) as output FROM 'topic-filter
'
Se vuoi passare il payload completo del MQTT messaggio, puoi specificare il JSON payload usando '*', come nell'esempio seguente.
SELECT aws_lambda("arn:aws:lambda:
us-east-1
:account_id
:function:lambda_function
", *) as output FROM 'topic-filter
'
payload.inner.element
seleziona i dati dai messaggi pubblicati nell'argomento 'argomento/sottoargomento'.
some.value
seleziona i dati dall'output generato dalla funzione Lambda.
Nota
Il motore di regole limita la durata dell'esecuzione delle funzioni Lambda. Le chiamate alle funzioni Lambda dalle regole devono essere completate entro 2000 millisecondi.
bitand(Int, Int)
Esegue un bit per bit AND sulle rappresentazioni di bit dei due argomenti Int
(convertiti). Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: bitand(13, 5)
= 5
Tipo di argomento | Tipo di argomento | Risultato |
---|---|---|
Int |
Int |
Int , un bit per bit AND dei due argomenti. |
Int /Decimal |
Int /Decimal |
Int , un bit per bit AND dei due argomenti. Tutti i numeri non di tipo Int vengono arrotondati per difetto al valore Int più vicino. Se uno o più argomenti non possono essere convertiti in un tipo Int , il risultato è Undefined . |
Int /Decimal /String |
Int /Decimal /String |
Int , un bit per bit AND dei due argomenti. Tutte le stringhe vengono convertite in decimali e arrotondate per difetto al valore Int più vicino. Se la conversione non riesce, il risultato è Undefined . |
Altro valore | Altro valore | Undefined . |
bitor(Int, Int)
Esegue un'operazione OR bit per bit sulle rappresentazioni in bit dei due argomenti. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: bitor(8, 5)
= 13
Tipo di argomento | Tipo di argomento | Risultato |
---|---|---|
Int |
Int |
Int , l'operazione OR bit per bit sui due argomenti. |
Int /Decimal |
Int /Decimal |
Int , l'operazione OR bit per bit sui due argomenti. Tutti i numeri non di tipo Int vengono arrotondati per difetto al valore Int più vicino. Se la conversione non riesce, il risultato è Undefined . |
Int /Decimal /String |
Int /Decimal /String |
Int , l'operazione OR bit per bit sui due argomenti. Tutte le stringhe vengono convertite in decimali e arrotondate per difetto al valore Int più vicino. Se la conversione non riesce, il risultato è Undefined . |
Altro valore | Altro valore | Undefined . |
bitxor(Int, Int)
Esegue un bit per bit XOR sulle rappresentazioni in bit dei due argomenti (convertiti). Int
Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:bitor(13, 5)
= 8
Tipo di argomento | Tipo di argomento | Risultato |
---|---|---|
Int |
Int |
Int , un bit per bit sui due argomentiXOR. |
Int /Decimal |
Int /Decimal |
Int , un bit per bit XOR sui due argomenti. I numeri non di tipo Int vengono arrotondati per difetto al valore Int più vicino. |
Int /Decimal /String |
Int /Decimal /String |
Int , un bit per bit XOR sui due argomenti. Le stringhe vengono convertite in decimali e arrotondate per difetto al valore più vicino. Int Se la conversione non riesce, il risultato è Undefined . |
Altro valore | Altro valore | Undefined . |
bitnot(Int)
Esegue un processo bit per bit NOT sulle rappresentazioni di bit dell'argomento (-convert). Int
Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: bitnot(13)
= 2
Tipo di argomento | Risultato |
---|---|
Int |
Int , un po' NOT alla volta dell'argomento. |
Decimal |
Int , un bit per bit NOT dell'argomento. Il valore Decimal viene arrotondato per difetto al valore Int più vicino. |
String |
Int , un bit per bit NOT dell'argomento. Le stringhe vengono convertite in decimali e arrotondate per difetto al valore Int più vicino. Se la conversione non riesce, il risultato è Undefined . |
Altro valore | Altro valore. |
cast()
Converte un valore da un tipo di dati a un altro. Le operazioni di cast hanno un comportamento per lo più simile alle conversioni standard, con in più la possibilità di eseguire il cast dei numeri da e verso tipi booleani. Se AWS IoT non è possibile determinare come passare da un tipo a un altro, il risultato èUndefined
. Supportato dalla SQL versione 2015-10-08 e successive. Formato: cast (as). value
type
Esempio:
cast(true as Int)
= 1
Di seguito sono indicate le parole chiave che potrebbero seguire la parola "as" quando si chiama cast
:
Parola chiave | Risultato |
---|---|
String |
Esegue il cast del valore nel tipo String . |
Nvarchar | Esegue il cast del valore nel tipo String . |
Testo | Esegue il cast del valore nel tipo String . |
Ntext | Esegue il cast del valore nel tipo String . |
varchar | Esegue il cast del valore nel tipo String . |
Int |
Esegue il cast del valore nel tipo Int . |
Numero intero | Esegue il cast del valore nel tipo Int . |
Doppio | Esegue il cast del valore Decimal (a precisione doppia). |
Parola chiave | Risultato |
---|---|
Decimal |
Esegue il cast del valore nel tipo Decimal . |
Bool | Esegue il cast del valore nel tipo Boolean . |
Boolean |
Esegue il cast del valore nel tipo Boolean . |
Regole per il cast:
Tipo di argomento | Risultato |
---|---|
Int |
Tipo Decimal senza separatore decimale. |
Decimal |
Valore di origine. NotaCon SQL V2 (2016-03-23), i valori numerici che sono numeri interi, ad esempio |
Boolean |
true = 1.0, false = 0.0. |
String |
Cerca di analizzare la stringa come Decimal . AWS IoT
tenta di analizzare le stringhe che corrispondono all'espressione regolare: ^-?\d+(\.\d+)?((?i)E-?\d+)?$. "0", "-1.2", "5E-12" sono tutti esempi di stringhe che vengono convertite automaticamente in decimali. |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
Tipo di argomento | Risultato |
---|---|
Int |
Valore di origine. |
Decimal |
Valore di origine, arrotondato per difetto al valore Int più vicino. |
Boolean |
true = 1.0, false = 0.0. |
String |
Cerca di analizzare la stringa come Decimal . AWS IoT
tenta di analizzare le stringhe che corrispondono all'espressione regolare: ^-?\d+(\.\d+)?((?i)E-?\d+)?$. "0", "-1.2", "5E-12" sono tutti esempi di stringhe che vengono convertite automaticamente in decimali. AWS IoT
prova a convertire la stringa in un tipo Decimal e ad arrotondarla per difetto al valore Int più vicino. |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
Tipo di argomento | Risultato |
---|---|
Int |
0 = False, qualsiasi_valore_diverso_da_zero = True. |
Decimal |
0 = False, qualsiasi_valore_diverso_da_zero = True. |
Boolean |
Valore di origine. |
String |
"true" = True e "false" = False (senza distinzione tra maiuscole e minuscole). Altri valori stringa = Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
Tipo di argomento | Risultato |
---|---|
Int |
Rappresentazione di stringa del tipo Int , in notazione standard. |
Decimal |
Stringa che rappresenta il valore Decimal , possibilmente in notazione scientifica. |
Boolean |
"true" o "false", tutto in caratteri minuscoli. |
String |
Valore di origine. |
Array | JSONL'array serializzato su. La stringa risultante è un elenco separato da virgole racchiuso tra parentesi quadre. I tipi String sono racchiusi tra virgolette. I tipi Decimal , Int e Boolean non sono racchiusi tra virgolette. |
Oggetto | L'oggetto serializzato su. JSON La JSON stringa è un elenco separato da virgole di coppie chiave-valore e inizia e termina con parentesi graffe. String è citato. Decimal , Int Boolean , e non lo Null sono. |
Null | Undefined . |
Undefined | Undefined . |
ceil(Decimal)
Arrotonda per eccesso il tipo Decimal
specificato al valore Int
più vicino. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
ceil(1.2)
= 2
ceil(-1.2)
= -1
Tipo di argomento | Risultato |
---|---|
Int |
Int , il valore dell'argomento. |
Decimal |
Int , il valore Decimal arrotondato per eccesso al valore Int più vicino. |
String |
Int . La stringa viene convertita in Decimal e arrotondata per eccesso al valore Int più vicino. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . |
Altro valore | Undefined . |
chr(String)
Restituisce il ASCII carattere che corrisponde all'argomento specificato. Int
Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
chr(65)
= "A".
chr(49)
= "1".
Tipo di argomento | Risultato |
---|---|
Int |
Il carattere corrispondente al valore specificato. ASCII Se l'argomento non è un ASCII valore valido, il risultato èUndefined . |
Decimal |
Il carattere corrispondente al ASCII valore specificato. L'argomento Decimal viene arrotondato per difetto al valore Int più vicino. Se l'argomento non è un ASCII valore valido, il risultato èUndefined . |
Boolean |
Undefined . |
String |
Se il tipo String può essere convertito in Decimal , viene arrotondato per difetto al valore Int più vicino. Se l'argomento non è un ASCII valore valido, il risultato èUndefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Altro valore | Undefined . |
clientid()
Restituisce l'ID del MQTT client che invia il messaggio o n/a
se il messaggio non è stato inviatoMQTT. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
clientid()
= "123456789012"
concat()
Concatena matrici o stringhe. Questa funzione accetta qualsiasi numero di argomenti e restituisce un tipo String
o Array
. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
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]
Numero di argomenti | Risultato |
---|---|
0 | Undefined . |
1 | L'argomento viene restituito non modificato. |
2+ |
Se un argomento è un tipo |
cos(Decimal)
Restituisce il coseno di un numero in radianti. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
cos(0)
= 1.
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), il coseno dell'argomento. I risultati immaginari vengono restituiti come Undefined . |
Decimal |
Decimal (a precisione doppia), il coseno dell'argomento. I risultati immaginari vengono restituiti come Undefined . |
Boolean |
Undefined . |
String |
Decimal (a precisione doppia), il coseno dell'argomento. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . I risultati immaginari vengono restituiti come Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
cosh(Decimal)
Restituisce il coseno iperbolico di un numero in radianti. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: cosh(2.3)
= 5.037220649268761.
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), il coseno iperbolico dell'argomento. I risultati immaginari vengono restituiti come Undefined . |
Decimal |
Decimal (a precisione doppia), il coseno iperbolico dell'argomento. I risultati immaginari vengono restituiti come Undefined . |
Boolean |
Undefined . |
String |
Decimal (a precisione doppia), il coseno iperbolico dell'argomento. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . I risultati immaginari vengono restituiti come Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
decode (valore,) decodingScheme
Utilizzo della funzione decode
per decodificare un valore codificato. Se la stringa decodificata è un JSON documento, viene restituito un oggetto indirizzabile. In caso contrario, la stringa decodificata viene restituita come una stringa. La funzione restituisce NULL se la stringa non può essere decodificata. Questa funzione supporta la decodifica di stringhe con codifica base64 e il formato del messaggio Protocol Buffer (protobuf).
Supportato dalla SQL versione 2016-03-23 e successive.
- value
-
Un valore stringa o una qualsiasi delle espressioni valide, in base a quanto definito in Riferimento AWS IoT SQL , che restituiscono una stringa.
- decodingScheme
-
Una stringa letterale che rappresenta lo schema utilizzato per decodificare il valore. Attualmente, solo
'base64'
e'proto'
sono supportati.
Decodifica di stringhe con codifica base64
In questo esempio, il payload del messaggio include un valore codificato.
{ encoded_temp: "eyAidGVtcGVyYXR1cmUiOiAzMyB9Cg==" }
La decode
funzione di questa SQL istruzione decodifica il valore nel payload del messaggio.
SELECT decode(encoded_temp,"base64").temperature AS temp from 'topic/subtopic'
La decodifica del encoded_temp
valore produce il seguente JSON documento valido, che consente all'SELECTistruzione di leggere il valore della temperatura.
{ "temperature": 33 }
Il risultato dell'SELECTistruzione in questo esempio è illustrato qui.
{ "temp": 33 }
Se il valore decodificato non era un JSON documento valido, il valore decodificato verrebbe restituito come stringa.
Decodifica del payload del messaggio protbuf
È possibile utilizzare la SQL funzione di decodifica per configurare una regola in grado di decodificare il payload dei messaggi protobuf. Per ulteriori informazioni, consulta Decodifica dei payload dei messaggi protbuf.
L'aspetto della firma della funzione è simile al seguente:
decode(<ENCODED DATA>, 'proto', '<S3 BUCKET NAME>', '<S3 OBJECT KEY>', '<PROTO NAME>', '<MESSAGE TYPE>')
ENCODED DATA
-
Specifica i dati codificati con codifica protobuf da decodificare. Se l'intero messaggio inviato alla Regola è costituito da dati con codifica protobuf, puoi fare riferimento al payload in entrata di dati binari non elaborati utilizzando
*
. Altrimenti, questo campo deve essere una stringa codificata in base 64 e un riferimento alla JSON stringa può essere passato direttamente.1) Per decodificare un payload in entrata protobuf di dati binari non elaborati:
decode(*, 'proto', ...)
2) Per decodificare un messaggio con codifica protobuf rappresentato da una stringa con codifica base64 'a.b':
decode(a.b, 'proto', ...)
proto
-
Specifica i dati da decodificare in un formato messaggio protobuf. Se si specifica
base64
invece diproto
, questa funzione decodificherà le stringhe con codifica in base64 come. JSON S3 BUCKET NAME
-
Il nome del bucket Amazon S3 in cui è stato caricato il file
FileDescriptorSet
. S3 OBJECT KEY
-
La chiave oggetto che specifica il file
FileDescriptorSet
nel bucket Amazon S3. PROTO NAME
-
Il nome del file
.proto
(esclusa l'estensione) da cui è stato generato il fileFileDescriptorSet
. MESSAGE TYPE
-
Il nome della struttura di messaggi protobuf all'interno del file
FileDescriptorSet
rispetto alla quale i dati da decodificare devono essere conformi.
Un'SQLespressione di esempio che utilizza la funzione decode può essere simile alla seguente: SQL
SELECT VALUE decode(*, 'proto', 's3-bucket', 'messageformat.desc', 'myproto', 'messagetype') FROM 'some/topic'
-
*
Rappresenta un payload in entrata binario, conforme al tipo di messaggio protobuf chiamato
mymessagetype
. -
messageformat.desc
Il file
FileDescriptorSet
archiviato in un bucket Amazon S3 denominatos3-bucket
. -
myproto
Il file
.proto
originale utilizzato per generare il fileFileDescriptorSet
denominatomyproto.proto
. -
messagetype
Il tipo di messaggio chiamato
messagetype
(insieme a eventuali dipendenze importate) come definito inmyproto.proto
.
codificare (valore,) encodingScheme
Utilizzate la encode
funzione per codificare il payload, che potenzialmente potrebbe non essere costituito da JSON dati, nella sua rappresentazione di stringa basata sullo schema di codifica. Supportato dalla SQL versione 2016-03-23 e successive.
- value
-
Qualsiasi espressioni valida, in base a quanto definito in Riferimento AWS IoT SQL . Puoi specificare* per codificare l'intero payload, indipendentemente dal formato. JSON Se si fornisce un'espressione, il risultato della valutazione verrà prima convertito in una stringa e quindi codificato.
- encodingScheme
-
Stringa letterale che rappresenta lo schema di codifica da usare. Attualmente è supportato solo
'base64'
.
endswith(String, String)
Restituisce un tipo Boolean
che indica se il primo argomento String
termina con il secondo argomento String
. Se uno degli argomenti è Null
oppure Undefined
, il risultato è Undefined
. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: endswith("cat","at")
= true.
Tipo di argomento 1 | Tipo di argomento 2 | Risultato |
---|---|---|
String |
String |
True se il primo argomento termina con il secondo argomento. In caso contrario, false. |
Altro valore | Altro valore | Entrambi gli argomenti vengono convertiti in stringhe usando le regole di conversione standard. True se il primo argomento termina con il secondo argomento. In caso contrario, false. Se uno degli argomenti è Null oppure Undefined , il risultato è Undefined . |
exp(Decimal)
Restituisce il valore e elevato all'argomento Decimal
. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: exp(1)
= e.
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), argomento e ^. |
Decimal |
Decimal (a precisione doppia), argomento e ^. |
String |
Decimal (a precisione doppia), argomento e ^. Se il tipo String non può essere convertito in Decimal , il risultato è Undefined . |
Altro valore | Undefined . |
floor(Decimal)
Arrotonda il Decimal
per difetto al valore Int
più vicino. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
floor(1.2)
= 1
floor(-1.2)
= -2
Tipo di argomento | Risultato |
---|---|
Int |
Int , il valore dell'argomento. |
Decimal |
Int , il valore Decimal viene arrotondato per difetto al valore Int più vicino. |
String |
Int . La stringa viene convertita in Decimal e arrotondata per difetto al valore Int più vicino. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . |
Altro valore | Undefined . |
get
Estrae un valore da un tipo di raccolta (Array, String, Object). Al primo argomento non viene applicata alcuna conversione. La conversione viene applicata al secondo argomento come illustrato nella tabella. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
get(["a", "b", "c"], 1)
= "B USD"
get({"a":"b"}, "a")
= "B USD"
get("abc", 0)
= "a"
Tipo di argomento 1 | Tipo di argomento 2 | Risultato |
---|---|---|
Array | Qualsiasi tipo (convertito in Int ) |
Elemento con indice in base 0 del tipo Array fornito dal secondo argomento (convertito in Int ). Se la conversione non riesce, il risultato è Undefined . Se l'indice non rientra nei limiti di Array (negativo o >= array.length), il risultato è Undefined . |
Stringa | Qualsiasi tipo (convertito in Int ) |
Carattere con indice in base 0 della stringa fornita dal secondo argomento (convertita in Int ). Se la conversione non riesce, il risultato è Undefined . Se l'indice non rientra nei limiti della stringa (negativo o >= string.length), il risultato è Undefined . |
Oggetto | String (non viene applicata alcuna conversione) |
Valore archiviato nell'oggetto del primo argomento corrispondente alla chiave di stringa fornita come secondo argomento. |
Altro valore | Qualsiasi valore | Undefined . |
get_dynamodb (,,,,,) tableName partitionKeyName partitionKeyValue sortKeyName sortKeyValue roleArn
Recupera i dati da una tabella Dynamo DB. get_dynamodb()
consente di eseguire le query su una tabella Dynamo DB mentre viene valutata una regola. È possibile filtrare o aumentare i payload dei messaggi utilizzando i dati recuperati da Dynamo DB. Supportato dalla SQL versione 2016-03-23 e successive.
get_dynamodb()
prende i seguenti parametri:
- tableName
-
Nome della tabella Dynamo DB su cui eseguire le query.
- partitionKeyName
-
Il nome della chiave della partizione. Per ulteriori informazioni, consulta Chiavi Dynamo DB.
- partitionKeyValue
-
Il valore della chiave di partizione utilizzata per identificare un record. Per ulteriori informazioni, consulta Chiavi Dynamo DB.
- sortKeyName
-
(Facoltativo) Il nome della chiave di ordinamento. Questo parametro è obbligatorio solo se la tabella Dynamo DB interrogata utilizza una chiave composita. Per ulteriori informazioni, consulta Chiavi Dynamo DB.
- sortKeyValue
-
(Facoltativo) Il valore della chiave di ordinamento. Questo parametro è obbligatorio solo se la tabella Dynamo DB interrogata utilizza una chiave composita. Per ulteriori informazioni, consulta Chiavi Dynamo DB.
- roleArn
-
ARNDi un IAM ruolo che concede l'accesso alla tabella DynamoDB. Il motore di regole assume questo ruolo per accedere alla tabella Dynamo DB per conto dell'utente. Evitare di utilizzare un ruolo eccessivamente permissivo. Concedere al ruolo solo le autorizzazioni richieste dalla regola. Di seguito è riportato una policy di esempio che consente l'accesso a una tabella Dynamo DB.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "arn:aws:dynamodb:
aws-region
:account-id
:table/table-name
" } ] }
Per un esempio di come è possibile utilizzare get_dynamodb()
, supponi di avere una tabella Dynamo DB che contiene l'ID del dispositivo e le informazioni sulla posizione per tutti i dispositivi collegati a AWS IoT. L'SELECTistruzione seguente utilizza la get_dynamodb()
funzione per recuperare la posizione dell'ID del dispositivo specificato:
SELECT *, get_dynamodb("InServiceDevices", "deviceId", id,
"arn:aws:iam::12345678910:role/getdynamo").location AS location FROM
'some/topic'
Nota
-
È possibile chiamare al massimo
get_dynamodb()
una volta per SQL dichiarazione. Chiamandoget_dynamodb()
più volte in un'unica SQL istruzione, la regola viene interrotta senza richiamare alcuna azione. -
Se
get_dynamodb()
restituisce più di 8 KB di dati, l'azione della regola potrebbe non essere richiamata.
get_mqtt_property(name)
Fa riferimento a una delle seguenti MQTT5 intestazioni:contentType
,payLoadFormatIndicator
, responseTopic
e. correlationData
Questa funzione accetta come argomento una qualsiasi delle seguenti stringhe letterali: content_type
, format_indicator
, response_topic
e correlation_data
. Per ulteriori informazioni, consulta la tabella Argomenti della funzione seguente.
- contentType
-
Stringa: una stringa con codifica UTF -8 che descrive il contenuto del messaggio di pubblicazione.
- payLoadFormatIndicatore
-
Stringa: un valore di stringa Enum che indica se il payload è formattato come -8. UTF I valori validi sono
UNSPECIFIED_BYTES
eUTF8_DATA
. - responseTopic
-
Stringa: una stringa con codifica UTF -8 utilizzata come nome dell'argomento per un messaggio di risposta. L'argomento della risposta viene utilizzato per descrivere l'argomento in cui il destinatario deve pubblicare come parte del flusso richiesta-risposta. L'argomento non deve contenere caratteri jolly.
- correlationData
-
Stringa: dati binari con codifica base64 utilizzati dal mittente del messaggio di richiesta per identificare a quale richiesta è destinato il messaggio di risposta quando viene ricevuto.
Nella tabella seguente vengono mostrati gli argomenti della funzione accettabili e i tipi di restituzione associati per la funzione get_mqtt_property
:
SQL | Tipo di dati restituito (se presente) | Tipo di dati restituito (se non presente) |
---|---|---|
get_mqtt_property("format_indicator") |
Stringa (UNSPECIFIED_ BYTES o UTF8 _DATA) | Stringa (UNSPECIFIED_BYTES) |
get_mqtt_property("content_type") |
Stringa | Undefined |
get_mqtt_property("response_topic") |
Stringa | Undefined |
get_mqtt_property("correlation_data") |
Stringa con codifica base64 | Undefined |
get_mqtt_property("some_invalid_name") |
Undefined | Undefined |
L'esempio seguente Rules SQL fa riferimento a una delle seguenti MQTT5 intestazioni:contentType
, payLoadFormatIndicator
responseTopic
, ecorrelationData
.
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,, keysecretType,) roleArn
Recupera il valore del file crittografato SecretString
o del campo SecretBinary
della versione corrente di un segreto in AWS Secrets Manager. Per ulteriori informazioni sulla creazione e la gestione di segreti, consulta CreateSecretUpdateSecret, e. PutSecretValue
get_secret()
prende i seguenti parametri:
- secretId
-
String: Amazon Resource Name (ARN) o il nome descrittivo del segreto da recuperare.
- secretType
-
Stringa: il tipo segreto. Valori validi:
SecretString
|SecretBinary
.- SecretString
-
-
Per i segreti che crei come JSON oggetti utilizzando la APIs AWS CLI, la o la AWS Secrets Manager console:
Se specifichi un valore per il parametro
key
, questa funzione restituisce il valore della chiave specificata.Se non specificate un valore per il
key
parametro, questa funzione restituisce l'intero JSON oggetto.
-
Per i segreti che create come non JSON oggetti utilizzando APIs o il AWS CLI:
Se specifichi un valore per il parametro
key
, questa funzione non riesce con un'eccezione.Se non specifichi un valore per il parametro
key
, questa funzione restituisce il contenuto del segreto.
-
- SecretBinary
-
Se specifichi un valore per il parametro
key
, questa funzione non riesce con un'eccezione.Se non specificate un valore per il
key
parametro, questa funzione restituisce il valore segreto come stringa -8 con codifica in base64UTF.
- Chiave
(Facoltativo) String: Il nome della chiave all'interno di un JSON oggetto memorizzato nel campo di un segreto.
SecretString
Utilizzate questo valore quando desiderate recuperare solo il valore di una chiave memorizzata in un oggetto segreto anziché l'intero JSON oggetto.Se specificate un valore per questo parametro e il segreto non contiene un JSON oggetto all'interno del suo
SecretString
campo, questa funzione fallisce con un'eccezione.- roleArn
String: un ruolo ARN con
secretsmanager:GetSecretValue
esecretsmanager:DescribeSecret
autorizzazioni.
Nota
Questa funzione restituisce sempre la versione corrente del segreto (la versione con il tag AWSCURRENT
). Il motore AWS IoT delle regole memorizza nella cache ogni segreto per un massimo di 15 minuti. Di conseguenza, il motore delle regole può richiedere fino a 15 minuti per aggiornare un segreto. Ciò significa che se recuperi un segreto fino a 15 minuti dopo un aggiornamento con AWS Secrets Manager, questa funzione potrebbe restituire la versione precedente.
Questa funzione non viene misurata, ma sono AWS Secrets Manager previsti costi. A causa del meccanismo di memorizzazione nella cache segreta, il motore delle regole chiama occasionalmente AWS Secrets Manager. Poiché il motore delle regole è un servizio completamente distribuito, è possibile che vengano visualizzate più API chiamate Secrets Manager dal motore delle regole durante la finestra di memorizzazione nella cache di 15 minuti.
Esempi:
È possibile utilizzare la get_secret
funzione in un'intestazione di autenticazione in un'azione di HTTPS regola, come nel seguente esempio di autenticazione API chiave.
"API_KEY": "${get_secret('
API_KEY
', 'SecretString
', 'API_KEY_VALUE
', 'arn:aws:iam::12345678910:role/getsecret')}"
Per ulteriori informazioni sull'azione della HTTPS regola, vedereHTTP.
get_thing_shadow (, ruolo) thingName shadowName ARN
Restituisce la copia shadow specificata dell'oggetto specificato. Supportato dalla SQL versione 2016-03-23 e successive.
- thingName
-
String: nome della copia shadow dell'oggetto da recuperare.
- shadowName
-
(Facoltativo) Stringa: il nome della copia shadow. Questo parametro è obbligatorio solo quando si fa riferimento alle copie shadow con nome.
- roleArn
-
String: un ruolo con autorizzazione. ARN
iot:GetThingShadow
Esempi:
Se utilizzato con una copia shadow denominata, fornire il parametro shadowName
.
SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","MyThingShadow","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'
Se utilizzato con una copia shadow senza nome, omettere il parametro shadowName
.
SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'
get_user_properties () userPropertyKey
Fa riferimento alle proprietà utente, che è un tipo di intestazioni di proprietà supportate in. MQTT5
- userProperty
-
Stringa: una proprietà utente è una coppia chiave-valore. Questa funzione accetta la chiave come un argomento e restituisce una matrice di tutti i valori che corrispondono alla chiave associata.
Argomenti della funzione
Per le seguenti Proprietà utente nelle intestazioni messaggio:
Chiave | Valore |
---|---|
some key | un valore |
a different key | un valore diverso |
some key | valore con chiave duplicata |
La tabella seguente mostra il SQL comportamento previsto:
SQL | Tipo di dati restituito | Valore dati restituito |
---|---|---|
get_user_properties('some key') | Array di stringhe | ['some value', 'value with duplicate key'] |
get_user_properties('other key') | Array di stringhe | ['a different value'] |
get_user_properties( ) | Array di oggetti coppie chiave-valore | [{'"some key": "some value"'}, {"other key": "a different
value"}, {"some key": "value with duplicate
key"}] |
get_user_properties('non-existent key') | Undefined |
L'esempio seguente Rules SQL fa riferimento alle proprietà utente (un tipo di intestazione di MQTT5 proprietà) nel payload:
SELECT *, get_user_properties('user defined property key') as userProperty FROM 'some/topic'
Funzioni di hashing
AWS IoT fornisce le seguenti funzioni di hashing:
-
md2
-
md5
-
sha1
-
sha224
-
sha256
-
sha384
-
sha512
Tutte le funzioni hash richiedono un argomento stringa. Il risultato è il valore della stringa sottoposto ad hashing. Agli argomenti non di tipo String si applicano le conversioni standard nel tipo String. Tutte le funzioni hash sono supportate dalla SQL versione 2015-10-08 e successive.
Esempi:
md2("hello")
= "a9046c73e00331af68917d3804f70655"
md5("hello")
= "5d41402abc4b2a76b9719d911017c592"
indexof(String, String)
Restituisce il primo indice (base 0) del secondo argomento come sottostringa nel primo argomento. Entrambi gli argomenti devono essere stringhe. Gli argomenti non di tipo String sono soggetti alle regole di conversione standard nel tipo String. Questa funzione non si applica alle matrici, ma solo alle stringhe. Supportato dalla versione 2016-03-23 e successiveSQL.
Esempi:
indexof("abcd", "bc")
= 1
isNull()
Restituisce true se l'argomento è il valore Null
. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
isNull(5)
= false.
isNull(Null)
= true.
Tipo di argomento | Risultato |
---|---|
Int |
false |
Decimal |
false |
Boolean |
false |
String |
false |
Array |
false |
Object |
false |
Null |
true |
Undefined |
false |
isUndefined()
Restituisce true se l'argomento è Undefined
. Supportato dalla SQL versione 2016-03-23 e successive.
Esempi:
isUndefined(5)
= false.
isUndefined(floor([1,2,3])))
= true.
Tipo di argomento | Risultato |
---|---|
Int |
false |
Decimal |
false |
Boolean |
false |
String |
false |
Array |
false |
Object |
false |
Null |
false |
Undefined |
true |
length(String)
Restituisce il numero di caratteri della stringa fornita. Agli argomenti non di tipo String
si applicano le regole di conversione standard. Supportato dalla SQL versione 2016-03-23 e successive.
Esempi:
length("hi")
= 2
length(false)
= 5
ln(Decimal)
Restituisce il logaritmo naturale dell'argomento. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: ln(e)
= 1.
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), il logaritmo naturale dell'argomento. |
Decimal |
Decimal (a precisione doppia), il logaritmo naturale dell'argomento. |
Boolean |
Undefined . |
String |
Decimal (a precisione doppia), il logaritmo naturale dell'argomento. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
log(Decimal)
Restituisce il logaritmo in base 10 dell'argomento. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: log(100)
= 2.0.
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), il logaritmo in base 10 dell'argomento. |
Decimal |
Decimal (a precisione doppia), il logaritmo in base 10 dell'argomento. |
Boolean |
Undefined . |
String |
Decimal (a precisione doppia), il logaritmo in base 10 dell'argomento. Se il tipo String non può essere convertito in Decimal , il risultato è Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
lower(String)
Restituisce la versione con caratteri minuscoli del tipo String
specificato. Gli argomenti non di tipo String vengono convertiti in stringhe usando le regole di conversione standard. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
lower("HELLO")
= "hello".
lower(["HELLO"])
= "[\"hello\"]".
lpad(String, Int)
Restituisce l'argomento String
con spaziatura sul lato sinistro, con il numero di spazi specificato dal secondo argomento. L'argomento Int
deve essere compreso tra 0 e 1.000. Se il valore fornito è al di fuori di questo intervallo valido, l'argomento viene impostato sul valore valido più vicino (0 o 1000). Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
lpad("hello", 2)
= " hello
".
lpad(1, 3)
= " 1
"
Tipo di argomento 1 | Tipo di argomento 2 | Risultato |
---|---|---|
String |
Int |
String , il tipo String fornito con spaziatura sul lato sinistro, con un numero di spazi corrispondente a Int . |
String |
Decimal |
L'argomento Decimal viene arrotondato per difetto al valore Int più vicino e al tipo String viene aggiunta una spaziatura a sinistra, con il numero di spazi specificato. |
String |
String |
Il secondo argomento viene convertito in un tipo Decimal , arrotondato per difetto al valore Int più vicino e al tipo String viene aggiunta una spaziatura a sinistra con il numero di spazi specificato. Se il secondo argomento non può essere convertito in un tipo Int , il risultato è Undefined . |
Altro valore | Int /Decimal /String |
Il primo valore viene convertito in a String utilizzando le conversioni standard, quindi la LPAD funzione viene applicata su di esso. String Se la conversione non è possibile, il risultato è Undefined . |
Qualsiasi valore | Altro valore | Undefined . |
ltrim(String)
Rimuove tutti gli spazi vuoti iniziali (tabulazioni e spazi) dal tipo String
fornito. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
Ltrim(" h i ")
= "hi ".
Tipo di argomento | Risultato |
---|---|
Int |
La rappresentazione String di Int con tutti gli spazi vuoti iniziali rimossi. |
Decimal |
La rappresentazione String di Decimal con tutti gli spazi vuoti iniziali rimossi. |
Boolean |
La rappresentazione String del tipo booleano ("true" o "false") con tutti gli spazi vuoti iniziali rimossi. |
String |
L'argomento con tutti gli spazi vuoti iniziali rimossi. |
Array | La rappresentazione String del tipo Array (usando le regole di conversione standard) con tutti gli spazi vuoti iniziali rimossi. |
Oggetto | La rappresentazione String del tipo Object (usando le regole di conversione standard) con tutti gli spazi vuoti iniziali rimossi. |
Null | Undefined . |
Undefined | Undefined . |
machinelearning_predict (,, record) modelId roleArn
Usa la machinelearning_predict
funzione per fare previsioni utilizzando i dati di un MQTT messaggio basato su un modello di SageMaker intelligenza artificiale di Amazon. Supportato dalla SQL versione 2015-10-08 e successive. Gli argomenti per la funzione machinelearning_predict
sono i seguenti:
- modelId
-
ID del modello in base a cui effettuare la previsione. L'endpoint in tempo reale del modello deve essere abilitato.
- roleArn
-
Ruolo IAM che dispone di una policy con autorizzazioni
machinelearning:Predict
emachinelearning:GetMLModel
e permette l'accesso al modello in base a cui viene effettuata la previsione. - record
-
I dati da trasmettere a AI Predict. SageMaker API Questo dovrebbe essere rappresentato come un JSON oggetto a livello singolo. Se il record è un JSON oggetto a più livelli, il record viene appiattito serializzandone i valori. Ad esempio, quanto segue: JSON
{ "key1": {"innerKey1": "value1"}, "key2": 0}
diventerebbe:
{ "key1": "{\"innerKey1\": \"value1\"}", "key2": 0}
La funzione restituisce un JSON oggetto con i seguenti campi:
- predictedLabel
-
Classificazione dell'input in base al modello.
- details
-
Contiene gli attributi seguenti:
- PredictiveModelType
-
Tipo di modello. I valori validi sono REGRESSION, BINARY, MULTICLASS.
- Algoritmo
-
L'algoritmo utilizzato dall' SageMaker IA per fare previsioni. Il valore deve essereSGD.
- predictedScores
-
Contiene il punteggio di classificazione non elaborato corrispondente a ogni etichetta.
- predictedValue
-
Il valore previsto dall' SageMaker IA.
mod(Decimal, Decimal)
Restituisce il resto della divisione del primo argomento per il secondo argomento. Equivalente a remainder(Decimal, Decimal). È anche possibile usare "%" come operatore infisso per la stessa funzionalità di modulo. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: mod(8, 3)
= 2.
Operando sinistro | Operando destro | Output |
---|---|---|
Int |
Int |
Int , il resto della divisione del primo argomento per il secondo argomento. |
Int /Decimal |
Int /Decimal |
Decimal , il resto della divisione del primo argomento per il secondo operando. |
String /Int /Decimal |
String /Int /Decimal |
Se tutte le stringhe vengono convertite in decimali, il risultato è il resto della divisione del primo argomento per il secondo argomento. In caso contrario, Undefined . |
Altro valore | Altro valore | Undefined . |
nanvl (,) AnyValue AnyValue
Restituisce il primo argomento, se si tratta di un tipo Decimal
valido. In caso contrario, viene restituito il secondo argomento. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: Nanvl(8, 3)
= 8.
Tipo di argomento 1 | Tipo di argomento 2 | Output |
---|---|---|
Undefined | Qualsiasi valore | Secondo argomento. |
Null | Qualsiasi valore | Secondo argomento. |
Decimal (non un numero) |
Qualsiasi valore | Secondo argomento. |
Decimal (numero) |
Qualsiasi valore | Primo argomento. |
Altro valore | Qualsiasi valore | Primo argomento. |
newuuid()
Restituisce 16 byte casuali. UUID Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: newuuid()
= 123a4567-b89c-12d3-e456-789012345000
numbytes(String)
Restituisce il numero di byte nella codifica UTF -8 della stringa fornita. Agli argomenti non di tipo String
si applicano le regole di conversione standard. Supportato dalla SQL versione 2016-03-23 e successive.
Esempi:
numbytes("hi")
= 2
numbytes("€")
= 3
parse_time(String, Long[, String])
Usa la funzione parse_time
per formattare un timestamp in un formato di data/ora leggibile. Supportato dalla SQL versione 2016-03-23 e successive. Per convertire una stringa di timestamp in millisecondi, consulta time_to_epoch(String, String).
La funzione parse_time
prevede i seguenti argomenti:
- pattern
-
(Stringa) Modello di data/ora conforme ai formati Joda-Time
. - timestamp
-
(Long) Ora da formattare in millisecondi dall'epoca (Unix epoch). Consulta la funzione timestamp().
- timezone
-
(Stringa) Fuso orario del valore di data/ora formattato. L'impostazione predefinita è "». UTC La funzione supporta i fusi orari Joda-Time
. Questo argomento è facoltativo.
Esempi:
Quando questo messaggio viene pubblicato nell'argomento "A/B", il payload {"ts":
"1970.01.01 AD at 21:46:40 CST"}
viene inviato al bucket S3:
{ "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" } }
Quando questo messaggio viene pubblicato nell'argomento "A/B", un payload simile a {"ts": "2017.06.09 AD at 17:19:46 UTC"}
(ma con valore di data/ora corrente) viene inviato al bucket S3:
{ "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" } }
È anche possibile usare parse_time()
come modello di sostituzione. Quando, ad esempio, questo messaggio viene pubblicato nell'argomento "A/B", il payload viene inviato al bucket S3 con key = "2017":
{ "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)
Restituisce il primo argomento elevato al secondo argomento. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: power(2, 5)
= 32.0.
Tipo di argomento 1 | Tipo di argomento 2 | Output |
---|---|---|
Int /Decimal |
Int /Decimal |
Tipo Decimal (a precisione doppia), il primo argomento elevato alla potenza del secondo argomento. |
Int /Decimal /String |
Int /Decimal /String |
Tipo Decimal (a precisione doppia), il primo argomento elevato alla potenza del secondo argomento. Le stringhe vengono convertite in decimali. Se il tipo String non può essere convertito in Decimal , il risultato è Undefined . |
Altro valore | Altro valore | Undefined . |
principal()
Restituisce l'entità principale utilizzata dal dispositivo per l'autenticazione, in base al modo in cui il messaggio di attivazione è stato pubblicato. La tabella seguente descrive il principale restituito per ogni metodo e protocollo di pubblicazione.
Come viene pubblicato il messaggio | Protocollo | Tipo di credenziali | Principale |
---|---|---|---|
MQTTcliente | MQTT | Certificato del dispositivo X.509 | Identificazione personale del certificato X.509 |
AWS IoT MQTTclient di console | MQTT | Utente o ruolo IAM | iam-role-id :session-name |
AWS CLI | HTTP | Utente o ruolo IAM | userid |
AWS IoT Dispositivo SDK | MQTT | Certificato del dispositivo X.509 | Identificazione personale del certificato X.509 |
AWS IoT Dispositivo SDK | MQTTfinita WebSocket | Utente o ruolo IAM | userid |
I seguenti esempi mostrano i diversi tipi di valori che principal()
può restituire:
-
Identificazione personale del certificato X.509:
ba67293af50bf2506f5f93469686da660c7c844e7b3950bfb16813e0d31e9373
-
ID del ruolo IAM e nome della sessione:
ABCD1EFG3HIJK2LMNOP5:my-session-name
-
Restituisce un ID utente:
ABCD1EFG3HIJK2LMNOP5
rand()
Restituisce un tipo double pseudocasuale, distribuito uniformemente e compreso tra 0,0 e 1,0. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
rand()
= 0.8231909191640703
regexp_matches(String, String)
Restituisce true se la stringa (primo argomento) contiene una corrispondenza dell'espressione regolare (secondo argomento). Se la usi |
nell'espressione regolare, usala con. ()
Esempi:
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.
Tipo di argomento | Risultato |
---|---|
Int |
Rappresentazione String del tipo Int . |
Decimal |
Rappresentazione String del tipo Decimal . |
Boolean |
Rappresentazione String del tipo booleano ("true" o "false"). |
String |
Tipo String . |
Array | Rappresentazione String del tipo Array (usando le regole di conversione standard). |
Oggetto | Rappresentazione String del tipo Object (usando le regole di conversione standard). |
Null | Undefined . |
Undefined | Undefined . |
Secondo argomento:
Deve essere un'espressione regex valida. I tipi non String vengono convertiti in tipi String
usando le regole di conversione standard. A seconda del tipo, la stringa risultante potrebbe non essere un'espressione regolare valida. Se l'argomento (convertito) non è un valore regex valido, il risultato è Undefined
.
regexp_replace(String, String, String)
Sostituisce tutte le occorrenze del secondo argomento (espressione regolare) nel primo argomento con il terzo argomento. Può fare riferimento a gruppi Capture con "$". Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
regexp_replace("abcd", "bc", "x")
= "axd".
regexp_replace("abcd", "b(.*)d", "$1")
= "ac".
Tipo di argomento | Risultato |
---|---|
Int |
Rappresentazione String del tipo Int . |
Decimal |
Rappresentazione String del tipo Decimal . |
Boolean |
Rappresentazione String del tipo booleano ("true" o "false"). |
String |
Valore di origine. |
Array | Rappresentazione String del tipo Array (usando le regole di conversione standard). |
Oggetto | Rappresentazione String del tipo Object (usando le regole di conversione standard). |
Null | Undefined . |
Undefined | Undefined . |
Secondo argomento:
Deve essere un'espressione regex valida. I tipi non String vengono convertiti in tipi String
usando le regole di conversione standard. A seconda del tipo, la stringa risultante potrebbe non essere un'espressione regolare valida. Se l'argomento (convertito) non è un'espressione regex valida, il risultato è Undefined
.
Terzo argomento:
Deve essere una stringa di sostituzione regex valida. Può fare riferimento a gruppi Capture. I tipi non String vengono convertiti in tipi String
usando le regole di conversione standard. Se l'argomento (convertito) non è una stringa di sostituzione regex valida, il risultato è Undefined
.
regexp_substr(String, String)
Trova la prima corrispondenza del secondo parametro (regex) nel primo parametro. Può fare riferimento a gruppi Capture con "$". Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
regexp_substr("hihihello", "hi")
= "hi"
regexp_substr("hihihello", "(hi)*")
= «hihi»
Tipo di argomento | Risultato |
---|---|
Int |
Rappresentazione String del tipo Int . |
Decimal |
Rappresentazione String del tipo Decimal . |
Boolean |
Rappresentazione String del tipo booleano ("true" o "false"). |
String |
Argomento String . |
Array | Rappresentazione String del tipo Array (usando le regole di conversione standard). |
Oggetto | Rappresentazione String del tipo Object (usando le regole di conversione standard). |
Null | Undefined . |
Undefined | Undefined . |
Secondo argomento:
Deve essere un'espressione regex valida. I tipi non String vengono convertiti in tipi String
usando le regole di conversione standard. A seconda del tipo, la stringa risultante potrebbe non essere un'espressione regolare valida. Se l'argomento (convertito) non è un'espressione regex valida, il risultato è Undefined
.
remainder(Decimal, Decimal)
Restituisce il resto della divisione del primo argomento per il secondo argomento. Equivalente a mod(Decimal, Decimal). È anche possibile usare "%" come operatore infisso per la stessa funzionalità di modulo. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: remainder(8, 3)
= 2.
Operando sinistro | Operando destro | Output |
---|---|---|
Int |
Int |
Int , il resto della divisione del primo argomento per il secondo argomento. |
Int /Decimal |
Int /Decimal |
Decimal , il resto della divisione del primo argomento per il secondo operando. |
String /Int /Decimal |
String /Int /Decimal |
Se tutte le stringhe vengono convertite in decimali, il risultato è il resto della divisione del primo argomento per il secondo argomento. In caso contrario, Undefined . |
Altro valore | Altro valore | Undefined . |
replace(String, String, String)
Sostituisce tutte le occorrenze del secondo argomento nel primo argomento con il terzo argomento. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
replace("abcd", "bc", "x")
= "axd"
.
replace("abcdabcd", "b", "x")
= "axcdaxcd"
.
Tipo di argomento | Risultato |
---|---|
Int |
Rappresentazione String del tipo Int . |
Decimal |
Rappresentazione String del tipo Decimal . |
Boolean |
Rappresentazione String del tipo booleano ("true" o "false"). |
String |
Valore di origine. |
Array | Rappresentazione String del tipo Array (usando le regole di conversione standard). |
Oggetto | Rappresentazione String del tipo Object (usando le regole di conversione standard). |
Null | Undefined . |
Undefined | Undefined . |
rpad(String, Int)
Restituisce l'argomento String con spaziatura sul lato destro, con il numero di spazi specificato nel secondo argomento. L'argomento Int
deve essere compreso tra 0 e 1.000. Se il valore fornito è al di fuori di questo intervallo valido, l'argomento viene impostato sul valore valido più vicino (0 o 1000). Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
rpad("hello", 2)
= "hello
".
rpad(1, 3)
= "1
".
Tipo di argomento 1 | Tipo di argomento 2 | Risultato |
---|---|---|
String |
Int |
Al tipo String viene aggiunta una spaziatura sul lato destro, con un numero di spazi corrispondente al valore Int fornito. |
String |
Decimal |
L'argomento Decimal viene arrotondato per difetto al valore Int più vicino e alla stringa viene aggiunta una spaziatura sul lato destro, con un numero di spazi corrispondente al valore Int fornito. |
String |
String |
Il secondo argomento viene convertito in un tipo Decimal , arrotondato per difetto al valore Int più vicino. Al tipo String viene aggiunta una spaziatura sul lato destro, con un numero di spazi corrispondente al valore Int . |
Altro valore | Int /Decimal /String |
Il primo valore viene convertito in un tipo String usando le conversioni standard e quindi al tipo String viene applicata la funzione rpad. Se la conversione non è possibile, il risultato è Undefined . |
Qualsiasi valore | Altro valore | Undefined . |
round(Decimal)
Arrotonda il tipo Decimal
specificato al valore Int
più vicino. Se Decimal
è equidistante da due valori Int
(ad esempio, 0,5), il tipo Decimal
viene arrotondato per eccesso. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: Round(1.2)
= 1.
Round(1.5)
= 2.
Round(1.7)
= 2.
Round(-1.1)
= -1.
Round(-1.5)
= -2.
Tipo di argomento | Risultato |
---|---|
Int |
Argomento. |
Decimal |
Decimal viene arrotondato per difetto al valore Int più vicino. |
String |
Decimal viene arrotondato per difetto al valore Int più vicino. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . |
Altro valore | Undefined . |
rtrim(String)
Rimuove tutti gli spazi vuoti finali (tabulazioni e spazi) dal tipo String
fornito. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
rtrim(" h i ")
= " h i"
Tipo di argomento | Risultato |
---|---|
Int |
Rappresentazione String del tipo Int . |
Decimal |
Rappresentazione String del tipo Decimal . |
Boolean |
Rappresentazione String del tipo booleano ("true" o "false"). |
Array | Rappresentazione String del tipo Array (usando le regole di conversione standard). |
Oggetto | Rappresentazione String del tipo Object (usando le regole di conversione standard). |
Null | Undefined . |
Undefined | Undefined |
sign(Decimal)
Restituisce il segno di un determinato numero. Quando il segno dell'argomento è positivo, viene restituito 1. Quando il segno dell'argomento è negativo, viene restituito -1. Se l'argomento è 0, viene restituito 0. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
sign(-7)
= -1.
sign(0)
= 0.
sign(13)
= 1.
Tipo di argomento | Risultato |
---|---|
Int |
Int , il segno del valore Int . |
Decimal |
Int , il segno del valore Decimal . |
String |
Int , il segno del valore Decimal . La stringa viene convertita in un valore Decimal e viene restituito il segno del valore Decimal . Se il tipo String non può essere convertito in Decimal , il risultato è Undefined . Supportato dalla SQL versione 2015-10-08 e successive. |
Altro valore | Undefined . |
sin(Decimal)
Restituisce il seno di un numero in radianti. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: sin(0)
= 0.0
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), il seno dell'argomento. |
Decimal |
Decimal (a precisione doppia), il seno dell'argomento. |
Boolean |
Undefined . |
String |
Decimal (a precisione doppia), il seno dell'argomento. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined |
Undefined . |
sinh(Decimal)
Restituisce il seno iperbolico di un numero. I valori Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Il risultato è un valore Decimal
a precisione doppia. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: sinh(2.3)
= 4.936961805545957
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), il seno iperbolico dell'argomento. |
Decimal |
Decimal (a precisione doppia), il seno iperbolico dell'argomento. |
Boolean |
Undefined . |
String |
Decimal (a precisione doppia), il seno iperbolico dell'argomento. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
sourceip()
Recupera l'indirizzo IP di un dispositivo o del router a cui si connette. Se il dispositivo è connesso direttamente a Internet, la funzione restituirà l'indirizzo IP di origine del dispositivo. Se il dispositivo è connesso a un router che si connette a Internet, la funzione restituirà l'indirizzo IP di origine del router. Supportato dalla versione 2016-03-23. SQL sourceip()
non accetta alcun parametro.
Importante
L'indirizzo IP di origine pubblica di un dispositivo è spesso l'indirizzo IP dell'ultimo gateway di traduzione degli indirizzi di rete (NAT), ad esempio il router o il modem via cavo del provider di servizi Internet.
Esempi:
sourceip()="192.158.1.38"
sourceip()="1.102.103.104"
sourceip()="2001:db8:ff00::12ab:34cd"
SQLesempio:
SELECT *, sourceip() as deviceIp FROM 'some/topic'
Esempi di come utilizzare la funzione sourceip () nelle azioni delle AWS IoT Core regole:
Esempio 1
L'esempio seguente mostra come chiamare la funzione () come modello di sostituzione in un'operazione DynamoDB.
{ "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" } } ] } }
Esempio 2
{ "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()}" } ] } } } ] } }
È possibile recuperare l'indirizzo IP di origine dai messaggi che passano alle AWS IoT Core regole dai percorsi Message Broker e Basic Ingest. Puoi anche recuperare l'IP di origine per entrambi i messaggi. IPv4 IPv6 L'IP di origine verrà visualizzato come segue:
IPv6: yyyy:yyyy:yyyy::yyyy:yyyy
IPv4: xxx.xxx.xxx.xxx
Nota
L'IP di origine originale non verrà passato tramite l'operazione Republish.
substring(String, Int[, Int])
Richiede un tipo String
seguito da uno o due valori Int
. Per un tipo String
e un singolo argomento Int
, questa funzione restituisce la sottostringa del tipo String
fornito dall'indice Int
specificato (in base 0, incluso) fino alla fine di String
. Per un tipo String
e due argomenti Int
, questa funzione restituisce la sottostringa del tipo String
fornito dal primo argomento di indice Int
specificato (in base 0, incluso) al secondo argomento di indice Int
(in base 0, escluso). Gli indici inferiori a zero vengono impostati su zero. Gli indici superiori alla lunghezza di String
vengono impostati sulla lunghezza di String
. Per la versione con tre argomenti, se il primo indice è maggiore o uguale al secondo indice, il risultato è il tipo String
vuoto.
Se gli argomenti forniti non sono (String
,Int
) o (,String
,Int
)Int
, le conversioni standard vengono applicate agli argomenti per tentare di convertirli nei tipi corretti. Se i tipi non possono essere convertiti, il risultato della funzione è Undefined
. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
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)
= "rue".
substring(false, -2.411E247)
= "false".
substring("012345", 1, 3)
= "12".
substring("012345", -50, 50)
= "012345".
substring("012345", 3, 1)
= "".
sql_version()
Restituisce la SQL versione specificata in questa regola. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
sql_version()
= "2016-03-23"
sqrt(Decimal)
Restituisce la radice quadrata di un numero. Gli argomenti Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: sqrt(9)
= 3.0.
Tipo di argomento | Risultato |
---|---|
Int |
Radice quadrata dell'argomento. |
Decimal |
Radice quadrata dell'argomento. |
Boolean |
Undefined . |
String |
Radice quadrata dell'argomento. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
startswith(String, String)
Restituisce un tipo Boolean
che indica se il primo argomento String inizia con il secondo argomento String. Se uno degli argomenti è Null
oppure Undefined
, il risultato è Undefined
. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
startswith("ranger","ran")
= true
Tipo di argomento 1 | Tipo di argomento 2 | Risultato |
---|---|---|
String |
String |
Indica se il primo argomento String inizia con il secondo argomento String. |
Altro valore | Altro valore | Entrambi gli argomenti vengono convertiti in stringhe usando le regole di conversione standard. Restituisce true se il primo argomento String inizia con il secondo argomento String. Se uno degli argomenti è Null oppure Undefined , il risultato è Undefined . |
tan(Decimal)
Restituisce la tangente di un numero in radianti. I valori Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: tan(3)
= -0.1425465430742778
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), la tangente dell'argomento. |
Decimal |
Decimal (a precisione doppia), la tangente dell'argomento. |
Boolean |
Undefined . |
String |
Decimal (a precisione doppia), la tangente dell'argomento. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
tanh(Decimal)
Restituisce la tangente iperbolica di un numero in radianti. I valori Decimal
vengono arrotondati a un valore a precisione doppia prima dell'applicazione della funzione. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio: tanh(2.3)
= 0.9800963962661914
Tipo di argomento | Risultato |
---|---|
Int |
Decimal (a precisione doppia), la tangente iperbolica dell'argomento. |
Decimal |
Decimal (a precisione doppia), la tangente iperbolica dell'argomento. |
Boolean |
Undefined . |
String |
Decimal (a precisione doppia), la tangente iperbolica dell'argomento. Se la stringa non può essere convertita in un tipo Decimal , il risultato è Undefined . |
Array | Undefined . |
Oggetto | Undefined . |
Null | Undefined . |
Undefined | Undefined . |
time_to_epoch(String, String)
Utilizzo della funzione time_to_epoch
per convertire una stringa di timestamp in un numero di millisecondi nel tempo dell'epoca Unix. Supportato dalla SQL versione 2016-03-23 e successive. Per convertire millisecondi in una stringa di timestamp formattata, consulta parse_time(String, Long[, String]).
La funzione time_to_epoch
accetta i seguenti argomenti:
- timestamp
-
(Stringa) Stringa dell'indicatore temporale da convertire in millisecondi dall'epoca di Unix. Se la stringa del timestamp non specifica un fuso orario, la funzione utilizza il fuso orario. UTC
- pattern
-
(Stringa) Un modello di data/ora che segue i formati temporali. JDK11
Esempi:
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()
Restituisce il timestamp corrente in millisecondi a partire dalle 00:00:00 Coordinated Universal Time (UTC) di giovedì 1 gennaio 1970, come osservato dal motore delle regole. AWS IoT Supportato dalla versione 2015-10-08 e successive. SQL
Esempio: timestamp()
= 1481825251155
topic(Decimal)
Restituisce l'argomento a cui è stato inviato il messaggio che ha attivato la regola. Se non viene specificato alcun parametro, viene restituito l'intero argomento. Il parametro Decimal
viene utilizzato per specificare un segmento di argomento specifico, con 1 che indica il primo segmento. Per l'argomento foo/bar/baz
, topic(1) restituisce foo
, topic(2) restituisce bar
e così via. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
topic()
= "things/myThings/thingOne"
topic(1)
= "things"
Quando viene utilizzato Basic Ingest, il prefisso iniziale dell'argomento ($aws/rules/
) non è disponibile per la funzione dell'argomento(). Ad esempio, dato l'argomento:rule-name
$aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights
topic()
= "Buildings/Building5/Floor2/Room201/Lights"
topic(3)
= "Floor2"
traceid()
Restituisce l'ID di traccia (UUID) del MQTT messaggio o Undefined
se il messaggio non è stato inviato. MQTT Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
traceid()
= "12345678-1234-1234-1234-123456789012"
transform(String, Object, Array)
Restituisce una matrice di oggetti contenenti il risultato della trasformazione specificata del parametro Object
sul parametro Array
.
Supportato dalla SQL versione 2016-03-23 e successive.
- Stringa
Modalità di trasformazione da utilizzare. Consulta la tabella seguente per informazioni sulle modalità di trasformazione supportate e sulla modalità di creazione dell'oggetto
Result
daObject
e dai parametriArray
.- Oggetto
Un oggetto che contiene gli attributi da applicare a ciascun elemento dell’
Array
.- Array
-
Matrice di oggetti in cui gli attributi di
Object
vengono applicati.Ogni oggetto in questa matrice corrisponde a un oggetto nella risposta della funzione. Ogni oggetto nella risposta della funzione contiene gli attributi presenti nell'oggetto originale e gli attributi forniti da
Object
come determinato dalla modalità di trasformazione specificata inString
.
Parametro |
Parametro |
Parametro |
Risultato |
---|---|---|---|
|
Oggetto |
Matrice di oggetti |
Una matrice di oggetti in cui ogni oggetto contiene gli attributi di un elemento del parametro |
Qualsiasi altro valore |
Qualsiasi valore |
Qualsiasi valore |
Undefined |
Nota
L'array restituito da questa funzione è limitato a 128 KiB.
Esempio 1 di funzione Transform
In questo esempio viene mostrato come la funzione transform() produce una singola matrice di oggetti da un oggetto dati e una matrice.
In questo esempio, il seguente messaggio viene pubblicato sull'argomento. MQTT A/B
{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }
Questa SQL istruzione per un'azione relativa a una regola tematica utilizza la transform() funzione con un String
valore dienrichArray
. In questo esempio, Object
è la proprietà attributes
dal payload del messaggio e Array
è la matrice values
che contiene tre oggetti.
select value transform("enrichArray", attributes, values) from 'A/B'
Dopo aver ricevuto il payload del messaggio, l'SQListruzione restituisce la seguente risposta.
[ { "a": 3, "data1": 1, "data2": 2 }, { "b": 4, "data1": 1, "data2": 2 }, { "c": 5, "data1": 1, "data2": 2 } ]
Esempio 2 di funzione Transform
In questo esempio viene mostrato come la funzione transform() può utilizzare valori letterali per includere e rinominare singoli attributi dal payload del messaggio.
In questo esempio, il seguente messaggio viene pubblicato nell'MQTTargomento. A/B
Questo è lo stesso messaggio utilizzato in Esempio 1 di funzione Transform.
{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }
Questa SQL istruzione per un'azione relativa a una regola tematica utilizza la transform() funzione con un String
valore dienrichArray
. L’Object
nella funzione transform() ha un singolo attributo denominato key
con il valore di attributes.data1
nel payload del messaggio e Array
è la matrice values
, che contiene gli stessi tre oggetti utilizzati nell'esempio precedente.
select value transform("enrichArray", {"key": attributes.data1}, values) from 'A/B'
Dopo aver ricevuto il payload del messaggio, questa SQL istruzione restituisce la seguente risposta. Nota come la proprietà data1
è denominata key
nella risposta.
[ { "a": 3, "key": 1 }, { "b": 4, "key": 1 }, { "c": 5, "key": 1 } ]
Esempio 3 di funzione Transform
Questo esempio mostra come la transform() funzione può essere utilizzata nelle SELECT clausole annidate per selezionare più attributi e creare nuovi oggetti per l'elaborazione successiva.
In questo esempio, il seguente messaggio viene pubblicato nell'argomento. MQTT A/B
{ "data1": "example", "data2": { "a": "first attribute", "b": "second attribute", "c": [ { "x": { "someInt": 5, "someString": "hello" }, "y": true }, { "x": { "someInt": 10, "someString": "world" }, "y": false } ] } }
La funzione di trasformazione Object
for this è l'oggetto restituito dall'SELECTistruzione, che contiene gli b
elementi a
e dell'data2
oggetto del messaggio. Il parametro Array
è costituito dai due oggetti della matrice data2.c
nel messaggio originale.
select value transform('enrichArray', (select a, b from data2), (select value c from data2)) from 'A/B'
Con il messaggio precedente, l'SQListruzione restituisce la risposta seguente.
[ { "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" } ]
La matrice restituita in questa risposta può essere utilizzata con operazioni di regole di argomento che supportano batchMode
.
trim(String)
Rimuove tutti gli spazi vuoti iniziali e finali dal tipo String
fornito. Supportato dalla SQL versione 2015-10-08 e successive.
Esempio:
Trim(" hi ")
= "hi"
Tipo di argomento | Risultato |
---|---|
Int |
La rappresentazione String di Int con tutti gli spazi vuoti iniziali e finali rimossi. |
Decimal |
La rappresentazione String di Decimal con tutti gli spazi vuoti iniziali e finali rimossi. |
Boolean |
La rappresentazione String di Boolean ("true" o "false") con tutti gli spazi vuoti iniziali e finali rimossi. |
String |
String con tutti gli spazi vuoti iniziali e finali rimossi. |
Array | Rappresentazione String del tipo Array usando le regole di conversione standard. |
Oggetto | Rappresentazione String del tipo Object usando le regole di conversione standard. |
Null | Undefined . |
Undefined | Undefined . |
trunc(Decimal, Int)
Tronca il primo argomento al numero di posizioni Decimal
specificato nel secondo argomento. Se il secondo argomento è inferiore a zero, viene impostato su zero. Se il secondo argomento è superiore a 34, viene impostato su 34. Gli zeri finali vengono eliminati dal risultato. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
trunc(2.3, 0)
= 2.
trunc(2.3123, 2)
= 2.31.
trunc(2.888, 2)
= 2.88.
trunc(2.00, 5)
= 2.
Tipo di argomento 1 | Tipo di argomento 2 | Risultato |
---|---|---|
Int |
Int |
Valore di origine. |
Int /Decimal |
Int /Decimal |
Il primo argomento viene troncato alla lunghezza indicata dal secondo argomento. Il secondo argomento, se non è un tipo Int , viene arrotondato per difetto al valore Int più vicino. |
Int /Decimal /String |
Int /Decimal |
Il primo argomento viene troncato alla lunghezza indicata dal secondo argomento. Il secondo argomento, se non è un tipo Int , viene arrotondato per difetto al valore Int più vicino. Un tipo String viene convertito in un valore Decimal . Se la conversione della stringa non riesce, il risultato è Undefined . |
Altro valore | Undefined . |
upper(String)
Restituisce la versione con caratteri maiuscoli del tipo String
specificato. Gli argomenti non di tipo String
vengono convertiti in String
usando le regole di conversione standard. Supportato dalla SQL versione 2015-10-08 e successive.
Esempi:
upper("hello")
= "HELLO"
upper(["hello"])
= "[\"HELLO\"]"