Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Puede utilizar las funciones integradas siguientes en las cláusulas SELECT o WHERE de sus expresiones SQL.
abs(Decimal)
Devuelve el valor absoluto de un número. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: abs(-5)
devuelve 5.
Tipo de argumento | Resultado |
---|---|
Int |
Int , el valor absoluto del argumento. |
Decimal |
Decimal , el valor absoluto del argumento. |
Boolean |
Undefined . |
String |
Decimal . El resultado es el valor absoluto del argumento. Si la cadena no se puede convertir, el resultado es Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
accountid()
Devuelve el ID de la cuenta que posee esta regla como un valor de tipo String
. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
accountid()
= "123456789012"
acos(Decimal)
Devuelve el coseno inverso de un número en radianes. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: acos(0)
= 1.5707963267948966
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), el coseno inverso del argumento. Se devuelven resultados imaginarios como Undefined . |
Decimal |
Decimal (con doble precisión), el coseno inverso del argumento. Se devuelven resultados imaginarios como Undefined . |
Boolean |
Undefined . |
String |
Decimal , el coseno inverso del argumento. Si la cadena no se puede convertir, el resultado es Undefined . Se devuelven resultados imaginarios como Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
asin(Decimal)
Devuelve el seno inverso de un número en radianes. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: asin(0)
= 0.0
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), el seno inverso del argumento. Se devuelven resultados imaginarios como Undefined . |
Decimal |
Decimal (con doble precisión), el seno inverso del argumento. Se devuelven resultados imaginarios como Undefined . |
Boolean |
Undefined . |
String |
Decimal (con doble precisión), el seno inverso del argumento. Si la cadena no se puede convertir, el resultado es Undefined . Se devuelven resultados imaginarios como Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
atan(Decimal)
Devuelve la tangente inversa de un número en radianes. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: atan(0)
= 0.0
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), la tangente inversa del argumento. Se devuelven resultados imaginarios como Undefined . |
Decimal |
Decimal (con doble precisión), la tangente inversa del argumento. Se devuelven resultados imaginarios como Undefined . |
Boolean |
Undefined . |
String |
Decimal , la tangente inversa del argumento. Si la cadena no se puede convertir, el resultado es Undefined . Se devuelven resultados imaginarios como Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
atan2(Decimal, Decimal)
Devuelve el ángulo, en radianes, entre el eje x positivo y el punto (x, y) definido en los dos argumentos. El ángulo es positivo para los ángulos en sentido contrario a las agujas del reloj (plano medio superior y > 0) y es negativo para los ángulos que siguen el sentido de las agujas del reloj (plano medio inferior y < 0). Los argumentos Decimal
se redondean con doble precisión antes de aplicar la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: atan2(1, 0)
= 1.5707963267948966
Tipo de argumento | Tipo de argumento | Resultado |
---|---|---|
Int /Decimal |
Int /Decimal |
Decimal (con doble precisión), el ángulo entre el eje x y el punto (x, y) especificado. |
Int /Decimal /String |
Int /Decimal /String |
Decimal , la tangente inversa del punto descrito. Si una cadena no se puede convertir, el resultado es Undefined . |
Otro valor | Otro valor | Undefined . |
aws_lambda(functionArn, inputJson)
Llama a la función de Lambda especificada que pasa inputJson
a la función de Lambda y devuelve el JSON generado por la función de Lambda.
Argumento | Descripción |
---|---|
functionArn |
El ARN de la función de Lambda; a la que se llamará. La función de Lambda debe devolver datos JSON. |
inputJson |
La entrada de JSON trasladada a la función de Lambda. Para pasar literales y consultas de objetos anidados, debe usar la versión 2016-03-23 de SQL. |
Debe conceder AWS IoT lambda:InvokeFunction
permisos para invocar la función Lambda especificada. En el siguiente ejemplo, se muestra cómo se puede conceder el permiso lambda:InvokeFunction
utilizando 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"
A continuación, se indican los argumentos del comando add-permission:
- --function-name
-
Nombre de la función de Lambda. Agrega un nuevo permiso para actualizar la política de recursos de la función.
- --region
-
El Región de AWS de su cuenta.
- -- entidad principal
-
La entidad principal que obtiene el permiso. Esto debería ser
iot.amazonaws.com
para permitir el AWS IoT permiso de llamar a una función Lambda. - --source-arn
-
El ARN de la regla. Puede usar el get-topic-rule AWS CLI comando para obtener el ARN de una regla.
- --source-account
-
El Cuenta de AWS lugar donde se define la regla.
- --statement-id
-
Un identificador de instrucción único.
- --action
-
La acción Lambda que desea permitir en esta instrucción. Para permitir que AWS IoT invoque una función de Lambda, especifique
lambda:InvokeFunction
.
importante
Si añade un permiso para un AWS IoT principal sin proporcionar el source-arn
osource-account
, cualquier permiso Cuenta de AWS
que cree una regla con su acción de Lambda puede activar reglas desde las que invocar la función de Lambda. AWS IoT Para obtener más información, consulte Lambda Permission Model.
Dada una carga de mensaje JSON como:
{
"attribute1": 21,
"attribute2": "value"
}
La función aws_lambda
se puede utilizar para llamar a la función de Lambda de la siguiente manera:
SELECT aws_lambda("arn:aws:lambda:
us-east-1
:account_id
:function:lambda_function
", {"payload":attribute1}) as output FROM 'topic-filter
'
Si desea pasar la carga del mensaje MQTT completa, puede especificar la carga JSON mediante '*', como en el ejemplo siguiente.
SELECT aws_lambda("arn:aws:lambda:
us-east-1
:account_id
:function:lambda_function
", *) as output FROM 'topic-filter
'
payload.inner.element
selecciona datos de mensajes publicados en el tema 'tema/subtema'.
some.value
selecciona datos de la salida generada por la función de Lambda.
nota
El motor de reglas limita la duración de la ejecución de las funciones de Lambda. Las llamadas a funciones de Lambda desde las reglas deben completarse en 2000 milisegundos.
bitand(Int, Int)
Ejecuta una operación AND bit a bit en las representaciones de bits de los dos argumentos Int
(-convertidos). Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: bitand(13, 5)
= 5
Tipo de argumento | Tipo de argumento | Resultado |
---|---|---|
Int |
Int |
Int , una operación AND bit a bit de los dos argumentos. |
Int /Decimal |
Int /Decimal |
Int , una operación AND bit a bit de los dos argumentos. Todos los números que no son de tipo Int se redondean al valor Int inferior más cercano. Si alguno de los argumentos no se puede convertir en un valor Int , el resultado es Undefined . |
Int /Decimal /String |
Int /Decimal /String |
Int , una operación AND bit a bit de los dos argumentos. Todas las cadenas se convierten en decimales y se redondean al valor Int inferior más cercano. Si se produce un error en la conversión, el resultado obtenido es Undefined . |
Otro valor | Otro valor | Undefined . |
bitor(Int, Int)
Realiza una operación OR bit a bit de las representaciones de bit de los dos argumentos. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: bitor(8, 5)
= 13
Tipo de argumento | Tipo de argumento | Resultado |
---|---|---|
Int |
Int |
Int , la operación OR bit a bit de los dos argumentos. |
Int /Decimal |
Int /Decimal |
Int , la operación OR bit a bit de los dos argumentos. Todos los números que no son de tipo Int se redondean al valor Int inferior más cercano. Si se produce un error en la conversión, el resultado obtenido es Undefined . |
Int /Decimal /String |
Int /Decimal /String |
Int , la operación OR bit a bit en los dos argumentos. Todas las cadenas se convierten en decimales y se redondean al valor Int inferior más cercano. Si se produce un error en la conversión, el resultado obtenido es Undefined . |
Otro valor | Otro valor | Undefined . |
bitxor(Int, Int)
Ejecuta una operación XOR bit a bit en las representaciones de bits de los dos argumentos Int
(-convertidos). Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:bitor(13, 5)
= 8
Tipo de argumento | Tipo de argumento | Resultado |
---|---|---|
Int |
Int |
Int , una operación XOR bit a bit en los dos argumentos. |
Int /Decimal |
Int /Decimal |
Int , una operación XOR bit a bit en los dos argumentos. Los números que no son Int se redondean al valor Int inferior más cercano. |
Int /Decimal /String |
Int /Decimal /String |
Int , una operación XOR bit a bit en los dos argumentos. Las cadenas se convierten en decimales y se redondean al valor Int más cercano. Si se produce un error en la conversión, el resultado obtenido es Undefined . |
Otro valor | Otro valor | Undefined . |
bitnot(Int)
Ejecuta una operación NOT bit a bit en las representaciones de bits del argumento Int
(convertido). Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: bitnot(13)
= 2
Tipo de argumento | Resultado |
---|---|
Int |
Int , una operación NOT bit a bit del argumento. |
Decimal |
Int , una operación NOT bit a bit del argumento. El valor Decimal se redondea al valor Int inferior más cercano. |
String |
Int , una operación NOT bit a bit del argumento. Las cadenas se convierten en decimales y se redondean al valor Int inferior más cercano. Si se produce un error en la conversión, el resultado obtenido es Undefined . |
Otro valor | Otro valor. |
cast()
Convierte un valor de un tipo de datos a otro tipo. Cast se comporta básicamente como las conversiones estándar, salvo que puede convertir números en valores booleanos o viceversa. Si AWS IoT no puede determinar cómo convertir un tipo en otro, el resultado es. Undefined
Es compatible con la versión 2015-10-08 de SQL y versiones posteriores. Formato: fundido (value
astype
).
Ejemplo:
cast(true as Int)
= 1
Las siguientes palabras clave pueden aparecer después de "as" cuando se llama a cast
:
Palabra clave | Resultado |
---|---|
String |
Convierte un valor en String . |
Nvarchar | Convierte un valor en String . |
Texto | Convierte un valor en String . |
Ntext | Convierte un valor en String . |
varchar | Convierte un valor en String . |
Int |
Convierte un valor en Int . |
Entero | Convierte un valor en Int . |
Doble | Convierte un valor en Decimal (con double precision). |
Palabra clave | Resultado |
---|---|
Decimal |
Convierte un valor en Decimal . |
Bool | Convierte un valor en Boolean . |
Boolean |
Convierte un valor en Boolean . |
Reglas de conversión:
Tipo de argumento | Resultado |
---|---|
Int |
Valor Decimal sin separador decimal. |
Decimal |
El valor de origen. notaCon SQL V2 (2016-03-23), los valores numéricos que son números enteros, como |
Boolean |
true = 1.0, false = 0.0. |
String |
Intenta analizar la cadena como un valor Decimal . AWS IoT
intenta analizar las cadenas que coincidan con la expresión regular: ^-?\d+(\.\d+)?((?i)E-?\d+)?$. "0", "-1.2", "5E-12" son ejemplos de cadenas que se convierten automáticamente en valores de tipo Decimal. |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
Tipo de argumento | Resultado |
---|---|
Int |
El valor de origen. |
Decimal |
El valor de origen redondeado al valor Int inferior más cercano. |
Boolean |
true = 1.0, false = 0.0. |
String |
Intenta analizar la cadena como un valor Decimal . AWS IoT
intenta analizar las cadenas que coincidan con la expresión regular: ^-?\d+(\.\d+)?((?i)E-?\d+)?$. "0", "-1.2", "5E-12" son ejemplos de cadenas que se convierten automáticamente en valores de tipo Decimal. AWS IoT
intenta convertir la cadena en un valor de tipo Decimal y redondearlo al valor de tipo Int inferior más cercano. |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
Tipo de argumento | Resultado |
---|---|
Int |
0 = False, any_nonzero_value = True. |
Decimal |
0 = False, any_nonzero_value = True. |
Boolean |
El valor de origen. |
String |
"true" = True y "false" = False (no distingue entre mayúsculas y minúsculas). Otros valores de cadena = Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
Tipo de argumento | Resultado |
---|---|
Int |
Una representación de cadena del valor Int , en notación estándar. |
Decimal |
Una cadena que representa el valor Decimal , posiblemente en notación científica. |
Boolean |
"true" o "false", todo en minúsculas. |
String |
El valor de origen. |
Matriz | La matriz serializada en formato JSON. La cadena obtenida es una lista separada por comas, entre corchetes. Los valores String se indican entre comillas. Los valores Decimal , Int y Boolean no se indican entre comillas. |
Objeto | El objeto serializado al formato JSON. La cadena JSON es una lista separada por comas de pares clave-valor que comienza y termina con llaves. Los valores String se indican entre comillas. Los valores Decimal , Int , Boolean y Null no se indican entre comillas. |
Nulo | Undefined . |
Sin definir | Undefined . |
ceil(Decimal)
Redondea el valor Decimal
indicado al valor Int
superior más cercano. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
ceil(1.2)
= 2
ceil(-1.2)
= -1
Tipo de argumento | Resultado |
---|---|
Int |
Int , el valor del argumento. |
Decimal |
Int , el valor de Decimal redondeado al valor de tipo Int superior más cercano. |
String |
Int . La cadena se convierte en un valor Decimal y se redondea al valor de tipo Int superior más cercano. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . |
Otro valor | Undefined . |
chr(String)
Devuelve el carácter ASCII que corresponde al argumento Int
determinado. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
chr(65)
= "A".
chr(49)
= "1".
Tipo de argumento | Resultado |
---|---|
Int |
El carácter correspondiente al valor ASCII especificado. Si el argumento no es un valor ASCII válido, el resultado es Undefined . |
Decimal |
El carácter correspondiente al valor ASCII especificado. El argumento Decimal se redondea al valor Int inferior más cercano. Si el argumento no es un valor ASCII válido, el resultado es Undefined . |
Boolean |
Undefined . |
String |
Si el valor String puede convertirse en un valor Decimal , se redondea al valor Int inferior más cercano. Si el argumento no es un valor ASCII válido, el resultado es Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Otro valor | Undefined . |
clientid()
Devuelve el ID del cliente MQTT que envía el mensaje o n/a
si el mensaje no se ha enviado por MQTT. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
clientid()
= "123456789012"
concat()
Concatena matrices o cadenas. Esta función acepta cualquier cantidad de argumentos y devuelve un valor String
o un valor Array
. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
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]
Número de argumentos | Resultado |
---|---|
0 | Undefined . |
1 | El argumento se devuelve sin modificar. |
2+ |
Si alguno de los argumentos es un valor |
cos(Decimal)
Devuelve el coseno de un número en radianes. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
cos(0)
= 1.
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), el coseno del argumento. Se devuelven resultados imaginarios como Undefined . |
Decimal |
Decimal (con doble precisión), el coseno del argumento. Se devuelven resultados imaginarios como Undefined . |
Boolean |
Undefined . |
String |
Decimal (con doble precisión), el coseno del argumento. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . Se devuelven resultados imaginarios como Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
cosh(Decimal)
Devuelve el coseno hiperbólico de un número en radianes. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: cosh(2.3)
= 5.037220649268761.
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), el coseno hiperbólico del argumento. Se devuelven resultados imaginarios como Undefined . |
Decimal |
Decimal (con doble precisión), el coseno hiperbólico del argumento. Se devuelven resultados imaginarios como Undefined . |
Boolean |
Undefined . |
String |
Decimal (con doble precisión), el coseno hiperbólico del argumento. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . Se devuelven resultados imaginarios como Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
decode(value, decodingScheme)
Utilice la función decode
para descodificar un valor codificado. Si la cadena descodificada es un documento JSON, se devuelve un objeto direccionable. De lo contrario, la cadena descodificada se devuelve como una cadena. La función devuelve NULL si la cadena no se puede descodificar. Esta función admite la descodificación de cadenas codificadas en base64 y el formato de mensaje de búferes de protocolo (protobuf).
Es compatible con la versión SQL 2016-03-23 y versiones posteriores.
- valor
-
Un valor de cadena o cualquiera de las expresiones válidas, tal como se define en AWS IoT Referencia SQL, que devuelven una cadena.
- decodingScheme
-
Una cadena literal que representa el esquema utilizado para descodificar el valor. Actualmente solo se admiten
'base64'
y'proto'
.
Descodificar cadenas codificadas en base64
En este ejemplo, la carga del mensaje incluye un valor codificado.
{
encoded_temp: "eyAidGVtcGVyYXR1cmUiOiAzMyB9Cg=="
}
La función decode
de esta instrucción SQL descodifica el valor de la carga del mensaje.
SELECT decode(encoded_temp,"base64").temperature AS temp from 'topic/subtopic'
Al descodificar el valor encoded_temp
, se obtiene el siguiente documento JSON válido, que permite que la instrucción SELECT lea el valor de temperatura.
{ "temperature": 33 }
El resultado de la instrucción SELECT de este ejemplo se muestra aquí.
{ "temp": 33 }
Si el valor descodificado no era un documento JSON válido, el valor descodificado se devolvería en forma de cadena.
Descodificación de la carga de un mensaje de protobuf
Puede utilizar la función de decodificación de SQL para configurar una regla que pueda descodificar la carga de sus mensajes de protobuf. Para obtener más información, consulte Descodificar cargas de mensajes de protobuf.
La firma de la clase tiene el siguiente aspecto:
decode(<ENCODED DATA>, 'proto', '<S3 BUCKET NAME>', '<S3 OBJECT KEY>', '<PROTO NAME>', '<MESSAGE TYPE>')
ENCODED DATA
-
Especifica los datos codificados por protobuf que se van a descodificar. Si todo el mensaje enviado a la regla son datos codificados por protobuf, puede hacer referencia a la carga binaria entrante sin procesar utilizando
*
. De lo contrario, este campo debe ser una cadena JSON codificada en base64 y se puede transferir directamente una referencia a la cadena.1) Para descodificar una carga binaria entrante de protobuf sin procesar:
decode(*, 'proto', ...)
2) Para descodificar un mensaje codificado en protobuf representado por una cadena codificada en base64 'a.b':
decode(a.b, 'proto', ...)
proto
-
Especifica los datos que se van a descodificar en un formato de mensaje protobuf. Si especifica
base64
en lugar deproto
, esta función descodificará las cadenas codificadas en base64 como JSON. S3 BUCKET NAME
-
El nombre del bucket de Amazon S3 donde cargó el archivo
FileDescriptorSet
. S3 OBJECT KEY
-
La clave de objeto que especifica el archivo
FileDescriptorSet
dentro del bucket de Amazon S3. PROTO NAME
-
El nombre del archivo
.proto
(excluida la extensión) a partir del cual se generó el archivoFileDescriptorSet
. MESSAGE TYPE
-
El nombre de la estructura de mensajes protobuf del archivo
FileDescriptorSet
, a la que deben ajustarse los datos que se van a descodificar.
Un ejemplo de expresión SQL que utilice la función de descodificación de SQL puede tener el siguiente aspecto:
SELECT VALUE decode(*, 'proto', 's3-bucket', 'messageformat.desc', 'myproto', 'messagetype') FROM 'some/topic'
-
*
Representa una carga binaria entrante, que se ajusta al tipo de mensaje protobuf llamado
mymessagetype
. -
messageformat.desc
El archivo
FileDescriptorSet
almacenado en un bucket de Amazon S3 llamados3-bucket
. -
myproto
El archivo
.proto
original utilizado para generar el archivoFileDescriptorSet
llamadomyproto.proto
. -
messagetype
El tipo de mensaje llamado
messagetype
(junto con cualquier dependencia importada) tal y como se define enmyproto.proto
.
encode(value, encodingScheme)
Utilice la función encode
para codificar la carga, que puede estar constituida por datos que no son JSON, en su representación de cadena basada en el esquema de codificación. Es compatible con la versión SQL 2016-03-23 y versiones posteriores.
- valor
-
Cualquiera de las expresiones válidas, tal y como se define en AWS IoT Referencia SQL. Puede especificar * para codificar toda la carga, con independencia de si está en formato JSON o no. Si suministra una expresión, el resultado de la evaluación se convierte en una cadena antes de codificarla.
- encodingScheme
-
Una cadena literal que representa el esquema de codificación que desea utilizar. En la actualidad, solo se admite
'base64'
.
endswith(String, String)
Devuelve un valor Boolean
que indica si el primer argumento String
termina con el segundo argumento String
. Si alguno de los argumentos es Null
o Undefined
, el resultado es Undefined
. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: endswith("cat","at")
= true.
Tipo de argumento 1 | Tipo de argumento 2 | Resultado |
---|---|---|
String |
String |
True si el primer argumento termina en el segundo argumento. De lo contrario, devuelve false. |
Otro valor | Otro valor | Ambos argumentos se convierten en cadenas con las reglas de conversión estándar. True si el primer argumento termina en el segundo argumento. De lo contrario, devuelve false. Si alguno de los argumentos es Null o Undefined , el resultado es Undefined . |
exp(Decimal)
Devuelve e elevado al argumento Decimal
. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: exp(1)
= e.
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), argumento potencia e. |
Decimal |
Decimal (con doble precisión), argumento potencia e. |
String |
Decimal (con doble precisión), argumento potencia e. Si el valor String no se puede convertir en un valor Decimal , el resultado es Undefined . |
Otro valor | Undefined . |
floor(Decimal)
Redondea a la baja el valor Decimal
indicado al valor Int
más cercano. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
floor(1.2)
= 1
floor(-1.2)
= -2
Tipo de argumento | Resultado |
---|---|
Int |
Int , el valor del argumento. |
Decimal |
Int , valor Decimal redondeado a la baja al valor Int más próximo. |
String |
Int . La cadena se convierte en un valor Decimal y se redondea a la baja al valor Int más cercano. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . |
Otro valor | Undefined . |
introducción
Extrae un valor de un tipo de recopilación (matriz, cadena, objeto). No se aplica ninguna conversión al primer argumento. La conversión se aplica tal y como se documenta en la tabla del segundo argumento. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
get(["a", "b", "c"], 1)
= "b"
get({"a":"b"}, "a")
= "b"
get("abc", 0)
= “a”
Tipo de argumento 1 | Tipo de argumento 2 | Resultado |
---|---|---|
Matriz | Cualquier tipo (convertido en Int ) |
El elemento en el índice basado en 0 del valor Array proporcionado por el segundo argumento (convertido en Int ). Si la conversión es incorrecta, el resultado obtenido es Undefined . Si el índice está fuera de los límites del valor Array (negativo o >= array.length), el resultado es Undefined . |
Cadena | Cualquier tipo (convertido en Int ) |
El carácter en el índice basado en 0 de la cadena proporcionada por el segundo argumento (convertido en un valor Int ). Si la conversión es incorrecta, el resultado obtenido es Undefined . Si el índice se encuentra fuera de los límites de la cadena (negativo o >= string.length), el resultado es Undefined . |
Objeto | String (no se aplica conversión) |
El valor almacenado en el objeto de primer argumento correspondiente a la clave de la cadena proporcionada como segundo argumento. |
Otro valor | Cualquier valor | Undefined . |
get_dynamodb (Nombre de tabla,,,,, ROLearn partitionKeyName) partitionKeyValue sortKeyName sortKeyValue
Recupera datos de una tabla DymanoDB. get_dynamodb()
permite consultar una tabla DynamoDB mientras se evalúa una regla. Puede filtrar o aumentar las cargas útiles de mensajes utilizando los datos recuperados de DynamoDB. Es compatible con la versión SQL 2016-03-23 y versiones posteriores.
get_dynamodb()
utiliza los parámetros siguientes:
- tableName
-
Nombre de la tabla de DynamoDB donde efectuar la consulta.
- partitionKeyName
-
Nombre de la tabla de particiones. Para obtener más información, consulte Claves de DynamoDB.
- partitionKeyValue
-
Valor de la clave de partición utilizada para identificar un registro. Para obtener más información, consulte Claves de DynamoDB.
- sortKeyName
-
(Opcional) Nombre de la clave de clasificación. Este parámetro solo es necesario si la tabla DynamoDB consultada utiliza una clave compuesta. Para obtener más información, consulte Claves de DynamoDB.
- sortKeyValue
-
(Opcional) Valor de la clave de clasificación. Este parámetro solo es necesario si la tabla DynamoDB consultada utiliza una clave compuesta. Para obtener más información, consulte Claves de DynamoDB.
- roleArn
-
El ARN de un rol de IAM que concede acceso a la tabla DynamoDB. El motor de reglas asume este rol para acceder a la tabla DynamoDB en su nombre. Evite usar un rol excesivamente permisivo. Otorgue al rol solo los permisos requeridos por la regla. A continuación se muestra un ejemplo de política que concede acceso a una tabla DynamoDB.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "arn:aws:dynamodb:
aws-region
:account-id
:table/table-name
" } ] }
Como ejemplo de cómo usar get_dynamodb()
, supongamos que tiene una tabla DynamoDB que contiene el ID de dispositivo e información de ubicación para todos los dispositivos conectados a AWS IoT. La siguiente instrucción SELECT utiliza la función get_dynamodb()
para recuperar la ubicación del ID de dispositivo especificado:
SELECT *, get_dynamodb("InServiceDevices", "deviceId", id,
"arn:aws:iam::12345678910:role/getdynamo").location AS location FROM
'some/topic'
nota
-
Puede llamar a
get_dynamodb()
un máximo de una vez por instrucción SQL. Llamar aget_dynamodb()
varias veces en una sola instrucción SQL hace que la regla termine sin invocar ninguna acción. -
Si
get_dynamodb()
devuelve más de 8 KB de datos, no se puede invocar la acción de la regla.
get_mqtt_property(name)
Hace referencia a cualquiera de los siguientes MQTT5 encabezados:,, y. contentType
payLoadFormatIndicator
responseTopic
correlationData
Esta función toma como argumento cualquiera de las siguientes cadenas literales: content_type
, format_indicator
, response_topic
y correlation_data
. Para obtener más información, consulte la siguiente table de argumentos de la función.
- contentType
-
Cadena: una cadena codificada en UTF-8 que describe el contenido del mensaje de publicación.
- payLoadFormatIndicador
-
Cadena: un valor de cadena Enum que indica si la carga tiene formato UTF-8. Los valores válidos son
UNSPECIFIED_BYTES
yUTF8_DATA
. - responseTopic
-
Cadena: una cadena codificada en UTF-8 que se utiliza como nombre de tema para un mensaje de respuesta. El tema de respuesta se utiliza para describir el tema en el que el receptor debe publicar como parte del flujo de solicitud-respuesta. El tema no debe contener caracteres comodín.
- correlationData
-
Cadena: los datos binarios codificados en base64 que utiliza el remitente del mensaje de solicitud para identificar a qué solicitud corresponde el mensaje de respuesta cuando se recibe.
En la siguiente tabla se muestran los argumentos de la función aceptables y los tipos de retorno asociados a la función get_mqtt_property
:
SQL | Tipo de datos devuelto (si están presentes) | Tipo de datos devuelto (si no están presentes) |
---|---|---|
get_mqtt_property("format_indicator") |
Cadena (UNSPECIFIED_BYTES o _DATA) UTF8 | Cadena (UNSPECIFIED_BYTES) |
get_mqtt_property("content_type") |
Cadena | Sin definir |
get_mqtt_property("response_topic") |
Cadena | Sin definir |
get_mqtt_property("correlation_data") |
Cadena codificada en base64 | Sin definir |
get_mqtt_property("some_invalid_name") |
Sin definir | Sin definir |
El siguiente ejemplo de Rules SQL hace referencia a cualquiera de los siguientes MQTT5 encabezados:,, y. contentType
payLoadFormatIndicator
responseTopic
correlationData
SELECT *, get_mqtt_property('content_type') as contentType,
get_mqtt_property('format_indicator') as payloadFormatIndicator,
get_mqtt_property('response_topic') as responseTopic,
get_mqtt_property('correlation_data') as correlationData
FROM 'some/topic'
get_secret(secretId, secretType, key, roleArn)
Recupera el valor del campo SecretString
o SecretBinary
cifrado de la versión actual de un secreto en AWS Secrets Manager. Para obtener más información sobre la creación y el mantenimiento de secretos, consulte CreateSecretUpdateSecret, y PutSecretValue.
get_secret()
utiliza los parámetros siguientes:
- secretId
-
Cadena: el nombre de recurso de Amazon (ARN) o el nombre fácil de recordar del secreto que se va a recuperar.
- secretType
-
Cadena: el tipo de secreto. Valores válidos:
SecretString
|SecretBinary
.- SecretString
-
-
Para ver los secretos que se crean como objetos JSON mediante la APIs AWS CLI, la o la AWS Secrets Manager consola:
Si especifica un valor para el parámetro
key
, esta función devuelve el valor de la clave especificada.Si no especifica un valor para el parámetro
key
, esta función devuelve el objeto JSON completo.
-
Para los secretos que se crean como objetos que no son de JSON mediante APIs o: AWS CLI
Si especifica un valor para el parámetro
key
, esta función produce una excepción.Si no especifica un valor para el parámetro
key
, esta función devuelve el contenido del secreto.
-
- SecretBinary
-
Si especifica un valor para el parámetro
key
, esta función produce una excepción.Si no especificas un valor para el parámetro
key
, esta función devuelve el valor secreto como una cadena UTF-8 codificada en base64.
- clave
(Opcional) Cadena: el nombre de la clave dentro de un objeto JSON almacenado en el campo
SecretString
de un secreto. Use este valor cuando desee recuperar solo el valor de una clave almacenada en un secreto en lugar de recuperar todo el objeto JSON.Si especifica un valor para este parámetro y el secreto no contiene un objeto JSON dentro de su campo
SecretString
, esta función produce una excepción.- roleArn
Cadena: un ARN de rol con permisos
secretsmanager:GetSecretValue
ysecretsmanager:DescribeSecret
.
nota
Esta función siempre devuelve la versión actual del secreto (la versión con la etiqueta AWSCURRENT
). El motor de AWS IoT reglas guarda en caché cada secreto durante un máximo de 15 minutos. Como resultado, el motor de reglas puede tardar hasta 15 minutos en actualizar un secreto. Esto significa que si recuperas un secreto hasta 15 minutos después de una actualización AWS Secrets Manager, es posible que esta función devuelva la versión anterior.
Esta función no está sujeta a taxímetro, pero se aplican AWS Secrets Manager cargos. Debido al mecanismo de almacenamiento en caché de secretos, el motor de reglas llama en ocasiones a AWS Secrets Manager. Como el motor de reglas es un servicio totalmente distribuido, es posible que vea varias llamadas a la API de Secrets Manager desde el motor de reglas durante el período de almacenamiento en caché de 15 minutos.
Ejemplos:
Puede usar la función get_secret
en un encabezado de autenticación en una acción de regla HTTPS, como en el siguiente ejemplo de autenticación con clave de API.
"API_KEY": "${get_secret('
API_KEY
', 'SecretString
', 'API_KEY_VALUE
', 'arn:aws:iam::12345678910:role/getsecret')}"
Para obtener más información sobre la acción de regla HTTPS, consulte HTTP.
get_thing_shadow(thingName, shadowName, roleARN)
Devuelve la sombra especificada de la cosa especificado. Es compatible con la versión SQL 2016-03-23 y versiones posteriores.
- thingName
-
String: el nombre del elemento cuya sombra desea recuperar.
- shadowName
-
(Opcional) Cadena: el nombre de la sombra. Este parámetro solo es necesario cuando se hace referencia a sombras con nombre.
- roleArn
-
String: un ARN de rol con permiso
iot:GetThingShadow
.
Ejemplos:
Cuando se utilice con una sombra con nombre, proporcione el parámetro shadowName
.
SELECT * from 'topic/subtopic'
WHERE
get_thing_shadow("MyThing","MyThingShadow","arn:aws:iam::123456789012:role/AllowsThingShadowAccess")
.state.reported.alarm = 'ON'
Cuando se utiliza con una sombra sin nombre, omita el parámetro shadowName
.
SELECT * from 'topic/subtopic'
WHERE
get_thing_shadow("MyThing","arn:aws:iam::123456789012:role/AllowsThingShadowAccess")
.state.reported.alarm = 'ON'
get_user_properties () userPropertyKey
Hace referencia a las propiedades del usuario, que es un tipo de encabezados de propiedades que se admiten. MQTT5
- userProperty
-
Cadena: una propiedad de usuario es un par clave-valor. Esta función toma la clave como argumento y devuelve una matriz de todos los valores que coinciden con la clave asociada.
Argumentos de la función
Para las siguientes propiedades de usuario en los encabezados de mensaje:
Clave | Valor |
---|---|
alguna clave | algún valor |
una clave diferente | un valor diferente |
alguna clave | valor con clave duplicada |
La siguiente table muestra el comportamiento de SQL esperado:
SQL | Tipo de datos devueltos | Valor de datos devueltos |
---|---|---|
get_user_properties('some key') | Matriz de cadena | ['some value', 'value with duplicate key'] |
get_user_properties('other key') | Matriz de cadena | ['a different value'] |
get_user_properties( ) | Matriz de objetos de par clave-valor | [{'"some key": "some value"'}, {"other key": "a different
value"}, {"some key": "value with duplicate
key"}] |
get_user_properties('non-existent key') | Sin definir |
El siguiente ejemplo de reglas SQL hace referencia a las propiedades del usuario (un tipo de encabezado de MQTT5 propiedad) en la carga útil:
SELECT *, get_user_properties('user defined property key') as userProperty
FROM 'some/topic'
Funciones de hash
AWS IoT proporciona las siguientes funciones de hash:
-
md2
-
md5
-
sha1
-
sha224
-
sha256
-
sha384
-
sha512
Todas las funciones de hash esperan un argumento de cadena. El resultado es el valor con hash de dicha cadena. Las conversiones de cadena estándar se aplican a los argumentos que no son cadenas. Todas las funciones de hash son compatibles con la versión 2015-10-08 de SQL y con versiones posteriores.
Ejemplos:
md2("hello")
= "a9046c73e00331af68917d3804f70655"
md5("hello")
= "5d41402abc4b2a76b9719d911017c592"
indexof(String, String)
Devuelve el primer índice (basado en 0) del segundo argumento como subcadena del primer argumento. Se espera que ambos argumentos sean cadenas. Los argumentos que no sean cadenas están sujetos a las reglas de conversión estándar de cadenas. Esta función no se aplica a matrices, únicamente a cadenas. Es compatible con la versión SQL 2016-03-23 y versiones posteriores.
Ejemplos:
indexof("abcd", "bc")
= 1
isNull()
Devuelve verdadero si el argumento es el valor Null
. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
isNull(5)
= false.
isNull(Null)
= true.
Tipo de argumento | Resultado |
---|---|
Int |
false |
Decimal |
false |
Boolean |
false |
String |
false |
Array |
false |
Object |
false |
Null |
true |
Undefined |
false |
isUndefined()
Devuelve verdadero si el argumento tiene el valor Undefined
. Es compatible con la versión SQL 2016-03-23 y versiones posteriores.
Ejemplos:
isUndefined(5)
= false.
isUndefined(floor([1,2,3])))
= true.
Tipo de argumento | Resultado |
---|---|
Int |
false |
Decimal |
false |
Boolean |
false |
String |
false |
Array |
false |
Object |
false |
Null |
false |
Undefined |
true |
length(String)
Devuelve el número de caracteres de la cadena suministrada. Se aplican las reglas de conversión estándar a los argumentos que no sean String
. Es compatible con la versión SQL 2016-03-23 y versiones posteriores.
Ejemplos:
length("hi")
= 2
length(false)
= 5
ln(Decimal)
Devuelve el logaritmo natural del argumento. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: ln(e)
= 1.
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), el log natural del argumento. |
Decimal |
Decimal (con doble precisión), el log natural del argumento. |
Boolean |
Undefined . |
String |
Decimal (con doble precisión), el log natural del argumento. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
log(Decimal)
Devuelve el logaritmo decimal del argumento. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: log(100)
= 2.0.
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), el log de base 10 del argumento. |
Decimal |
Decimal (con doble precisión), el log de base 10 del argumento. |
Boolean |
Undefined . |
String |
Decimal (con doble precisión), el log de base 10 del argumento. Si el valor String no se puede convertir en un valor Decimal , el resultado es Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
lower(String)
Muestra la versión en minúsculas del valor String
indicado. Los argumentos que no son cadenas se convierten en cadenas con las reglas de conversión estándar. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
lower("HELLO")
= "hello".
lower(["HELLO"])
= "[\"hello\"]".
lpad(String, Int)
Devuelve el argumento String
, rellenado en el lado izquierdo con el número de espacios especificado por el segundo argumento. El argumento Int
debe estar comprendido entre 0 y 1000. Si el valor proporcionado se encuentra fuera de este rango válido, el argumento se establece en el valor válido más cercano (0 o 1000). Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
lpad("hello", 2)
= " hello
".
lpad(1, 3)
= " 1
"
Tipo de argumento 1 | Tipo de argumento 2 | Resultado |
---|---|---|
String |
Int |
String , el valor String proporcionado rellenado en el lado izquierdo con un número de espacios igual al valor Int proporcionado. |
String |
Decimal |
El argumento Decimal se redondea al valor Int inferior más cercano y el valor String se rellena en el lado izquierdo con el número de espacios especificado. |
String |
String |
El segundo argumento se convierte en un valor Decimal , que se redondea al valor Int inferior más cercano, y el valor String se rellena con el número de espacios especificado en la izquierda. Si el segundo argumento no se puede convertir en un valor Int , el resultado es Undefined . |
Otro valor | Int /Decimal /String |
El primer valor se convierte en un valor de tipo String mediante las conversiones estándar y, a continuación, se aplica la función LPAD a dicho valor String . Si no se puede convertir, el resultado es Undefined . |
Cualquier valor | Otro valor | Undefined . |
ltrim(String)
Elimina todos los espacios en blanco del principio (tabuladores y espacios) del valor String
proporcionado. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
Ltrim(" h i ")
= "hi ".
Tipo de argumento | Resultado |
---|---|
Int |
La representación String de Int con todos los espacios en blanco del principio suprimidos. |
Decimal |
La representación String de Decimal con todos los espacios en blanco del principio suprimidos. |
Boolean |
La representación String del valor booleano (“true” o “false”) con todos los espacios en blanco del principio suprimidos. |
String |
El argumento con todos los espacios en blanco del principio suprimidos. |
Matriz | La representación String de Array (mediante las reglas de conversión estándar) con todos los espacios en blanco del principio suprimidos. |
Objeto | La representación String de la cosa (mediante las reglas de conversión estándar) con todos los espacios en blanco del principio suprimidos. |
Nulo | Undefined . |
Sin definir | Undefined . |
machinelearning_predict(modelId, roleArn, record)
Utilice la machinelearning_predict
función para realizar predicciones con los datos de un mensaje MQTT basado en un modelo de Amazon SageMaker AI. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores. Los argumentos de la función machinelearning_predict
son:
- modelId
-
El ID del modelo en el que se ejecutará la predicción. El punto de conexión en tiempo real del modelo debe estar activado.
- roleArn
-
El rol de IAM que tiene una política con permisos
machinelearning:Predict
ymachinelearning:GetMLModel
, y permite tener acceso al modelo en el que se ejecuta la predicción. - record
-
Los datos que se van a transferir a la API SageMaker AI Predict. Debe representarse como un objeto JSON de capa única. Si el registro es un objeto JSON de varias capas, el registro se aplana serializando sus valores. Por ejemplo, el JSON siguiente:
{ "key1": {"innerKey1": "value1"}, "key2": 0}
se convertiría en:
{ "key1": "{\"innerKey1\": \"value1\"}", "key2": 0}
La función devuelve un objeto JSON con los campos siguientes:
- predictedLabel
-
La clasificación de la entrada en función del modelo.
- Detalles
-
Contiene los atributos siguientes:
- PredictiveModelType
-
El tipo de modelo. Los valores válidos son REGRESSION, BINARY, MULTICLASS.
- Algoritmo
-
El algoritmo utilizado por la SageMaker IA para hacer predicciones. El valor debe ser SGD.
- predictedScores
-
Contiene la puntuación de clasificación bruta correspondiente a cada etiqueta.
- predictedValue
-
El valor pronosticado por la SageMaker IA.
mod(Decimal, Decimal)
Devuelve el resto de la división del primer argumento por el segundo argumento. Es igual que remainder(Decimal, Decimal). También puede utilizar "%" como un operador infijo para la misma funcionalidad modulo. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: mod(8, 3)
= 2.
Operando izquierdo | Operando derecho | Output |
---|---|---|
Int |
Int |
Int , el primer y el segundo argumento en los que quiere ejecutar la función modulo. |
Int /Decimal |
Int /Decimal |
Decimal , el primer argumento y el segundo operando para los que quiere ejecutar la función modulo. |
String /Int /Decimal |
String /Int /Decimal |
Si todas las cadenas se convierten en decimales, la función modulo se ejecuta en el primer y el segundo argumento. De lo contrario, Undefined . |
Otro valor | Otro valor | Undefined . |
nanval (,) AnyValue AnyValue
Devuelve el primer argumento si es un Decimal
válido. De lo contrario, se devuelve el segundo argumento. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: Nanvl(8, 3)
= 8.
Tipo de argumento 1 | Tipo de argumento 2 | Output |
---|---|---|
Sin definir | Cualquier valor | El segundo argumento. |
Nulo | Cualquier valor | El segundo argumento. |
Decimal (NaN) |
Cualquier valor | El segundo argumento. |
Decimal (no NaN) |
Cualquier valor | El primer argumento. |
Otro valor | Cualquier valor | El primer argumento. |
newuuid()
Devuelve un UUID aleatorio de 16 bytes. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: newuuid()
= 123a4567-b89c-12d3-e456-789012345000
numbytes(String)
Devuelve el número de bytes de la codificación UTF-8 de la cadena proporcionada. Se aplican las reglas de conversión estándar a los argumentos que no sean String
. Es compatible con la versión SQL 2016-03-23 y versiones posteriores.
Ejemplos:
numbytes("hi")
= 2
numbytes("€")
= 3
parse_time(String, Long[, String])
Utilice la función parse_time
para aplicar un formato legible a una marca de fecha y hora. Es compatible con la versión SQL 2016-03-23 y versiones posteriores. Para convertir una cadena de marca temporal en milisegundos, consulte time_to_epoch(String, String).
La función parse_time
espera los argumentos siguientes:
- pattern
-
(String) Un patrón de fecha y hora que sigue los formatos Joda-Time.
- marca de tiempo
-
(Long) La hora que se va a formatear en milisegundos a partir del formato de hora Unix. Consulte la función timestamp().
- timezone
-
(String) La zona horaria de la fecha/hora formateada. El valor predeterminado es "UTC". La función admite zonas horarias Joda-Time
Este argumento es opcional.
Ejemplos:
Cuando este mensaje se publica en el tema "A/B", la carga {"ts":
"1970.01.01 AD at 21:46:40 CST"}
se envía al bucket de 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"
}
}
Cuando este mensaje se publica en el tema "A/B", una carga similar a {"ts": "2017.06.09 AD at 17:19:46 UTC"}
(pero con la fecha y hora actuales) se envía al bucket de 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"
}
}
parse_time()
se puede usar también como una plantilla de sustitución. Por ejemplo, cuando este mensaje se publica en el tema "A/B", la carga se envía al bucket de S3 con la clave = "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)
Devuelve el primer argumento elevado al segundo argumento. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: power(2, 5)
= 32.0.
Tipo de argumento 1 | Tipo de argumento 2 | Output |
---|---|---|
Int /Decimal |
Int /Decimal |
Un Decimal (con doble precisión), el primer argumento elevado a la potencia del segundo argumento. |
Int /Decimal /String |
Int /Decimal /String |
Un Decimal (con doble precisión), el primer argumento elevado a la potencia del segundo argumento. Todas las cadenas se convierten en decimales. Si cualquier String no se convierte en un valor Decimal , el resultado es Undefined . |
Otro valor | Otro valor | Undefined . |
principal()
Devuelve la entidad principal que el dispositivo utiliza para la autenticación, en función de cómo se publicó el mensaje de activación. En la siguiente tabla se describe la entidad principal devuelta para cada método y protocolo de publicación.
Cómo se publica el mensaje | Protocolo | Tipo de credenciales | Entidad principal |
---|---|---|---|
Cliente MQTT | MQTT | Certificado de dispositivo X.509 | Huella digital del certificado X.509 |
AWS IoT cliente MQTT de consola | MQTT | Usuario o rol de IAM | iam-role-id :session-name |
AWS CLI | HTTP | Usuario o rol de IAM | userid |
AWS IoT SDK de dispositivo | MQTT | Certificado de dispositivo X.509 | Huella digital del certificado X.509 |
AWS IoT SDK de dispositivo | MQTT ha terminado WebSocket | Usuario o rol de IAM | userid |
En los siguientes ejemplos se muestran los distintos tipos de valores que principal()
puede devolver:
-
Huella digital del certificado X.509:
ba67293af50bf2506f5f93469686da660c7c844e7b3950bfb16813e0d31e9373
-
ID de rol de IAM y nombre de sesión:
ABCD1EFG3HIJK2LMNOP5:my-session-name
-
Devuelve un ID de usuario:
ABCD1EFG3HIJK2LMNOP5
rand()
Devuelve un valor pseudoaleatorio, distribuido de forma uniforme entre 0,0 y 1,0. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
rand()
= 0.8231909191640703
regexp_matches(String, String)
Devuelve verdadero si la cadena (primer argumento) contiene una coincidencia para la expresión regular (segundo argumento). Si usa |
en la expresión regular, úselo con ()
.
Ejemplos:
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 de argumento | Resultado |
---|---|
Int |
La representación String del valor Int . |
Decimal |
La representación String del valor Decimal . |
Boolean |
La representación String del valor booleano (“true” o “false”). |
String |
La String . |
Matriz | La representación String del valor Array (mediante reglas de conversión estándar). |
Objeto | La representación String de la cosa (mediante reglas de conversión estándar). |
Nulo | Undefined . |
Sin definir | Undefined . |
Segundo argumento:
Tiene que ser una expresión regex válida. Los tipos que no son cadenas se convierten en valores de tipo String
mediante reglas de conversión estándar. En función del tipo, es posible que la cadena obtenida no sea una expresión regular válida. Si el argumento (convertido) no es un regex válido, el resultado es Undefined
.
regexp_replace(String, String, String)
Sustituye todos los segundos argumentos (expresiones regulares) que hay en el primer argumento por el tercer argumento. Hace referencia a los grupos de captura con "$". Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
regexp_replace("abcd", "bc", "x")
= "axd".
regexp_replace("abcd", "b(.*)d", "$1")
= "ac".
Tipo de argumento | Resultado |
---|---|
Int |
La representación String del valor Int . |
Decimal |
La representación String del valor Decimal . |
Boolean |
La representación String del valor booleano (“true” o “false”). |
String |
El valor de origen. |
Matriz | La representación String del valor Array (mediante reglas de conversión estándar). |
Objeto | La representación String de la cosa (mediante reglas de conversión estándar). |
Nulo | Undefined . |
Sin definir | Undefined . |
Segundo argumento:
Tiene que ser una expresión regex válida. Los tipos que no son cadenas se convierten en valores de tipo String
mediante reglas de conversión estándar. En función del tipo, es posible que la cadena obtenida no sea una expresión regular válida. Si el argumento (convertido) no es una expresión regex válida, el resultado es Undefined
.
Tercer argumento:
Debe ser una cadena de sustitución de regex válida. (Puede hacer referencia a grupos de capturas). Los tipos que no son cadenas se convierten en valores de tipo String
mediante reglas de conversión estándar. Si el argumento (convertido) no es una cadena de sustitución de regex válida, el resultado es Undefined
.
regexp_substr(String, String)
Busca la primera coincidencia del segundo parámetro (regex) en el primer parámetro. Hace referencia a los grupos de captura con "$". Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
regexp_substr("hihihello", "hi")
= "hi"
regexp_substr("hihihello", "(hi)*")
= "hihi"
Tipo de argumento | Resultado |
---|---|
Int |
La representación String del valor Int . |
Decimal |
La representación String del valor Decimal . |
Boolean |
La representación String del valor booleano (“true” o “false”). |
String |
El argumento String . |
Matriz | La representación String del valor Array (mediante reglas de conversión estándar). |
Objeto | La representación String de la cosa (mediante reglas de conversión estándar). |
Nulo | Undefined . |
Sin definir | Undefined . |
Segundo argumento:
Tiene que ser una expresión regex válida. Los tipos que no son cadenas se convierten en valores de tipo String
mediante reglas de conversión estándar. En función del tipo, es posible que la cadena obtenida no sea una expresión regular válida. Si el argumento (convertido) no es una expresión regex válida, el resultado es Undefined
.
remainder(Decimal, Decimal)
Devuelve el resto de la división del primer argumento por el segundo argumento. Es igual que mod(Decimal, Decimal). También puede utilizar "%" como un operador infijo para la misma funcionalidad modulo. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: remainder(8, 3)
= 2.
Operando izquierdo | Operando derecho | Output |
---|---|---|
Int |
Int |
Int , el primer y el segundo argumento en los que quiere ejecutar la función modulo. |
Int /Decimal |
Int /Decimal |
Decimal , el primer argumento y el segundo operando para los que quiere ejecutar la función modulo. |
String /Int /Decimal |
String /Int /Decimal |
Si todas las cadenas se convierten en decimales, la función modulo se ejecuta en el primer y el segundo argumento. De lo contrario, Undefined . |
Otro valor | Otro valor | Undefined . |
replace(Cadena, Cadena, Cadena)
Reemplaza todas las instancias del segundo argumento que hay en el primer argumento por el tercer argumento. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
replace("abcd", "bc", "x")
= "axd"
.
replace("abcdabcd", "b", "x")
= "axcdaxcd"
.
Tipo de argumento | Resultado |
---|---|
Int |
La representación String del valor Int . |
Decimal |
La representación String del valor Decimal . |
Boolean |
La representación String del valor booleano (“true” o “false”). |
String |
El valor de origen. |
Matriz | La representación String del valor Array (mediante reglas de conversión estándar). |
Objeto | La representación String de la cosa (mediante reglas de conversión estándar). |
Nulo | Undefined . |
Sin definir | Undefined . |
rpad(String, Int)
Devuelve el argumento de cadena, rellenado en el lado derecho con el número de espacios especificado en el segundo argumento. El argumento Int
debe estar comprendido entre 0 y 1000. Si el valor proporcionado se encuentra fuera de este rango válido, el argumento se establece en el valor válido más cercano (0 o 1000). Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
rpad("hello", 2)
= "hello
".
rpad(1, 3)
= "1
".
Tipo de argumento 1 | Tipo de argumento 2 | Resultado |
---|---|---|
String |
Int |
El valor String se rellena en el lado derecho con un número de espacios igual al valor Int proporcionado. |
String |
Decimal |
El argumento Decimal se redondea al valor Int inferior más cercano y la cadena se rellena en el lado derecho con una serie de espacios igual al valor Int proporcionado. |
String |
String |
El segundo argumento se convierte en un valor Decimal que se redondea al valor Int inferior más cercano. El valor String se rellena en el lado derecho con un número de espacios igual al valor Int . |
Otro valor | Int /Decimal /String |
El primer valor se convierte en un valor de tipo String mediante las conversiones estándar y, a continuación, se aplica la función rpad a dicho valor String . Si no se puede convertir, el resultado es Undefined . |
Cualquier valor | Otro valor | Undefined . |
round(Decimal)
Redondea el valor Decimal
indicado al valor Int
más cercano. Si el valor Decimal
está a la misma distancia de dos valores Int
, (p. ej., 0.5), el valor Decimal
se redondea al valor superior. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: Round(1.2)
= 1.
Round(1.5)
= 2.
Round(1.7)
= 2.
Round(-1.1)
= -1.
Round(-1.5)
= -2.
Tipo de argumento | Resultado |
---|---|
Int |
El argumento. |
Decimal |
El valor Decimal se redondea al valor Int inferior más cercano. |
String |
El valor Decimal se redondea al valor Int inferior más cercano. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . |
Otro valor | Undefined . |
rtrim(String)
Elimina todos los espacios en blanco del final (tabuladores y espacios) del valor String
proporcionado. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
rtrim(" h i ")
= " h i"
Tipo de argumento | Resultado |
---|---|
Int |
La representación String del valor Int . |
Decimal |
La representación String del valor Decimal . |
Boolean |
La representación String del valor booleano (“true” o “false”). |
Matriz | La representación String del valor Array (mediante reglas de conversión estándar). |
Objeto | La representación String de la cosa (mediante reglas de conversión estándar). |
Nulo | Undefined . |
Sin definir | Undefined |
sign(Decimal)
Devuelve el signo del número especificado. Cuando el signo del argumento es positivo, se devuelve 1. Cuando el signo del argumento es negativo, se devuelve -1. Si el argumento es 0, se devuelve 0. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
sign(-7)
= -1.
sign(0)
= 0.
sign(13)
= 1.
Tipo de argumento | Resultado |
---|---|
Int |
Int , el signo del valor Int . |
Decimal |
Int , el signo del valor Decimal . |
String |
Int , el signo del valor Decimal . La cadena se convierte en un valor Decimal y se devuelve el signo del valor Decimal . Si el valor String no se puede convertir en un valor Decimal , el resultado es Undefined . Es compatible con la versión 2015-10-08 de SQL y versiones posteriores. |
Otro valor | Undefined . |
sin(Decimal)
Devuelve el seno de un número en radianes. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: sin(0)
= 0.0
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), el seno del argumento. |
Decimal |
Decimal (con doble precisión), el seno del argumento. |
Boolean |
Undefined . |
String |
Decimal (con doble precisión), el seno del argumento. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Undefined |
Undefined . |
sinh(Decimal)
Devuelve el seno hiperbólico de un número. Los valores Decimal
se redondean con doble precisión antes de la aplicación de la función. El resultado es un valor Decimal
de doble precisión. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: sinh(2.3)
= 4.936961805545957
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión); el seno hiperbólico del argumento. |
Decimal |
Decimal (con doble precisión); el seno hiperbólico del argumento. |
Boolean |
Undefined . |
String |
Decimal (con doble precisión); el seno hiperbólico del argumento. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
sourceip()
Recupera la dirección IP de un dispositivo o del enrutador que se conecta a él. Si el dispositivo está conectado directamente a internet, la función devolverá la dirección IP de origen del dispositivo. Si el dispositivo está conectado a un enrutador que se conecta a internet, la función devolverá la dirección IP de origen del enrutador. Es compatible con la versión SQL 2016-03-23. sourceip()
no toma ningún parámetro.
importante
La dirección IP de origen público de un dispositivo suele ser la dirección IP de la última puerta de enlace de traducción de direcciones de red (NAT), como el enrutador o el módem de cable del proveedor de servicios de internet.
Ejemplos:
sourceip()="192.158.1.38"
sourceip()="1.102.103.104"
sourceip()="2001:db8:ff00::12ab:34cd"
Ejemplo de SQL:
SELECT *, sourceip() as deviceIp FROM 'some/topic'
Ejemplos de cómo utilizar la función sourceip () en las acciones de las AWS IoT Core reglas:
Ejemplo 1
El siguiente ejemplo muestra cómo llamar a la función () como plantilla de sustitución en una acción de 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"
}
}
]
}
}
Ejemplo 2
El siguiente ejemplo muestra cómo añadir la función sourceip() como propiedad de usuario de MQTT mediante plantillas de sustitución.
{ "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()}" } ] } } } ] } }
Puede recuperar la dirección IP de origen de los mensajes que se transmiten a AWS IoT Core las reglas desde las rutas Message Broker y Basic Ingest. También puede recuperar la IP de origen de ambos IPv4 IPv6 mensajes. La IP de origen se mostrará de la siguiente manera:
IPv6: yyyy:yyyy:yyyy::yyyy:yyyy
IPv4: xxx.xxx.xxx.xxx
nota
La IP de origen original no se transferirá a través de la acción Republicar.
substring(String, Int[, Int])
Espera un valor String
seguido de uno o dos valores Int
. Para un argumento String
y un único argumento Int
, esta función devuelve la subcadena del argumento String
proporcionado que proviene del índice Int
(de base 0 incluido) suministrado al final del argumento String
. Para un argumento String
y dos argumentos Int
, esta función devuelve la subcadena del argumento String
proporcionado que proviene del primer argumento de índice Int
(de base 0 incluido) en el segundo argumento de índice Int
(de base 0 no incluido). Los índices inferiores a cero se establecen en cero. Los índices superiores a la longitud de String
se establecen en la longitud de String
. Para la versión de tres argumentos, si el primer índice es superior (o igual) al segundo índice, el resultado es el valor String
vacío.
Si los argumentos proporcionados no son (String
,Int
) o (String
,Int
,Int
), las conversiones estándar se aplican a los argumentos para intentar convertirlos en los tipos correctos. Si no es posible convertirlos, el resultado de la función será Undefined
. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
substring("012345", 0)
= "012345".
substring("012345", 2)
= "2345".
substring("012345", 2.745)
= "2345".
substring(123, 2)
= "3".
substring("012345", -1)
= "012345".
substring(true, 1.2)
= "true".
substring(false, -2.411E247)
= "false".
substring("012345", 1, 3)
= "12".
substring("012345", -50, 50)
= "012345".
substring("012345", 3, 1)
= "".
sql_version()
Devuelve la versión de SQL especificada en esta regla. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
sql_version()
= "2016-03-23"
sqrt(Decimal)
Devuelve la raíz cuadrada de un número. Los argumentos Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: sqrt(9)
= 3,0.
Tipo de argumento | Resultado |
---|---|
Int |
La raíz cuadrada del argumento. |
Decimal |
La raíz cuadrada del argumento. |
Boolean |
Undefined . |
String |
La raíz cuadrada del argumento. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
startswith(String, String)
Devuelve Boolean
, si el primer argumento de cadena comienza con el segundo argumento de cadena. Si alguno de los argumentos es Null
o Undefined
, el resultado es Undefined
. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
startswith("ranger","ran")
= true
Tipo de argumento 1 | Tipo de argumento 2 | Resultado |
---|---|---|
String |
String |
Si la primera cadena comienza con la segunda cadena. |
Otro valor | Otro valor | Ambos argumentos se convierten en cadenas con las reglas de conversión estándar. Devuelve verdadero si la primera cadena comienza con la segunda cadena. Si alguno de los argumentos es Null o Undefined , el resultado es Undefined . |
tan(Decimal)
Devuelve la tangente de un número en radianes. Los valores Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: tan(3)
= -0.1425465430742778
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), la tangente del argumento. |
Decimal |
Decimal (con doble precisión), la tangente del argumento. |
Boolean |
Undefined . |
String |
Decimal (con doble precisión), la tangente del argumento. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
tanh(Decimal)
Devuelve la tangente hiperbólica de un número en radianes. Los valores Decimal
se redondean con doble precisión antes de la aplicación de la función. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: tanh(2.3)
= 0.9800963962661914
Tipo de argumento | Resultado |
---|---|
Int |
Decimal (con doble precisión), la tangente hiperbólica del argumento. |
Decimal |
Decimal (con doble precisión), la tangente hiperbólica del argumento. |
Boolean |
Undefined . |
String |
Decimal (con doble precisión), la tangente hiperbólica del argumento. Si la cadena no se puede convertir en un valor Decimal , el resultado es Undefined . |
Matriz | Undefined . |
Objeto | Undefined . |
Nulo | Undefined . |
Sin definir | Undefined . |
time_to_epoch(String, String)
Utilice la función time_to_epoch
para convertir una cadena de marca temporal en un número de milisegundos en el formato de tiempo Unix. Es compatible con la versión SQL 2016-03-23 y versiones posteriores. Para convertir milisegundos en una cadena de marca temporal formateada, consulte parse_time(String, Long[, String]).
La función time_to_epoch
espera los argumentos siguientes:
- marca de tiempo
-
(String) La cadena de marca temporal que se va a convertir a milisegundos desde tiempo Unix. Si la cadena de marca temporal no especifica una zona horaria, la función utiliza la zona horaria UTC.
- pattern
-
(Cadena) Un patrón de fecha y hora que sigue los formatos de JDK11 hora.
Ejemplos:
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()
Devuelve la marca de tiempo actual en segundos a partir de las 00:00:00 (hora universal coordinada) del jueves 1 de enero de 1970, según el motor de reglas. AWS IoT Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo: timestamp()
= 1481825251155
topic(Decimal)
Devuelve el tema al que se ha enviado el mensaje que activó la regla. Si no se especifica ningún parámetro, se devuelve todo el tema. El parámetro Decimal
se utiliza para especificar un segmento de tema concreto. 1 designa el primer segmento. Para el tema foo/bar/baz
, topic(1) devuelve foo
, topic(2) devuelve bar
y así sucesivamente. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
topic()
= "things/myThings/thingOne"
topic(1)
= "things"
Cuando se usa Basic Ingest, el prefijo inicial del tema ($aws/rules/
) no está disponible para la función topic(). Por ejemplo, con el tema:rule-name
$aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights
topic()
= "Buildings/Building5/Floor2/Room201/Lights"
topic(3)
= "Floor2"
traceid()
Devuelve el ID de seguimiento (UUID) del mensaje MQTT o Undefined
si el mensaje no se ha enviado por MQTT. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
traceid()
= "12345678-1234-1234-1234-123456789012"
transform(String, Object, Array)
Devuelve una matriz de objetos que contiene el resultado de la transformación especificada del parámetro Object
en el parámetro Array
.
Es compatible con la versión SQL 2016-03-23 y versiones posteriores.
- Cadena
El modo de transformación que se debe utilizar. Consulte la siguiente tabla para ver los modos de transformación compatibles y cómo crean el
Result
a partir de los parámetrosObject
yArray
.- Objeto
Un objeto que contiene los atributos que se van a aplicar a cada elemento de la
Array
.- Matriz
-
Una matriz de objetos a los que se aplican los atributos de
Object
.Cada objeto de esta matriz corresponde a un objeto de la respuesta de la función. Cada objeto de la respuesta de la función contiene los atributos presentes en el objeto original y los atributos proporcionados por
Object
con arreglo al modo de transformación especificado enString
.
Parámetro |
Parámetro |
Parámetro |
Resultado |
---|---|---|---|
|
Objeto |
Matriz de objetos |
Una matriz de objetos en la que cada objeto contiene los atributos de un elemento del parámetro |
Cualquier otro valor |
Cualquier valor |
Cualquier valor |
Sin definir |
nota
La matriz devuelta por esta función está limitada a 128 KiB.
Ejemplo 1 de la función de transformación
En este ejemplo se muestra cómo la función transform() produce una matriz única de objetos a partir de un objeto de datos y una matriz.
En este ejemplo, se publica el siguiente mensaje en el tema A/B
de MQTT.
{
"attributes": {
"data1": 1,
"data2": 2
},
"values": [
{
"a": 3
},
{
"b": 4
},
{
"c": 5
}
]
}
Esta instrucción SQL para una acción de regla temática utiliza la función transform() con un valor de String
de enrichArray
. En este ejemplo, Object
es la propiedad attributes
de la carga del mensaje y Array
es la matriz values
, que contiene tres objetos.
select value transform("enrichArray", attributes, values) from 'A/B'
Al recibir la carga del mensaje, la instrucción SQL se evalúa en la siguiente respuesta.
[
{
"a": 3,
"data1": 1,
"data2": 2
},
{
"b": 4,
"data1": 1,
"data2": 2
},
{
"c": 5,
"data1": 1,
"data2": 2
}
]
Ejemplo 2 de la función de transformación
En este ejemplo se muestra cómo la función transform() puede usar valores literales para incluir y cambiar el nombre de los atributos individuales de la carga del mensaje.
En este ejemplo, se publica el siguiente mensaje en el tema A/B
de MQTT. Es el mismo mensaje que se usó en Ejemplo 1 de la función de transformación.
{
"attributes": {
"data1": 1,
"data2": 2
},
"values": [
{
"a": 3
},
{
"b": 4
},
{
"c": 5
}
]
}
Esta instrucción SQL para una acción de regla temática utiliza la función transform() con un valor de String
de enrichArray
. El Object
de la función transform() tiene un único atributo llamado key
con el valor de attributes.data1
en la carga del mensaje y Array
es la matriz values
, que contiene los mismos tres objetos utilizados en el ejemplo anterior.
select value transform("enrichArray", {"key": attributes.data1}, values) from 'A/B'
Al recibir la carga del mensaje, esta instrucción SQL se evalúa en la siguiente respuesta. Observe cómo la propiedad data1
se nombra key
en la respuesta.
[
{
"a": 3,
"key": 1
},
{
"b": 4,
"key": 1
},
{
"c": 5,
"key": 1
}
]
Ejemplo 3 de la función de transformación
En este ejemplo se muestra cómo se puede utilizar la función transform() en las cláusulas SELECT anidadas para seleccionar varios atributos y crear nuevos objetos para su posterior procesamiento.
En este ejemplo, se publica el siguiente mensaje en el tema A/B
de MQTT.
{
"data1": "example",
"data2": {
"a": "first attribute",
"b": "second attribute",
"c": [
{
"x": {
"someInt": 5,
"someString": "hello"
},
"y": true
},
{
"x": {
"someInt": 10,
"someString": "world"
},
"y": false
}
]
}
}
El Object
para esta función de transformación es el objeto devuelto por la instrucción SELECT, que contiene los elementos a
y b
de la cosa data2
del mensaje. El parámetro Array
consta de los dos objetos de la matriz data2.c
del mensaje original.
select value transform('enrichArray', (select a, b from data2), (select value c from data2)) from 'A/B'
Con el mensaje anterior, la instrucción SQL se evalúa en la siguiente respuesta.
[ { "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 matriz devuelta en esta respuesta podría usarse con las acciones de la regla temática compatibles con batchMode
.
trim(String)
Elimina todos los espacios en blanco del principio y del final del valor String
proporcionado. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplo:
Trim(" hi ")
= "hi"
Tipo de argumento | Resultado |
---|---|
Int |
La representación String de Int con todos los espacios en blanco del principio y del final suprimidos. |
Decimal |
La representación String de Decimal con todos los espacios en blanco del principio y del final suprimidos. |
Boolean |
La representación String de Boolean ("true" o "false") con todos los espacios en blanco del principio y del final suprimidos. |
String |
El argumento String con todos los espacios en blanco del principio y del final suprimidos. |
Matriz | La representación String del valor Array mediante reglas de conversión estándar. |
Objeto | La representación String de la cosa mediante reglas de conversión estándar. |
Nulo | Undefined . |
Sin definir | Undefined . |
trunc(Decimal, Int)
Trunca el primer argumento según el número del valor Decimal
especificado por el segundo argumento. Si el segundo argumento es inferior a cero, se establece en cero. Si el segundo argumento es superior a 34, se establece en 34. Los ceros del final se eliminan del resultado. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
trunc(2.3, 0)
= 2.
trunc(2.3123, 2)
= 2.31.
trunc(2.888, 2)
= 2,88.
trunc(2.00, 5)
= 2.
Tipo de argumento 1 | Tipo de argumento 2 | Resultado |
---|---|---|
Int |
Int |
El valor de origen. |
Int /Decimal |
Int /Decimal |
El primer argumento se trunca en la longitud indicada por el segundo argumento. Si el segundo argumento no es un valor Int , se redondea al valor Int inferior más cercano. |
Int /Decimal /String |
Int /Decimal |
El primer argumento se trunca en la longitud indicada por el segundo argumento. Si el segundo argumento no es un valor Int , se redondea al valor Int inferior más cercano. Los valores de tipo String se convierten en valores de tipo Decimal . Si se produce un error en la conversión de cadena, el resultado obtenido es Undefined . |
Otro valor | Undefined . |
upper(String)
Muestra la versión en mayúsculas del valor String
indicado. Los argumentos que no sean String
se convierten en String
mediante las reglas de conversión estándar. Es compatible con la versión 2015-10-08 de SQL y versiones posteriores.
Ejemplos:
upper("hello")
= "HELLO"
upper(["hello"])
= "[\"HELLO\"]"