El motor de reglas proporciona funciones que puede invocar en instrucciones SQL para procesar datos.
Funciones compatibles con la función de reenvío de datos
Función | Descripción |
abs(number) | Devuelve el valor absoluto del número. |
asin(number) | Devuelve el arcoseno del número. |
attribute(key) | Devuelve el valor de la etiqueta del dispositivo correspondiente a la clave especificada. Si el dispositivo no tiene asignada una etiqueta con dicha clave, no se devuelve ningún valor. Al depurar la instrucción SQL, se devuelve una cadena vacía porque no existe ningún dispositivo ni etiqueta real. |
concat(string1, string2) | Concatena las cadenas y devuelve el resultado. Ejemplo: |
cos(number) | Devuelve el coseno del número. |
cosh(number) | Devuelve el coseno hiperbólico del número. |
crypto(field,String) | Cifra el valor del campo. El parámetro String especifica un algoritmo de cifrado. Los algoritmos compatibles son: MD2, MD5, SHA1, SHA-256, SHA-384 y SHA-512. |
deviceName() | Devuelve el nombre del dispositivo actual. Al depurar la instrucción SQL, se devuelve una cadena vacía porque no existe ningún dispositivo real. |
endswith(input, suffix) | Comprueba si la cadena de entrada termina con la cadena especificada en el parámetro suffix. |
exp(number) | Devuelve el valor de la constante matemática e elevado a la potencia del número especificado. |
floor(number) | Devuelve el entero más grande menor o igual al número. |
log(n, m) | Devuelve el logaritmo del número n en base m. Si no especifica m, se utiliza la base 10 predeterminada. En este caso, se devuelve |
lower(string) | Convierte todas las letras de la cadena especificada a minúsculas y devuelve la cadena resultante. |
mod(n, m) | Devuelve el resto de dividir el número n entre el divisor m. |
nanvl(value, default) | Devuelve el valor de la propiedad. El parámetro value especifica el nombre de la propiedad. Si el valor de la propiedad es nulo, la función devuelve el valor del parámetro default. |
newuuid() | Devuelve un identificador único universal (UUID) aleatorio. |
payload(textEncoding) | Devuelve la carga útil del mensaje enviado por un dispositivo. La carga útil se codifica mediante el esquema especificado en el parámetro textEncoding. El esquema de codificación predeterminado es UTF-8. Esto significa que las funciones |
power(n,m) | Devuelve el número n elevado a la potencia m. |
rand() | Devuelve un número aleatorio mayor o igual a 0 y menor que 1. |
replace(source, substring, replacement) | Reemplaza la subcadena en la columna de origen por la cadena de reemplazo. Ejemplo: |
sin(n) | Devuelve el seno del número n. |
sinh(n) | Devuelve el seno hiperbólico del número n. |
tan(n) | Devuelve la tangente del número n. |
tanh(n) | Devuelve la tangente hiperbólica del número n. |
thingPropertyFlatMap(property) | Devuelve los valores de una propiedad en un modelo de Thing Specification Language (TSL). Si la propiedad tiene varios valores, sepárelos con guiones bajos (_). Si un modelo TSL contiene más de 50 propiedades, la función de reenvío de datos no puede reenviar el modelo completo. Invoque esta función para extraer datos de propiedades del modelo TSL. De este modo, todas las propiedades del modelo TSL pueden reenviarse a otros servicios de Alibaba Cloud. Puede especificar varias propiedades en el parámetro property de la función. Si no especifica ninguna propiedad, se extraen todos los valores de las propiedades. Por ejemplo, la función |
timestamp(format) | Devuelve la marca de tiempo de la hora actual del sistema en GMT+8. El parámetro format es opcional. Si no configura el parámetro format, se devuelve la marca de tiempo de la hora actual del sistema. Por ejemplo, la función |
timestamp_utc(format) | Devuelve la marca de tiempo UTC de la hora actual del sistema en el formato especificado. El parámetro format es opcional. Si no configura el parámetro format, se devuelve la marca de tiempo de 13 dígitos de la hora actual del sistema. Por ejemplo, la función timestamp_utc() devuelve |
topic(number) | Devuelve la información del tema en un nivel especificado. Por ejemplo, suponga un tema llamado |
upper(string) | Convierte todas las letras de la cadena especificada a mayúsculas y devuelve la cadena resultante. Por ejemplo, la función upper(alibaba) devuelve |
to_base64(*) | Convierte la carga útil del mensaje de datos binarios a una cadena codificada en Base64 y devuelve la carga útil convertida. Si la carga útil original del mensaje es de tipo datos binarios, invoque esta función. |
messageId() | Devuelve el ID del mensaje generado por IoT Platform. |
substring(target, start, end) | Devuelve una parte de la cadena especificada. Descripción de parámetros
Nota
Ejemplos:
|
to_hex(*) | Convierte la carga útil del mensaje de datos binarios a una cadena hexadecimal y devuelve la carga útil convertida. Si la carga útil original del mensaje es de tipo datos binarios, invoque esta función. |
user_property() | Obtiene el valor del parámetro UserProperty cuando un dispositivo utiliza MQTT 5.0.
Por ejemplo, el valor del parámetro UserProperty reportado por un dispositivo es
|
things_function_type() | Consulta el tipo de datos TSL reportados. Esta función solo aplica a eventos y servicios TSL. El valor devuelto varía según el tipo de función TSL consultada.
Por ejemplo, el tema |
things_property('${Parameter name}') | Consulta el valor de una propiedad, servicio o evento TSL. Esta función solo aplica a datos TSL. Por ejemplo, el tema |
Ejemplos
Puede invocar funciones para obtener o procesar datos en las cláusulas SELECT y WHERE de las instrucciones SQL.
Por ejemplo, un producto de sensor de temperatura tiene la propiedad Temperature. A continuación script muestra los datos de propiedad TSL enviados por un dispositivo.
{
"deviceType": "Custom",
"iotId": "H5KURkKdibnZvSls****000100",
"productKey": "a1HHrkm****",
"gmtCreate": 1564569974224,
"deviceName": "TestDevice1",
"items": {
"Temperature": {
"value": 23.5,
"time": 1564569974229
}
}
}
Este producto de sensor de temperatura incluye varios dispositivos. Los datos de la propiedad Temperature deben reenviarse a Function Compute para su procesamiento solo cuando la temperatura reportada sea mayor a 38 y el dispositivo sea TestDevice1, TestDevice2 o TestDevice3. A continuación instrucción SQL filtra los datos reportados por los dispositivos.
Instrucción SQL:
SELECT deviceName() as deviceName,things_property('Temperature') as Temperature
FROM "/g5or0***/+thing/event/property/post"
WHERE things_property('Temperature')>38 and deviceName() in ('TestDevice1', 'TestDevice2', 'TestDevice3')
En este ejemplo, se invocan las funciones deviceName() y things_property('Temperature').
Las funciones se configuran en la cláusula SELECT para filtrar los datos enviados y obtener el nombre del dispositivo y el valor del parámetro Temperature.
Estas funciones se configuran en la cláusula WHERE para especificar una condición.
>38yin ('TestDevice1', 'TestDevice2', 'TestDevice3')indican que los datos de la propiedad se reenvían solo si la temperatura es mayor a 38 grados Celsius y el nombre del dispositivo es TestDevice1, TestDevice2 o TestDevice3.
Para obtener más información sobre cómo escribir las cláusulas SELECT y WHERE en una instrucción SQL y qué expresiones condicionales admite el motor de reglas, consulte SQL statements.