Le moteur de règles met à disposition des fonctions appelables dans les instructions SQL pour le traitement des données.
Fonctions prises en charge par la fonctionnalité de transfert de données
Fonction | Description |
abs(number) | Renvoie la valeur absolue du nombre. |
asin(number) | Renvoie l'arc sinus du nombre. |
attribute(key) | Renvoie la valeur du tag correspondant à la clé spécifiée. Si aucun tag n'est associé à l'appareil avec cette clé, aucune valeur n'est renvoyée. Lors du débogage de votre instruction SQL, une chaîne vide est renvoyée car aucun appareil ni tag réel n'existe. |
concat(string1, string2) | Concatène les chaînes et renvoie le résultat. Exemple : |
cos(number) | Renvoie le cosinus du nombre. |
cosh(number) | Renvoie le cosinus hyperbolique du nombre. |
crypto(field,String) | Chiffre la valeur du champ. Le paramètre String spécifie l'algorithme de chiffrement. Algorithmes pris en charge : MD2, MD5, SHA1, SHA-256, SHA-384 et SHA-512. |
deviceName() | Renvoie le nom de l'appareil actuel. Lors du débogage de votre instruction SQL, une chaîne vide est renvoyée car aucun appareil réel n'existe. |
endswith(input, suffix) | Vérifie si la chaîne d'entrée se termine par la chaîne spécifiée par le paramètre suffix. |
exp(number) | Renvoie la valeur de la constante mathématique e élevée à la puissance d'un nombre spécifié. |
floor(number) | Renvoie le plus grand entier inférieur ou égal au nombre. |
log(n, m) | Renvoie le logarithme du nombre n en base m. Si vous ne spécifiez pas m, la base 10 par défaut est utilisée. Dans ce cas, |
lower(string) | Convertit toutes les lettres d'une chaîne spécifiée en minuscules et renvoie la chaîne en minuscules. |
mod(n, m) | Renvoie le reste de la division du nombre n par le diviseur m. |
nanvl(value, default) | Renvoie la valeur de la propriété. Le paramètre value spécifie le nom de la propriété. Si la valeur de la propriété est null, la fonction renvoie la valeur du paramètre default. |
newuuid() | Renvoie un identifiant unique universel (UUID) aléatoire. |
payload(textEncoding) | Renvoie la charge utile du message envoyée par un appareil. La charge utile est encodée selon le schéma d'encodage spécifié par le paramètre textEncoding. Le schéma d'encodage par défaut est UTF-8. Cela signifie que les fonctions |
power(n,m) | Renvoie le nombre n élevé à la puissance m. |
rand() | Renvoie un nombre aléatoire supérieur ou égal à 0 et inférieur à 1. |
replace(source, substring, replacement) | Remplace la sous-chaîne dans la colonne source par la chaîne de remplacement. Exemple : |
sin(n) | Renvoie le sinus du nombre n. |
sinh(n) | Renvoie le sinus hyperbolique du nombre n. |
tan(n) | Renvoie la tangente du nombre n. |
tanh(n) | Renvoie la tangente hyperbolique du nombre n. |
thingPropertyFlatMap(property) | Renvoie les valeurs d'une propriété dans un modèle Thing Specification Language (TSL). Si la propriété possède plusieurs valeurs, celles-ci sont séparées par des traits de soulignement (_). Si un modèle TSL contient plus de 50 propriétés, la fonctionnalité de transfert de données ne peut pas transférer l'intégralité du modèle TSL. Appelez cette fonction pour extraire les données de propriété du modèle TSL. Ainsi, toutes les propriétés du modèle TSL peuvent être transférées vers d'autres services Alibaba Cloud. Spécifiez plusieurs propriétés pour le paramètre property de la fonction. Si vous ne spécifiez aucune propriété, toutes les valeurs des propriétés sont extraites. Par exemple, la fonction |
timestamp(format) | Renvoie l'horodatage de l'heure système actuelle au fuseau horaire GMT+8. Le paramètre format est facultatif. Si vous ne configurez pas le paramètre format, l'horodatage de l'heure système actuelle est renvoyé. Par exemple, la fonction |
timestamp_utc(format) | Renvoie l'horodatage UTC de l'heure système actuelle dans un format spécifié. Le paramètre format est facultatif. Si vous ne configurez pas le paramètre format, l'horodatage à 13 chiffres de l'heure système actuelle est renvoyé. Par exemple, la fonction timestamp_utc() renvoie |
topic(number) | Renvoie les informations du topic à un niveau spécifié. Par exemple, un topic est nommé |
upper(string) | Convertit toutes les lettres d'une chaîne spécifiée en majuscules et renvoie la chaîne en majuscules. Par exemple, la fonction upper(alibaba) renvoie |
to_base64(*) | Convertit la charge utile du message de données binaires en une chaîne encodée en Base64 et renvoie la charge utile après conversion. Si la charge utile du message d'origine est de type binaire, appelez cette fonction. |
messageId() | Renvoie l'ID du message généré par IoT Platform. |
substring(target, start, end) | Renvoie une partie d'une chaîne spécifiée. Description des paramètres
Remarque
Exemples :
|
to_hex(*) | Convertit la charge utile du message de données binaires en une chaîne hexadécimale et renvoie la charge utile après conversion. Si la charge utile du message d'origine est de type binaire, appelez cette fonction. |
user_property() | Obtient la valeur du paramètre UserProperty lorsqu'un appareil utilise MQTT 5.0.
Par exemple, la valeur du paramètre UserProperty signalée par un appareil est
|
things_function_type() | Interroge le type des données TSL signalées. Cette fonction s'applique uniquement aux événements TSL et aux services TSL. La valeur de retour de cette fonction varie selon le type de fonctionnalité TSL interrogée.
Par exemple, le topic |
things_property('${Parameter name}') | Interroge la valeur d'une propriété, d'un service ou d'un événement TSL. Cette fonction s'applique uniquement aux données TSL. Par exemple, le topic |
Exemples
Appelez des fonctions pour obtenir ou traiter des données dans les clauses SELECT et WHERE des instructions SQL.
Par exemple, un produit de capteur de température possède la propriété Temperature. Le script suivant montre les données de propriété TSL soumises par un appareil.
{
"deviceType": "Custom",
"iotId": "H5KURkKdibnZvSls****000100",
"productKey": "a1HHrkm****",
"gmtCreate": 1564569974224,
"deviceName": "TestDevice1",
"items": {
"Temperature": {
"value": 23.5,
"time": 1564569974229
}
}
}
Ce produit de capteur de température comprend plusieurs appareils. Les données de la propriété Temperature doivent être transférées vers Function Compute pour traitement uniquement lorsque la température signalée est supérieure à 38 et que l'appareil est TestDevice1, TestDevice2 ou TestDevice3. L'instruction SQL suivante filtre les données signalées par les appareils.
Instruction 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')
Dans cet exemple, les fonctions deviceName() et things_property('Temperature') sont appelées.
Les fonctions sont configurées dans la clause SELECT pour filtrer les données soumises afin d'obtenir un nom d'appareil et la valeur du paramètre Temperature.
Ces fonctions sont configurées dans la clause WHERE pour spécifier une condition.
>38etin ('TestDevice1', 'TestDevice2', 'TestDevice3')indiquent que les données de propriété sont transférées uniquement si la température est supérieure à 38 degrés Celsius et que le nom de l'appareil est TestDevice1, TestDevice2 ou TestDevice3.
Pour plus d'informations sur la rédaction des clauses SELECT et WHERE dans une instruction SQL et sur les expressions conditionnelles prises en charge par le moteur de règles, consultez Instructions SQL.