Fonctions - AWS IoT Core

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fonctions

Vous pouvez utiliser les fonctions intégrées suivantes dans les WHERE clauses SELECT ou de vos SQL expressions.

abs(Decimal)

Il renvoie la valeur absolue d'un nombre. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Par exemple, abs(-5) renvoie 5.

Type d'argument Résultat
Int Int, la valeur absolue de l'argument.
Decimal Decimal, la valeur absolue de l'argument.
Boolean Undefined.
String Decimal. Le résultat est la valeur absolue de l’argument. Si la chaîne ne peut être pas convertie, le résultat est Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

accountid()

Renvoie l'ID du compte qui possède la règle comme une valeur String. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

accountid() = "123456789012"

acos(Decimal)

Renvoie le cosinus inverse d'un nombre en radians. Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : acos(0) = 1,5707963267948966

Type d'argument Résultat
Int Decimal (avec double précision), le cosinus inverse de l'argument. Des résultats imaginaires sont retournés sous la forme Undefined.
Decimal Decimal (avec double précision), le cosinus inverse de l'argument. Des résultats imaginaires sont retournés sous la forme Undefined.
Boolean Undefined.
String Decimal, le cosinus inverse de l'argument. Si la chaîne ne peut être pas convertie, le résultat est Undefined. Des résultats imaginaires sont retournés sous la forme Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

asin(Decimal)

Renvoie le sinus inverse d'un nombre en radians. Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : asin(0) = 0,0

Type d'argument Résultat
Int Decimal (avec double précision), le sinus inverse de l'argument. Des résultats imaginaires sont retournés sous la forme Undefined.
Decimal Decimal (avec double précision), le sinus inverse de l'argument. Des résultats imaginaires sont retournés sous la forme Undefined.
Boolean Undefined.
String Decimal (avec double précision), le sinus inverse de l'argument. Si la chaîne ne peut être pas convertie, le résultat est Undefined. Des résultats imaginaires sont retournés sous la forme Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

atan(Decimal)

Renvoie la tangente inverse d'un nombre en radians. Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : atan(0) = 0,0

Type d'argument Résultat
Int Decimal (avec double précision), la tangente inverse de l'argument. Des résultats imaginaires sont retournés sous la forme Undefined.
Decimal Decimal (avec double précision), la tangente inverse de l'argument. Des résultats imaginaires sont retournés sous la forme Undefined.
Boolean Undefined.
String Decimal, la tangente inverse de l'argument. Si la chaîne ne peut être pas convertie, le résultat est Undefined. Des résultats imaginaires sont retournés sous la forme Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

atan2(Decimal, Decimal)

Il renvoie l'angle en radians, entre l'axe des X positifs et le point (x, y) défini dans les deux arguments.  L'angle est positif pour les angles sans le sens contraire des aiguilles d'une montre (moitié supérieure du plan, y > 0) et négatif pour les angles dans le sens des aiguilles d'une montre (moitié inférieure du plan, y < 0). Les arguments Decimal sont arrondis pour une meilleure précision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : atan2(1, 0) = 1,5707963267948966

Type d'argument Type d'argument Résultat
Int/Decimal Int/Decimal Decimal (avec double précision), l'angle entre l'axe des X et le point (x, y) spécifié.
Int/Decimal/String Int/Decimal/String Decimal, la tangente inverse du point décrit. Si une chaîne ne peut pas être convertie, le résultat est Undefined.
Autre valeur Autre valeur Undefined.

aws_lambda (,) functionArn inputJson

Appelle la fonction Lambda spécifiée en passant inputJson à la fonction Lambda et renvoie le résultat généré JSON par la fonction Lambda.

Arguments
Argument Description
functionArn

La ARN fonction Lambda à appeler. La fonction Lambda doit renvoyer JSON des données.

inputJson

JSONEntrée transmise à la fonction Lambda. Pour transmettre des requêtes d'objets imbriqués et des littéraux, vous devez utiliser la SQL version 2016-03-23.

Vous devez accorder AWS IoT lambda:InvokeFunction des autorisations pour appeler la fonction Lambda spécifiée. L'exemple suivant montre comment accorder l'autorisation lambda:InvokeFunction à l'aide de l' AWS CLI :

aws lambda add-permission --function-name "function_name" --region "region" --principal iot.amazonaws.com --source-arn arn:aws:iot:us-east-1:account_id:rule/rule_name --source-account "account_id" --statement-id "unique_id" --action "lambda:InvokeFunction"

Les arguments de la commande add-permission sont les suivants :

--function-name

Nom de la fonction Lambda. Vous ajoutez une nouvelle autorisation pour mettre à jour la politique de ressources de la fonction.

--région

Celui Région AWS de votre compte.

--principal

Mandataire qui obtient l'autorisation. Cela devrait être iot.amazonaws.com pour AWS IoT autoriser l'appel d'une fonction Lambda.

--source-arn

Celui ARN de la règle. Vous pouvez utiliser la get-topic-rule AWS CLI commande pour obtenir la valeur ARN d'une règle.

--source-account

L' Compte AWS endroit où la règle est définie.

--statement-id

Identifiant unique de l'instruction.

--action

L’action Lambda que vous souhaitez autoriser dans cette déclaration. Pour autoriser AWS IoT à invoquer une fonction,Lambda spécifiez lambda:InvokeFunction.

Important

Si vous ajoutez une autorisation pour un AWS IoT principal sans fournir le source-arn ousource-account, toute autorisation Compte AWS qui crée une règle avec votre action Lambda peut déclencher des règles à partir desquelles appeler votre fonction Lambda. AWS IoT Pour plus d’informations, veuillez consulter Modèle d’autorisation Lambda.

Étant donné une charge utile de JSON message comme :

{ "attribute1": 21, "attribute2": "value" }

La fonction aws_lambda peut être utilisée pour appeler la fonction Lambda, comme suit :

SELECT aws_lambda("arn:aws:lambda:us-east-1:account_id:function:lambda_function", {"payload":attribute1}) as output FROM 'topic-filter'

Si vous souhaitez transmettre la charge utile complète du MQTT message, vous pouvez spécifier la JSON charge utile en utilisant « * », comme dans l'exemple suivant.

SELECT aws_lambda("arn:aws:lambda:us-east-1:account_id:function:lambda_function", *) as output FROM 'topic-filter'

payload.inner.element sélectionne les données à partir des messages publiés dans la rubrique « rubrique/sous-rubrique ».

some.value sélectionne les données à partir de la sortie générée par la fonction Lambda.

Note

Le moteur de règles limite la durée d'exécution des fonctions Lambda. Les appels de fonction Lambda provenant de règles doivent être terminés en moins de 2 000 millisecondes.

bitand(Int, Int)

Effectue une opération bit par bit AND sur les représentations binaires des deux arguments Int (convertis). Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : bitand(13, 5) = 5

Type d'argument Type d'argument Résultat
Int Int Int, un bit à bit AND des deux arguments.
Int/Decimal Int/Decimal Int, un bit à bit AND des deux arguments. Tous les nombres non-Int sont arrondis à la valeur Int inférieure la plus proche. Si l'un des arguments ne peut pas être converti en une valeur Int, le résultat Undefined.
Int/Decimal/String Int/Decimal/String Int, un bit à bit AND des deux arguments. Toutes les chaînes sont converties en valeurs décimales et arrondies à la valeur Int inférieure la plus proche. Si la conversion échoue, le résultat est Undefined.
Autre valeur Autre valeur Undefined.

bitor(Int, Int)

Il effectue une opération OR au niveau du bit des représentations binaires des deux arguments. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : bitor(8, 5) = 13

Type d'argument Type d'argument Résultat
Int Int Int, une opération OR au niveau du bit des deux arguments.
Int/Decimal Int/Decimal Int, une opération OR au niveau du bit des deux arguments. Tous les nombres non-Int sont arrondis à la valeur Int inférieure la plus proche. Si la conversion échoue, le résultat est Undefined.
Int/Decimal/String Int/Decimal/String Int, une opération OR au niveau du bit sur les deux arguments. Toutes les chaînes sont converties en valeurs décimales et arrondies à la valeur Int inférieure la plus proche. Si la conversion échoue, le résultat est Undefined.
Autre valeur Autre valeur Undefined.

bitxor(Int, Int)

Effectue une opération bit par bit XOR sur les représentations binaires des deux arguments Int (convertis). Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : bitor(13, 5) = 8

Type d'argument Type d'argument Résultat
Int Int Int, bit par bit XOR sur les deux arguments.
Int/Decimal Int/Decimal Int, bit par bit XOR sur les deux arguments. Les nombres non-Int sont arrondis à la valeur Int inférieure la plus proche.
Int/Decimal/String Int/Decimal/String Int, bit par bit XOR sur les deux arguments. les chaînes sont converties en décimales et arrondies au plus proche. Int Si une conversion échoue, le résultat est Undefined.
Autre valeur Autre valeur Undefined.

bitnot(Int)

Effectue une opération bit par bit NOT sur les représentations binaires de l'Intargument (converti). Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : bitnot(13) = 2

Type d'argument Résultat
Int Int, un bit par rapport NOT à l'argument.
Decimal Int, un bit par rapport NOT à l'argument. La valeur Decimal est arrondie à la valeur Int inférieure la plus proche.
String Int, un bit par rapport NOT à l'argument. Les chaînes sont converties en valeurs décimales et arrondies à la valeur Int inférieure la plus proche. Si une conversion échoue, le résultat est Undefined.
Autre valeur Autre valeur.

cast()

Convertit une valeur d'un type de données en un autre. La conversion se comporte principalement comme les conversions standard, avec en outre la capacité de convertir des chiffres vers/depuis des valeurs booléennes. Si vous AWS IoT ne pouvez pas déterminer comment convertir un type en un autre, le résultat estUndefined. Pris en charge par SQL la version 2015-10-08 et versions ultérieures. Format : fonte (valuestype).

Exemple :

cast(true as Int) = 1

Les mots-clés suivants peuvent apparaître après « as » lors de l'appel de cast :

Pour les SQL versions 2015-10-08 et 2016-03-23
Mot clé Résultat
String Il convertit une valeur en String.
Nvarchar Il convertit une valeur en String.
Texte Il convertit une valeur en String.
Ntext Il convertit une valeur en String.
varchar Il convertit une valeur en String.
Int Il convertit une valeur en Int.
Entier Il convertit une valeur en Int.
Double Transforme la valeur en Decimal (avec une double précision).
De plus, pour la SQL version 2016-03-23
Mot clé Résultat
Decimal Il convertit une valeur en Decimal.
Booléen Il convertit une valeur en Boolean.
Boolean Il convertit une valeur en Boolean.

Règles de conversion de types :

Conversion en décimal
Type d'argument Résultat
Int Un chiffre Decimal sans virgule décimale.
Decimal

La valeur source.

Note

Avec SQL V2 (2016-03-23), les valeurs numériques qui sont des nombres entiers, telles que10.0, renvoient une Int valeur (10) au lieu de la Decimal valeur attendue (). 10.0 Pour convertir de manière fiable des valeurs numériques entières en Decimal valeurs, utilisez SQL V1 (08/10/2015) pour l'instruction de requête de règle.

Boolean true = 1.0, false = 0.0.
String Tente d'analyser la chaîne en tant que Decimal. AWS IoT tente d'analyser les chaînes correspondant à l'expression regex : ^-?\d+(\.\d+)?((?i)E-?\d+)?$. « 0 », « -1.2 », « 5E-12 » sont des exemples de chaînes qui sont automatiquement converties en valeurs décimales.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.
Conversion en entier
Type d'argument Résultat
Int La valeur source.
Decimal La valeur source arrondie à la valeur Int inférieure la plus proche.
Boolean true = 1.0, false = 0.0.
String Tente d'analyser la chaîne en tant que Decimal. AWS IoT tente d'analyser les chaînes correspondant à l'expression regex : ^-?\d+(\.\d+)?((?i)E-?\d+)?$. « 0 », « -1.2 », « 5E-12 » sont des exemples de chaînes qui sont automatiquement converties en valeurs décimales. AWS IoT tente de convertir la chaîne en valeur Decimal, puis de l'arrondir à la valeur Int inférieure la plus proche.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.
Conversion en valeur Boolean
Type d'argument Résultat
Int 0 = False, any_nonzero_value = True.
Decimal 0 = False, any_nonzero_value = True.
Boolean La valeur source.
String « true »=True et « false »=False (insensible à la casse). Autres valeurs de chaînes = Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.
Conversion en chaîne
Type d'argument Résultat
Int Une représentation de chaîne de la valeur Int en notation standard.
Decimal Une chaîne représentant la valeur Decimal, probablement en notation scientifique.
Boolean « true » ou « false », tout en minuscules.
String La valeur source.
Tableau Le tableau sérialisé en. JSON La chaîne résultante consiste en une liste séparée par des virgules et délimitée par des crochets. String est entre guillemets, à l'inverse de Decimal, Int et Boolean.
Objet L'objet sérialisé en. JSON La JSON chaîne est une liste de paires clé-valeur séparées par des virgules et commence et se termine par des accolades. Stringest cité. Decimal, IntBoolean, et ne le Null sont pas.
Null Undefined.
Non défini Undefined.

ceil(Decimal)

Arrondit la valeur Decimal donnée à la valeur Int supérieure la plus proche. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

ceil(1.2) = 2

ceil(-1.2) = -1

Type d'argument Résultat
Int Int, la valeur d'argument.
Decimal Int, la valeur Decimal arrondie à la valeur Int supérieure la plus proche.
String Int. La chaîne est convertie en valeur Decimal et arrondie à la valeur Int supérieure la plus proche. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Autre valeur Undefined.

chr(String)

Renvoie le ASCII caractère correspondant à l'Intargument donné. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

chr(65) = "A".

chr(49) = "1".

Type d'argument Résultat
Int Le caractère correspondant à la ASCII valeur spécifiée. Si l'argument n'est pas une ASCII valeur valide, le résultat estUndefined.
Decimal Le caractère correspondant à la ASCII valeur spécifiée. L'argument Decimal est arrondi à la valeur Int inférieure la plus proche. Si l'argument n'est pas une ASCII valeur valide, le résultat estUndefined.
Boolean Undefined.
String Si la valeur String peut être convertie en valeur Decimal, elle est arrondie à la valeur Int inférieure la plus proche. Si l'argument n'est pas une ASCII valeur valide, le résultat estUndefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Autre valeur Undefined.

clientid()

Renvoie l'ID du MQTT client qui envoie le message, ou n/a si le message n'a pas été envoyéMQTT. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

clientid() = "123456789012"

concat()

Concatène des tableaux ou des chaînes. Cette fonction accepte n'importe quel nombre d'arguments et renvoie une valeur String ou Array. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

concat() = Undefined.

concat(1) = "1".

concat([1, 2, 3], 4) = [1, 2, 3, 4].

concat([1, 2, 3], "hello") = [1, 2, 3, "bonjour"]

concat("con", "cat") = "concat"

concat(1, "hello") = "bonjour1"

concat("he","is","man") = "heisman"

concat([1, 2, 3], "hello", [4, 5, 6]) = [1, 2, 3, "bonjour", 4, 5, 6]

Nombre d'arguments Résultat
0 Undefined.
1 L'argument est renvoyé non modifié.
2+

Si un argument est une valeur Array, le résultat est un seul tableau contenant l'ensemble des arguments. Si aucun argument n'est une valeur de tableau, et qu'un argument au moins est une valeur String, le résultat est la concaténation des représentations de String de tous les arguments. Des arguments sont convertis en chaînes à l’aide des conversions standard précédemment répertoriées.

cos(Decimal)

Renvoie le cosinus d'un nombre en radians. Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

cos(0) = 1.

Type d'argument Résultat
Int Decimal (avec double précision), le cosinus de l'argument. Des résultats imaginaires sont retournés sous la forme Undefined.
Decimal Decimal (avec double précision), le cosinus de l'argument. Des résultats imaginaires sont retournés sous la forme Undefined.
Boolean Undefined.
String Decimal (avec double précision), le cosinus de l'argument. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined. Des résultats imaginaires sont retournés sous la forme Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

cosh(Decimal)

Renvoie le cosinus hyperbolique d'un nombre en radians. Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : cosh(2.3) = 5.037220649268761.

Type d'argument Résultat
Int Decimal (avec double précision), le cosinus hyperbolique de l'argument. Des résultats imaginaires sont retournés sous la forme Undefined.
Decimal Decimal (avec double précision), le cosinus hyperbolique de l'argument. Des résultats imaginaires sont retournés sous la forme Undefined.
Boolean Undefined.
String Decimal (avec double précision), le cosinus hyperbolique de l'argument. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined. Des résultats imaginaires sont retournés sous la forme Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

décoder (valeur,decodingScheme)

Utilisez la fonction decode pour décoder une valeur codée. Si la chaîne décodée est un JSON document, un objet adressable est renvoyé. Sinon, la chaîne décodée est renvoyée sous forme de chaîne. La fonction revient NULL si la chaîne ne peut pas être décodée. Cette fonction prend en charge le décodage des chaînes codées en base64 et du format de message Protocol Buffer (protobuf).

Pris en charge par SQL la version 2016-03-23 et versions ultérieures.

value

Une valeur de chaîne ou l’une des expressions valides, telles que définies dans Référence AWS IoT SQL, qui renvoie une chaîne.

decodingScheme

Chaîne littérale représentant le schéma utilisé pour décoder la valeur. À l’heure actuelle, uniquement 'base64' et 'proto' sont pris en charge.

Décodage de chaînes codées en base64

Dans cet exemple, la charge utile du message inclut une valeur codée.

{ encoded_temp: "eyAidGVtcGVyYXR1cmUiOiAzMyB9Cg==" }

La decode fonction décrite dans cette SQL instruction décode la valeur de la charge utile du message.

SELECT decode(encoded_temp,"base64").temperature AS temp from 'topic/subtopic'

Le décodage de la encoded_temp valeur permet d'obtenir le JSON document valide suivant, qui permet à l'SELECTinstruction de lire la valeur de température.

{ "temperature": 33 }

Le résultat de l'SELECTinstruction dans cet exemple est affiché ici.

{ "temp": 33 }

Si la valeur décodée n'était pas un JSON document valide, elle serait renvoyée sous forme de chaîne.

Décodage de la charge utile des messages protobuf

Vous pouvez utiliser la SQL fonction de décodage pour configurer une règle capable de décoder la charge utile de votre message protobuf. Pour plus d’informations, veuillez consulter la section Décodage des charges utiles des messages protobuf.

La signature de la fonction ressemble à ce qui suit :

decode(<ENCODED DATA>, 'proto', '<S3 BUCKET NAME>', '<S3 OBJECT KEY>', '<PROTO NAME>', '<MESSAGE TYPE>')
ENCODED DATA

Spécifie les données codées en protobuf à décoder. Si l’intégralité du message envoyé à la règle est constituée de données codées en protobuf, vous pouvez référencer la charge utile binaire entrante brute à l’aide de * Sinon, ce champ doit être une JSON chaîne codée en base 64 et une référence à la chaîne peut être transmise directement.

1) Pour décoder une charge utile entrante protobuf binaire brute :

decode(*, 'proto', ...)

2) Pour décoder un message codé en protobuf représenté par une chaîne codée en base64 « a.b » :

decode(a.b, 'proto', ...)
proto

Spécifie les données à décoder dans un format de message protobuf. Si vous spécifiez base64 au lieu deproto, cette fonction décodera les chaînes codées en base64 sous la forme. JSON

S3 BUCKET NAME

Le nom du compartiment Amazon S3 dans lequel vous avez chargé votre fichier FileDescriptorSet.

S3 OBJECT KEY

Clé d’objet qui spécifie le fichier FileDescriptorSet dans le compartiment Amazon S3.

PROTO NAME

Le nom du fichier .proto (à l’exception de l’extension) à partir duquel le fichier FileDescriptorSet a été généré.

MESSAGE TYPE

Nom de la structure du message protobuf dans le fichier FileDescriptorSet, à laquelle les données à décoder doivent être conformes.

Voici un exemple SQL d'expression utilisant la SQL fonction de décodage :

SELECT VALUE decode(*, 'proto', 's3-bucket', 'messageformat.desc', 'myproto', 'messagetype') FROM 'some/topic'
  • *

    Représente une charge utile binaire entrante, conforme au type de message protobuf appelé mymessagetype

  • messageformat.desc

    Le fichier FileDescriptorSet stocké dans un compartiment Amazon S3 nommé s3-bucket.

  • myproto

    Le fichier .proto d’origine utilisé pour générer le fichier FileDescriptorSet nommé myproto.proto.

  • messagetype

    Le type de message appelé messagetype (ainsi que toutes les dépendances importées) tel que défini dans myproto.proto.

encoder (valeur,encodingScheme)

Utilisez la encode fonction pour encoder la charge utile, qui peut être non une JSON donnée, dans sa représentation sous forme de chaîne basée sur le schéma de codage. Pris en charge par SQL la version 2016-03-23 et versions ultérieures.

value

Une des expressions valides, telles que définies dans la Référence AWS IoT SQL. Vous pouvez spécifier* pour encoder l'intégralité de la charge utile, qu'elle soit formatée ou non. JSON Si vous fournissez une expression, le résultat de l'évaluation est converti en une chaîne avant d'être codé.

encodingScheme

Chaîne littérale qui représente le schéma de codage à utiliser. Actuellement, seul 'base64' est pris en charge.

endswith(String, String)

Renvoie une valeur Boolean indiquant si le premier argument String se termine par le deuxième argument String. Si l'un des arguments est Null ou Undefined, le résultat a la valeur Undefined. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Par exemple : endswith("cat","at") = true.

Type d'argument 1 Type d'argument 2 Résultat
String String Vrai si le premier argument se termine dans le second argument. Sinon, la valeur renvoyée est Faux.
Autre valeur Autre valeur Les deux arguments sont convertis en chaînes à l'aide des règles de conversion standard. Vrai si le premier argument se termine dans le second argument. Sinon, la valeur renvoyée est Faux. Si l'un des arguments est Null ou Undefined, le résultat a la valeur Undefined.

exp(Decimal)

Renvoie la valeur augmentée vers l'argument Decimal. Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : exp(1) = e.

Type d'argument Résultat
Int Decimal (avec double précision), argument puissance e.
Decimal Decimal (avec double précision), argument puissance e.
String Decimal (avec double précision), argument puissance e. Si la valeur String ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Autre valeur Undefined.

floor(Decimal)

Arrondit la valeur Decimal donnée à la valeur Int inférieure la plus proche. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

floor(1.2) = 1

floor(-1.2) = -2

Type d'argument Résultat
Int Int, la valeur d'argument.
Decimal Int, la valeur Decimal arrondie à la valeur Int inférieure la plus proche.
String Int. La chaîne est convertie en valeur Decimal et arrondie à la valeur Int inférieure la plus proche. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Autre valeur Undefined.

get

Extrait une valeur à partir d'un type de collection (tableau, chaîne, objet). Aucune conversion n'est appliquée au premier argument. Une conversion s'applique comme documenté dans le tableau au deuxième argument. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

get(["a", "b", "c"], 1) = "b"

get({"a":"b"}, "a") = "b"

get("abc", 0) = « a ».

Type d'argument 1 Type d'argument 2 Résultat
Tableau Tout type (converti valeur Int) L'élément à l'index de base zéro de la valeur Array fourni par le deuxième argument (converti en Int). Si la conversion échoue, le résultat est Undefined. Si l'index est en dehors des limites de la valeur Array (négatif ou >= array.length), le résultat est Undefined.
Chaîne Tout type (converti valeur Int) Le caractère est à l'index de base zéro de la chaîne fournie par le deuxième argument (converti en Int). Si la conversion échoue, le résultat est Undefined. Si l'index est en dehors des limites de la chaîne (négatif ou >= string.length), le résultat est Undefined.
Objet String (aucune conversion appliquée) La valeur stockée dans le premier argument (l'objet) correspondant à la clé de chaîne fournie comme deuxième argument.
Autre valeur N'importe quelle valeur Undefined.

get_dynamodb (tableName,,,, partitionKeyName, partitionKeyValue) sortKeyName sortKeyValue roleArn

Récupère des données d’une table DynamoDB. get_dynamodb() vous permet d’interroger une table DynamoDB pendant l’évaluation d’une règle. Vous pouvez filtrer ou augmenter les charges utiles des messages à l’aide des données extraites de DynamoDB. Pris en charge par SQL la version 2016-03-23 et versions ultérieures.

get_dynamodb() accepte les paramètres suivants :

tableName

Nom de la table DynamoDB à interroger.

partitionKeyName

Nom de la clé de partition. Pour plus d’informations, veuillez consulter Clés DynamoDB.

partitionKeyValue

Valeur de la clé de partition utilisée pour identifier un enregistrement. Pour plus d’informations, veuillez consulter Clés DynamoDB.

sortKeyName

(Facultatif) Nom de la clé de tri. Ce paramètre n’est requis que si la table DynamoDB interrogée utilise une clé composite. Pour plus d’informations, veuillez consulter Clés DynamoDB.

sortKeyValue

(Facultatif) Valeur de la clé de tri. Ce paramètre n’est requis que si la table DynamoDB interrogée utilise une clé composite. Pour plus d’informations, veuillez consulter Clés DynamoDB.

roleArn

ARND'un IAM rôle qui accorde l'accès à la table DynamoDB. Le moteur de règles assume ce rôle pour accéder à la table DynamoDB en votre nom. Évitez d'utiliser un rôle trop permissif. Accordez au rôle uniquement les autorisations requises par la règle. L’exemple de stratégie suivant accorde l’accès à une table DynamoDB.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "arn:aws:dynamodb:aws-region:account-id:table/table-name" } ] }

À titre d’exemple d’utilisation de get_dynamodb(), supposons que vous disposez d’une table DynamoDB contenant l’ID d’appareil et les informations d’emplacement de tous vos appareils connectés à AWS IoT. L'SELECTinstruction suivante utilise la get_dynamodb() fonction pour récupérer l'emplacement de l'identifiant de périphérique spécifié :

SELECT *, get_dynamodb("InServiceDevices", "deviceId", id, "arn:aws:iam::12345678910:role/getdynamo").location AS location FROM 'some/topic'

Note
  • Vous pouvez appeler au maximum get_dynamodb() une fois par SQL relevé. Le fait d'appeler get_dynamodb() plusieurs fois dans une seule SQL instruction entraîne l'arrêt de la règle sans qu'aucune action ne soit nécessaire.

  • Si get_dynamodb() renvoie plus de 8 Ko de données, l'action de la règle ne peut pas être invoquée.

get_mqtt_property (nom)

Fait référence à l'un MQTT5 des en-têtes suivants :contentType, payLoadFormatIndicatorresponseTopic, etcorrelationData. Cette fonction prend l’une des chaînes littérales suivantes comme argument :content_type, format_indicator response_topic, etcorrelation_data. Pour plus d’informations, veuillez consulter la table des arguments de fonction suivante.

contentType

Chaîne : chaîne codée en UTF -8 qui décrit le contenu du message de publication.

payLoadFormatIndicateur

Chaîne : valeur de chaîne Enum qui indique si la charge utile est formatée en -8. UTF Les valeurs valides sont UNSPECIFIED_BYTES et UTF8_DATA.

responseTopic

Chaîne : chaîne codée en UTF -8 utilisée comme nom de rubrique pour un message de réponse. La rubrique de réponse permet de décrire la rubrique dans laquelle le récepteur doit effectuer la publication dans le cadre du flux demande-réponse. La rubrique ne doit pas contenir de caractères génériques.

correlationData

Chaîne : Les données binaires codées en base64 utilisées par l’expéditeur du message de demande pour identifier la demande à laquelle le message de réponse correspond lorsqu’il est reçu.

Le tableau suivant indique les arguments de fonction acceptables et les types de retour associés pour la fonction get_mqtt_property :

Arguments de la fonction
SQL Type de données renvoyé (le cas échéant) Type de données renvoyé (s’il n’est pas présent)
get_mqtt_property("format_indicator") Chaîne (UNSPECIFIED_ BYTES ou UTF8 _DATA) Chaîne (UNSPECIFIED_BYTES)
get_mqtt_property("content_type") Chaîne Non défini
get_mqtt_property("response_topic") Chaîne Non défini
get_mqtt_property("correlation_data") Chaîne codée en base64 Non défini
get_mqtt_property("some_invalid_name") Non défini Non défini

L'exemple de règles suivant SQL fait référence à l'un MQTT5 des en-têtes suivants :contentType, payLoadFormatIndicatorresponseTopic, etcorrelationData.

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, clésecretType,) roleArn

Récupère la valeur du champ chiffré SecretString ou SecretBinary de la version actuelle d’un secret dans AWS Secrets Manager. Pour plus d'informations sur la création et la gestion de secrets CreateSecret, consultez les UpdateSecretsections, et PutSecretValue.

get_secret() accepte les paramètres suivants :

secretId

Chaîne : le nom de la ressource Amazon (ARN) ou le nom convivial du secret à récupérer.

secretType

Chaîne : type secret. Valeurs valides : SecretString | SecretBinary.

SecretString
  • Pour les secrets que vous créez sous forme JSON d'objets à l'aide de la APIs console AWS CLI, de la ou de la AWS Secrets Manager console :

    • Si vous spécifiez une valeur pour le paramètre key, cette fonction renvoie la valeur de la clé spécifiée.

    • Si vous ne spécifiez aucune valeur pour le key paramètre, cette fonction renvoie l'JSONobjet entier.

  • Pour les secrets que vous créez en tant que JSON non-objets en utilisant le APIs ou le AWS CLI :

    • Si vous spécifiez une valeur pour le paramètre key, cette fonction échoue avec une exception.

    • Si vous ne spécifiez pas de valeur pour le paramètre key, cette fonction renvoie le contenu du secret.

SecretBinary
  • Si vous spécifiez une valeur pour le paramètre key, cette fonction échoue avec une exception.

  • Si vous ne spécifiez aucune valeur pour le key paramètre, cette fonction renvoie la valeur secrète sous forme de chaîne UTF -8 codée en base64.

clé

(Facultatif) Chaîne : nom de la clé à l'intérieur d'un JSON objet stocké dans le SecretString champ d'un secret. Utilisez cette valeur lorsque vous souhaitez récupérer uniquement la valeur d'une clé stockée dans un secret au lieu de récupérer l'JSONobjet entier.

Si vous spécifiez une valeur pour ce paramètre et que le secret ne contient aucun JSON objet dans son SecretString champ, cette fonction échoue avec une exception.

roleArn

Chaîne : rôle ARN avec secretsmanager:GetSecretValue secretsmanager:DescribeSecret autorisations.

Note

Cette fonction renvoie toujours la version actuelle du secret (la version avec la balise AWSCURRENT). Le moteur de AWS IoT règles met en cache chaque secret pendant 15 minutes maximum. Par conséquent, le moteur de règles peut prendre jusqu’à 15 minutes pour mettre à jour un secret. Cela signifie que si vous récupérez un secret jusqu'à 15 minutes après une mise à jour avec AWS Secrets Manager, cette fonction peut renvoyer la version précédente.

Cette fonction n'est pas mesurée, mais des AWS Secrets Manager frais s'appliquent. En raison du mécanisme de mise en cache secret, le moteur de règles appelle AWS Secrets Manager occasionnellement. Le moteur de règles étant un service entièrement distribué, il est possible que vous receviez plusieurs API appels Secrets Manager depuis le moteur de règles au cours de la fenêtre de mise en cache de 15 minutes.

Exemples :

Vous pouvez utiliser la get_secret fonction dans un en-tête d'authentification dans le cadre d'une action de HTTPS règle, comme dans l'exemple d'authentification par API clé suivant.

"API_KEY": "${get_secret('API_KEY', 'SecretString', 'API_KEY_VALUE', 'arn:aws:iam::12345678910:role/getsecret')}"

Pour plus d'informations sur l'action de la HTTPS règle, consultezHTTP.

get_thing_shadow (, rôle) thingName shadowName ARN

Renvoie le shadow spécifié de l'objet spécifié. Pris en charge par SQL la version 2016-03-23 et versions ultérieures.

thingName

Chaîne : nom de l'objet dont vous souhaitez récupérer le shadow.

shadowName

(Facultatif) Chaîne : nom du shadow. Ce paramètre est requis uniquement quand vous référencez des shadows nommés.

roleArn

Chaîne : rôle ARN doté d'une iot:GetThingShadow autorisation.

Exemples :

Lorsqu'elle est utilisée avec un shadow nommé, fournissez le paramètre shadowName.

SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","MyThingShadow","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'

Lorsqu'elle est utilisée avec un shadow non nommé, omettez le paramètre shadowName.

SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'

get_user_properties () userPropertyKey

Références aux propriétés utilisateur, qui est un type d'en-tête de propriété pris en charge dansMQTT5.

userProperty

Chaîne : une propriété utilisateur est une paire clé-valeur. Cette fonction prend la clé comme argument et renvoie un tableau de toutes les valeurs correspondant à la clé associée.

Arguments de la fonction

Pour les propriétés utilisateur suivantes dans les en-têtes des messages :

Clé Valeur
une clé une valeur
une clé différente une valeur différente
une clé valeur avec clé dupliquée

Le tableau suivant indique le SQL comportement attendu :

SQL Type de données de retour Valeur de données de retour
get_user_properties (« une clé ») Tableau de chaînes ['some value', 'value with duplicate key']
get_user_properties (« une clé ») Tableau de chaînes ['a different value']
get_user_properties ( ) Tableau d’objets de paire clé-valeur [{'"some key": "some value"'}, {"other key": "a different value"}, {"some key": "value with duplicate key"}]
get_user_properties (« clé inexistante ») Non défini

L'exemple de règles suivant SQL fait référence aux propriétés utilisateur (un type d'en-tête de MQTT5 propriété) dans la charge utile :

SELECT *, get_user_properties('user defined property key') as userProperty FROM 'some/topic'

Fonctions de hachage

AWS IoT fournit les fonctions de hachage suivantes :

  • md2

  • md5

  • sha1

  • sha224

  • sha256

  • sha384

  • sha512

Toutes les fonctions de hachage prévoit un argument de type chaîne. Le résultat est la valeur hachée de cette chaîne. Les conversions de chaîne standard s'appliquent aux arguments non-chaîne. Toutes les fonctions de hachage sont prises en charge par les SQL versions 2015-10-08 et ultérieures.

Exemples :

md2("hello") = "a9046c73e00331af68917d3804f70655"

md5("hello") = "5d41402abc4b2a76b9719d911017c592"

indexof(String, String)

Renvoie le premier index (de base 0) du deuxième argument comme une sous-chaîne dans le premier argument. Les deux arguments doivent être des chaînes. Les arguments qui ne sont pas des chaînes sont soumis aux règles de conversion de chaînes standard. Cette fonction ne s'applique pas aux tableaux, uniquement aux chaînes. Pris en charge par SQL la version 2016-03-23 et versions ultérieures.

Exemples :

indexof("abcd", "bc") = 1

isNull()

Retourne la valeur true si la valeur de l'argument est Null. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

isNull(5) = false.

isNull(Null) = vrai.

Type d'argument Résultat
Int false
Decimal false
Boolean false
String false
Array false
Object false
Null vrai
Undefined false

isUndefined()

Retourne la valeur true si l'argument est Undefined. Pris en charge par SQL la version 2016-03-23 et versions ultérieures.

Exemples :

isUndefined(5) = false.

isUndefined(floor([1,2,3]))) = vrai.

Type d'argument Résultat
Int false
Decimal false
Boolean false
String false
Array false
Object false
Null false
Undefined true

length(String)

Renvoie le nombre de caractères dans la chaîne fournie. Les règles de conversion standard s'appliquent aux arguments non-String. Pris en charge par SQL la version 2016-03-23 et versions ultérieures.

Exemples :

length("hi") = 2

length(false) = 5

ln(Decimal)

Renvoie le logarithme naturel de l'argument Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : ln(e) = 1.

Type d'argument Résultat
Int Decimal (avec double précision), le logarithme naturel de l'argument.
Decimal Decimal (avec double précision), le logarithme naturel de l'argument.
Boolean Undefined.
String Decimal (avec double précision), le logarithme naturel de l'argument. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

log(Decimal)

Renvoie le logarithme 10 de base de l'argument Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : log(100) = 2.0.

Type d'argument Résultat
Int Decimal (avec double précision), le logarithme de base 10 de l'argument.
Decimal Decimal (avec double précision), le logarithme de base 10 de l'argument.
Boolean Undefined.
String Decimal (avec double précision), le logarithme de base 10 de l'argument. Si la valeur String ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

lower(String)

Renvoie la version en minuscules de la valeur de String donnée. Les arguments non-chaîne sont convertis en chaînes à l'aide des règles de conversion standard. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

lower("HELLO") = "bonjour".

lower(["HELLO"]) = "[\"bonjour\"]".

lpad(String, Int)

Renvoie l'argument String, complété à gauche par le nombre d'espaces spécifié par le deuxième argument. L'argument Int doit être compris entre 0 et 1000. Si la valeur fournie se situe en dehors de cette plage valide, l'argument est défini sur la valeur valide la plus proche (0 ou 1 000). Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

lpad("hello", 2) = "  hello".

lpad(1, 3) = "   1"

Type d'argument 1 Type d'argument 2 Résultat
String Int String, l'argument String fourni, complété à gauche par un nombre d'espaces égal à la valeur Int.
String Decimal L'argument Decimal est arrondi à la valeur Int inférieure la plus proche, et l'argument String est complété à gauche par le nombre d'espaces spécifié.
String String Le deuxième argument est converti en valeur Decimal, qui est arrondie à la valeur Int inférieure la plus proche, et l'argument String est complété à gauche par le nombre d'espaces spécifié. Si le deuxième argument ne peut pas être converti en une valeur Int, le résultat Undefined.
Autre valeur Int/Decimal/String La première valeur est convertie en a à l'Stringaide des conversions standard, puis la LPAD fonction y est appliquéeString. Si elle ne peut pas être convertie, le résultat est Undefined.
N'importe quelle valeur Autre valeur Undefined.

ltrim(String)

Supprime tous les espaces de début (tabulations et espaces) de la valeur String fournie. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

Ltrim(" h i ") = "bonjour".

Type d'argument Résultat
Int La représentation String de Int avec tous les espaces de début supprimés.
Decimal La représentation String de Decimal avec tous les espaces de début supprimés.
Boolean La représentation String de la valeur booléenne (« true » ou « false ») avec tous les espaces de début supprimés.
String L'argument avec tous les espaces de début supprimés.
Tableau La représentation String de Array (à l'aide des règles de conversion standard) avec tous les espaces de début supprimés.
Objet La représentation String de l'objet (à l'aide des règles de conversion standard) avec tous les espaces de début supprimés.
Null Undefined.
Non défini Undefined.

machinelearning_predict (,, enregistrement) modelId roleArn

Utilisez cette machinelearning_predict fonction pour faire des prédictions en utilisant les données d'un MQTT message basé sur un modèle Amazon SageMaker AI. Pris en charge par SQL la version 2015-10-08 et versions ultérieures. Les arguments de la fonction machinelearning_predict sont :

modelId

L'ID du modèle sur lequel doit être réalisée la prévision. Le point de terminaison en temps réel du modèle doit être activé.

roleArn

Le rôle IAM qui dispose d'une stratégie avec les autorisations machinelearning:Predict et machinelearning:GetMLModel et permet d'accéder au modèle par rapport auquel la prévision doit être réalisée.

record

Les données à transmettre au SageMaker AI PredictAPI. Cela doit être représenté sous la forme d'un JSON objet monocouche. Si l'enregistrement est un JSON objet à plusieurs niveaux, il est aplati en sérialisant ses valeurs. Par exemple, ce qui suit JSON :

{ "key1": {"innerKey1": "value1"}, "key2": 0}

deviendrait :

{ "key1": "{\"innerKey1\": \"value1\"}", "key2": 0}

La fonction renvoie un JSON objet avec les champs suivants :

predictedLabel

Classification de l'entrée basée sur le modèle.

détails

Contient les attributs suivants :

PredictiveModelType

Type de modèle. Les valeurs valides sont REGRESSION, BINARY, MULTICLASS.

Algorithm

Algorithme utilisé par l' SageMaker IA pour faire des prédictions. La valeur doit êtreSGD.

predictedScores

Contient le score de classification brut correspondant à chaque étiquette.

predictedValue

La valeur prédite par l' SageMaker IA.

mod(Decimal, Decimal)

Renvoie le reste résultant de la division du premier argument par le deuxième argument. Équivalent à remainder(Decimal, Decimal). Vous pouvez également utiliser « % » comme opérateur infixe pour la même fonctionnalité modulo. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : mod(8, 3) = 2.

Opérande gauche Opérande droit Sortie
Int Int Int, les premier et deuxième arguments pour lesquels vous voulez exécuter la fonctionnalité Modulo.
Int/Decimal Int/Decimal Decimal, le premier argument et le deuxième opérande pour lesquels vous voulez exécuter la fonctionnalité Modulo.
String/Int/Decimal String/Int/Decimal Si toutes les chaînes sont converties en décimales, le résultat est le premier argument divisé par le deuxième argument. Sinon la valeur est renvoy, Undefined.
Autre valeur Autre valeur Undefined.

nanol (,) AnyValue AnyValue

Renvoie le premier argument s'il s'agit d'une valeur Decimal valide. Sinon, le deuxième argument est renvoyé. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : Nanvl(8, 3) = 8.

Type d'argument 1 Type d'argument 2 Sortie
Non défini N'importe quelle valeur Le deuxième argument.
Null N'importe quelle valeur Le deuxième argument.
Decimal (NaN) N'importe quelle valeur Le deuxième argument.
Decimal (non-NaN) N'importe quelle valeur Le premier argument.
Autre valeur N'importe quelle valeur Le premier argument.

newuuid()

Renvoie une valeur aléatoire de 16 octetsUUID. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple: newuuid() = 123a4567-b89c-12d3-e456-789012345000

numbytes(String)

Renvoie le nombre d'octets dans le codage UTF -8 de la chaîne fournie. Les règles de conversion standard s'appliquent aux arguments non-String. Pris en charge par SQL la version 2016-03-23 et versions ultérieures.

Exemples :

numbytes("hi") = 2

numbytes("€") = 3

parse_time(String, Long[, String])

Utilisez la fonction parse_time pour mettre en forme un horodatage dans un format date/heure lisible par l'utilisateur. Pris en charge par SQL la version 2016-03-23 et versions ultérieures. Pour convertir une chaîne d’horodatage en millisecondes, veuillez consulter time_to_epoch (Chaîne, Chaîne).

La fonction parse_time attend les arguments suivants :

pattern

(Chaîne ) Un modèle de date/heure qui suit les formats Joda-Time.

timestamp

(Long) Heure à formater en millisecondes depuis l'époque Unix. Voir la fonction timestamp().

timezone

(Chaîne) Fuseau horaire de la date/heure mise en forme. La valeur par défaut est « UTC ». La fonction prend en charge les fuseaux horaires Joda-Time. Cet argument est facultatif.

Exemples :

Lorsque ce message est publié dans la rubrique « A/B », la charge utile {"ts": "1970.01.01 AD at 21:46:40 CST"} est envoyée au compartiment 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" } }

Lorsque ce message est publié dans la rubrique « A/B », une charge utile similaire à {"ts": "2017.06.09 AD at 17:19:46 UTC"} (mais avec la date et l'heure du moment) est envoyée au compartiment 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() peut également servir de modèle de substitution. Par exemple, lorsque ce message est publié dans la rubrique « A/B », la charge utile est envoyée au compartiment S3 avec la clé = « 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)

Renvoie le premier argument augmenté vers le deuxième argument. Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : power(2, 5) = 32.0.

Type d'argument 1 Type d'argument 2 Sortie
Int/Decimal Int/Decimal Une valeur Decimal (avec double précision), le premier argument renvoyé à la puissance du deuxième argument.
Int/Decimal/String Int/Decimal/String Une valeur Decimal (avec double précision), le premier argument renvoyé à la puissance du deuxième argument. Toutes les chaînes sont converties en décimales. Si tout valeur String échoue à être convertie en Decimal, le résultat est Undefined.
Autre valeur Autre valeur Undefined.

principal()

Renvoie le principal utilisé par le terminal pour l’authentification, en fonction de la manière dont le message déclencheur a été publié. Le tableau suivant décrit le mandataire renvoyé pour chaque méthode et protocole de publication.

Méthode de publication du message Protocole Type d’informations d’identification Principal
MQTTclient MQTT Certificat d'appareil X.509 Empreinte du certificat X.509
AWS IoT MQTTclient de console MQTT Utilisateur ou rôle IAM iam-role-id:session-name
AWS CLI HTTP Utilisateur ou rôle IAM userid
AWS IoT Appareil SDK MQTT Certificat d'appareil X.509 Empreinte du certificat X.509
AWS IoT Appareil SDK MQTTterminé WebSocket Utilisateur ou rôle IAM userid

Les exemples suivants illustrent les différents types de valeurs qui peuvent être renvoyés par principal() :

  • Empreinte du certificat X.509 : ba67293af50bf2506f5f93469686da660c7c844e7b3950bfb16813e0d31e9373

  • ID de rôle IAM et nom de session : ABCD1EFG3HIJK2LMNOP5:my-session-name

  • Renvoie un ID utilisateur : ABCD1EFG3HIJK2LMNOP5

rand()

Renvoie une valeur pseudo aléatoire, uniformément distribuée en double entre 0,0 et 1,0. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

rand() = 0.8231909191640703

regexp_matches(String, String)

Renvoie la valeur true si la chaîne (le premier argument) contient un élément correspondant à l'expression régulière (le deuxième argument). Si vous l’utilisez | dans l’expression régulière, utilisez-la avec ().

Exemples :

regexp_matches("aaaa", "a{2,}") = vrai.

regexp_matches("aaaa", "b") = false.

regexp_matches("aaa", "(aaa|bbb)") = vrai.

regexp_matches("bbb", "(aaa|bbb)") = vrai.

regexp_matches("ccc", "(aaa|bbb)") = false.

Premier argument :
Type d'argument Résultat
Int La représentation String de la valeur Int.
Decimal La représentation String de la valeur Decimal.
Boolean La représentation String de la valeur booléenne (« vrai » ou « faux »).
String La valeur String.
Tableau La représentation String de la valeur Array (à l'aide des règles de conversion standard).
Objet La représentation String de l'objet (à l'aide des règles de conversion standard).
Null Undefined.
Non défini Undefined.

Deuxième argument :

Il doit s'agir d'une expression regex valide. Les types non-chaîne sont convertis en valeurs String à l'aide des règles de conversion standard. Selon le type, la chaîne résultante peut ne pas être une expression régulière valide. Si l'argument (converti) n'est pas un regex valide, le résultat est Undefined.

regexp_replace(String, String, String)

Remplace toutes les occurrences du deuxième argument (expression régulière) figurant dans le premier argument par le troisième argument. Fait référence aux groupes de capture avec « $ ». Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

regexp_replace("abcd", "bc", "x") = "axd".

regexp_replace("abcd", "b(.*)d", "$1") = "ac".

Premier argument :
Type d'argument Résultat
Int La représentation String de la valeur Int.
Decimal La représentation String de la valeur Decimal.
Boolean La représentation String de la valeur booléenne (« vrai » ou « faux »).
String La valeur source.
Tableau La représentation String de la valeur Array (à l'aide des règles de conversion standard).
Objet La représentation String de l'objet (à l'aide des règles de conversion standard).
Null Undefined.
Non défini Undefined.

Deuxième argument :

Il doit s'agir d'une expression regex valide. Les types non-chaîne sont convertis en valeurs String à l'aide des règles de conversion standard. Selon le type, la chaîne résultante peut ne pas être une expression régulière valide. Si l'argument (converti) n'est pas une expression regex valide, le résultat est Undefined.

Troisième argument :

Il doit s'agir d'une chaîne de remplacement regex valide. (Peut faire référence à d'autres groupes de capture.) Les types non-chaîne sont convertis en valeurs String à l'aide des règles de conversion standard. Si l'argument (converti) n'est pas une chaîne de remplacement regex valide, le résultat est Undefined.

regexp_substr(String, String)

Recherche la première correspondance du deuxième paramètre (regex) dans le premier paramètre. Fait référence aux groupes de capture avec « $ ». Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

regexp_substr("hihihello", "hi") = "bonjour"

regexp_substr("hihihello", "(hi)*") = "hihi"

Premier argument :
Type d'argument Résultat
Int La représentation String de la valeur Int.
Decimal La représentation String de la valeur Decimal.
Boolean La représentation String de la valeur booléenne (« vrai » ou « faux »).
String L'argument String.
Tableau La représentation String de la valeur Array (à l'aide des règles de conversion standard).
Objet La représentation String de l'objet (à l'aide des règles de conversion standard).
Null Undefined.
Non défini Undefined.

Deuxième argument :

Il doit s'agir d'une expression regex valide. Les types non-chaîne sont convertis en valeurs String à l'aide des règles de conversion standard. Selon le type, la chaîne résultante peut ne pas être une expression régulière valide. Si l'argument (converti) n'est pas une expression regex valide, le résultat est Undefined.

remainder(Decimal, Decimal)

Renvoie le reste résultant de la division du premier argument par le deuxième argument. Équivalent à mod(Decimal, Decimal). Vous pouvez également utiliser « % » comme opérateur infixe pour la même fonctionnalité modulo. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : remainder(8, 3) = 2.

Opérande gauche Opérande droit Sortie
Int Int Int, les premier et deuxième arguments pour lesquels vous voulez exécuter la fonctionnalité Modulo.
Int/Decimal Int/Decimal Decimal, le premier argument et le deuxième opérande pour lesquels vous voulez exécuter la fonctionnalité Modulo.
String/Int/Decimal String/Int/Decimal Si toutes les chaînes sont converties en décimales, le résultat est le premier argument divisé par le deuxième argument. Sinon la valeur est renvoy, Undefined.
Autre valeur Autre valeur Undefined.

replace(String, String, String)

Remplace toutes les occurrences du deuxième argument par le troisième argument dans le premier argument. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

replace("abcd", "bc", "x") = "axd".

replace("abcdabcd", "b", "x") = "axcdaxcd".

Tous les arguments
Type d'argument Résultat
Int La représentation String de la valeur Int.
Decimal La représentation String de la valeur Decimal.
Boolean La représentation String de la valeur booléenne (« vrai » ou « faux »).
String La valeur source.
Tableau La représentation String de la valeur Array (à l'aide des règles de conversion standard).
Objet La représentation String de l'objet (à l'aide des règles de conversion standard).
Null Undefined.
Non défini Undefined.

rpad(String, Int)

Renvoie l'argument chaîne, complété à droite par le nombre d'espaces spécifié dans le deuxième argument. L'argument Int doit être compris entre 0 et 1000. Si la valeur fournie se situe en dehors de cette plage valide, l'argument est défini sur la valeur valide la plus proche (0 ou 1 000). Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

rpad("hello", 2) = "hello  ".

rpad(1, 3) = "1   ".

Type d'argument 1 Type d'argument 2 Résultat
String Int L'argument String est complété à droite par un nombre d'espaces égal à la valeur Int fournie.
String Decimal L'argument Decimal est arrondi à la valeur Int inférieure la plus proche, et la chaîne est complétée à droite par un nombre d'espaces égal à la valeur Int fournie.
String String Le deuxième argument est converti en une valeur Decimal, qui est arrondie à la valeur Int inférieure la plus proche. L'argument String est complété à droite par un nombre d'espaces égal à la valeur Int fournie.
Autre valeur Int/Decimal/String La première valeur est convertie en une valeur String à l'aide des conversions standard, puis la fonction RPAD est appliquée sur cette valeur String. Si elle ne peut pas être convertie, le résultat est Undefined.
N'importe quelle valeur Autre valeur Undefined.

round(Decimal)

Arrondit la valeur Decimal donnée à la valeur Int la plus proche. Si la valeur Decimal se situe à équidistance entre deux valeurs Int (par exemple, 0,5), la valeur Decimal est arrondie à la valeur supérieure. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : Round(1.2) = 1.

Round(1.5) = 2.

Round(1.7) = 2.

Round(-1.1) = -1.

Round(-1.5) = -2.

Type d'argument Résultat
Int L'argument.
Decimal La valeur Decimal est arrondie à la valeur Int inférieure la plus proche.
String La valeur Decimal est arrondie à la valeur Int inférieure la plus proche. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Autre valeur Undefined.

rtrim(String)

Supprime tous les espaces de fin (tabulations et espaces) de la valeur String fournie. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

rtrim(" h i ") = " sa lut "

Type d'argument Résultat
Int La représentation String de la valeur Int.
Decimal La représentation String de la valeur Decimal.
Boolean La représentation String de la valeur booléenne (« vrai » ou « faux »).
Tableau La représentation String de la valeur Array (à l'aide des règles de conversion standard).
Objet La représentation String de l'objet (à l'aide des règles de conversion standard).
Null Undefined.
Non défini Undefined

sign(Decimal)

Renvoie le signe d'un chiffre donné. Lorsque le signe de l'argument est positif, la valeur 1 et renvoyée. Lorsque le signe de l'argument est négatif, la valeur -1 et renvoyée. Si l'argument est 0, la valeur 0 est renvoyée. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

sign(-7) = -1.

sign(0) = 0.

sign(13) = 1.

Type d'argument Résultat
Int Int, le signe de la valeur Int.
Decimal Int, le signe de la valeur Decimal.
String Int, le signe de la valeur Decimal. La chaîne est convertie en une valeur Decimal, et le signe de la valeur Decimal est renvoyée. Si la valeur String ne peut pas être convertie en une valeur Decimal, le résultat est Undefined. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.
Autre valeur Undefined.

sin(Decimal)

Renvoie le sinus d'un nombre en radians. Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : sin(0) = 0,0

Type d'argument Résultat
Int Decimal (avec double précision), le sinus de l'argument.
Decimal Decimal (avec double précision), le sinus de l'argument.
Boolean Undefined.
String Decimal (avec double précision), le sinus de l'argument. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Undefined Undefined.

sinh(Decimal)

Renvoie le sinus hyperbolique d'un nombre. Les valeurs Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Le résultat est une valeur Decimal de double précision. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : sinh(2.3) = 4,936961805545957

Type d'argument Résultat
Int Decimal (avec double précision), le sinus hyperbolique de l'argument.
Decimal Decimal (avec double précision), le sinus hyperbolique de l'argument.
Boolean Undefined.
String Decimal (avec double précision), le sinus hyperbolique de l'argument. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

sourceip()

Récupère l’adresse IP d’un appareil ou du routeur qui s’y connecte. Si votre appareil est connecté directement à Internet, la fonction renvoie l’adresse IP source de l’appareil. Si votre appareil est connecté à un routeur connecté à Internet, la fonction renvoie l’adresse IP source du routeur. Supporté par SQL la version 2016-03-23. sourceip()ne prend aucun paramètre.

Important

L'adresse IP source publique d'un appareil est souvent l'adresse IP de la dernière passerelle de traduction d'adresses réseau (NAT), telle que le routeur ou le modem câble de votre fournisseur d'accès Internet.

Exemples :

sourceip()="192.158.1.38"

sourceip()="1.102.103.104"

sourceip()="2001:db8:ff00::12ab:34cd"

SQLexemple :

SELECT *, sourceip() as deviceIp FROM 'some/topic'

Exemples d'utilisation de la fonction sourceip () dans les actions de AWS IoT Core règles :

Exemple 1

L’exemple suivant montre comment appeler la fonction () en tant que modèle de substitution dans une action 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" } } ] } }

Exemple 2

L'exemple suivant montre comment ajouter la fonction sourceip () en tant que propriété MQTT utilisateur à l'aide de modèles de substitution.

{ "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()}" } ] } } } ] } }

Vous pouvez récupérer l'adresse IP source à partir des messages transmis aux AWS IoT Core règles depuis les chemins Message Broker et Basic Ingest. Vous pouvez également récupérer l'adresse IP source pour IPv4 les deux IPv6 messages. L’adresse IP source sera affichée comme suit :

IPv6: yyyy:yyyy:yyyy::yyyy:yyyy

IPv4: xxx.xxx.xxx.xxx

Note

L’adresse IP source d’origine ne sera pas transmise par lebiais de Republier l’action..

substring(String, Int[, Int])

Prévoit un argument String suivi par une ou deux valeurs Int. Pour un argument String et un seul argument Int, cette fonction renvoie la sous-chaîne de l'argument String fourni provenant de l'index (de base 0, inclus) Int fourni à la fin de l'argument String. Pour un argument String et deux arguments Int, cette fonction renvoie la sous-chaîne de l'argument String fourni provenant du premier argument d'index Int (de base 0, inclus) dans le deuxième argument d'index Int (de base 0, inclus). Les index qui sont inférieurs à zéro sont définis sur zéro. Les index qui sont supérieurs à la longueur de String sont définis sur la longueur de String. Pour la version des trois arguments, si le premier index est supérieur (ou égale) au deuxième index, le résultat et vide String.

 Si les arguments fournis ne sont pas (String,Int) ou (String,Int,Int), les conversions standard sont appliquées aux arguments pour tenter de les convertir dans les types corrects. Si les types ne peuvent pas être convertis, le résultat de la fonction est Undefined. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

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()

Renvoie la SQL version spécifiée dans cette règle. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

sql_version() = "2016-03-23"

sqrt(Decimal)

Renvoie la racine carrée d'un nombre en radians. Les arguments Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : sqrt(9) = 3.0.

Type d'argument Résultat
Int La racine carrée de l'argument.
Decimal La racine carrée de l'argument.
Boolean Undefined.
String La racine carrée de l'argument. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

startswith(String, String)

Renvoie une valeur Boolean si le premier argument de type chaîne commence par le deuxième argument de type chaîne. Si l'un des arguments est Null ou Undefined, le résultat a la valeur Undefined. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

startswith("ranger","ran") = true

Type d'argument 1 Type d'argument 2 Résultat
String String Si la première chaîne commence par la deuxième chaîne.
Autre valeur Autre valeur Les deux arguments sont convertis en chaînes à l'aide des règles de conversion standard. Renvoie la valeur true si la première chaîne commence par la deuxième chaîne. Si l'un des arguments est Null ou Undefined, le résultat a la valeur Undefined.

tan(Decimal)

Renvoie la tangente d'un nombre en radians. Les valeurs Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : tan(3) = -0.1425465430742778

Type d'argument Résultat
Int Decimal (avec double précision), la tangente de l'argument.
Decimal Decimal (avec double précision), la tangente de l'argument.
Boolean Undefined.
String Decimal (avec double précision), la tangente de l'argument. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

tanh(Decimal)

Renvoie la tangente hyperbolique d'un nombre en radians. Les valeurs Decimal sont arrondis pour une meilleure prévision avant l'application de la fonction. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple : tanh(2.3) = 0,9800963962661914

Type d'argument Résultat
Int Decimal (avec double précision), la tangente hyperbolique de l'argument.
Decimal Decimal (avec double précision), la tangente hyperbolique de l'argument.
Boolean Undefined.
String Decimal (avec double précision), la tangente hyperbolique de l'argument. Si la chaîne ne peut pas être convertie en une valeur Decimal, le résultat est Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Non défini Undefined.

time_to_epoch (Chaîne, Chaîne)

Utilisez cette fonction time_to_epoch pour convertir une chaîne d’horodatage en un nombre de millisecondes en temps d’époque Unix. Pris en charge par SQL la version 2016-03-23 et versions ultérieures. Pour convertir des millisecondes en une chaîne d’horodatage formatée, veuillez consulter parse_time(String, Long[, String]).

La fonction time_to_epoch attend les arguments suivants :

timestamp

(Chaîne) Chaîne d’horodatage à convertir en millisecondes depuis l’ère Unix. Si la chaîne d'horodatage ne spécifie pas de fuseau horaire, la fonction utilise le fuseau horaire. UTC

pattern

(Chaîne) Un modèle de date/heure qui suit les formats JDK11temporels.

Exemples :

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()

Renvoie l'horodatage actuel en millisecondes à partir de 00:00:00 Temps universel coordonné (UTC), jeudi 1er janvier 1970, tel qu'observé par le moteur de règles. AWS IoT Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple: timestamp() = 1481825251155

topic(Decimal)

Il renvoie la rubrique vers laquelle le message qui a déclenché la règle a été envoyé. Si aucun paramètre n'est indiqué, la rubrique entière est renvoyée. Le paramètre Decimal est utilisé pour spécifier un segment de rubrique spécifique, avec le chiffre 1 désignant le premier segment. Pour la rubrique foo/bar/baz, topic(1) renvoie foo, topic(2) renvoie bar, et ainsi de suite. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

topic() = "things/myThings/thingOne"

topic(1) = "things"

Lorsque Basic Ingest est utilisé, le préfixe initial de la rubrique ($aws/rules/rule-name) n'est pas disponible pour la fonction topic(). Prenons l'exemple de la rubrique suivante :

$aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights

topic() = "Buildings/Building5/Floor2/Room201/Lights"

topic(3) = "Floor2"

traceid()

Renvoie l'ID de trace (UUID) du MQTT message, ou Undefined si le message n'a pas été envoyéMQTT. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

traceid() = "12345678-1234-1234-1234-123456789012"

transformation (chaîne, objet, tableau)

Renvoie un tableau d’objets contenant le résultat de la transformation spécifiée du paramètre Object sur le paramètre Array.

Pris en charge par SQL la version 2016-03-23 et versions ultérieures.

Chaîne

Le mode de transformation à utiliser. Reportez-vous au tableau suivant pour connaître les modes de transformation pris en charge et la manière dont ils créent le Result à partir des paramètres Object et Array.

Objet

Un objet qui contient les attributs à appliquer à chaque élément du Array.

Tableau

Tableau d’objets auxquels les attributs de Object sont appliqués.

Chaque objet de ce tableau correspond à un objet dans la réponse de la fonction. Chaque objet de la réponse de la fonction contient les attributs présents dans l’objet d’origine et les attributs fournis par Object tels que déterminés par le mode de transformation spécifié dans String.

String paramètre

Object paramètre

Array paramètre

Résultat

enrichArray

Objet

Tableau d’objets

Tableau d’objets dans lequel chaque objet contient les attributs d’un élément du paramètre Array et les attributs du paramètre Object.

Toute autre valeur

N'importe quelle valeur

N'importe quelle valeur

Non défini

Note

Le tableau renvoyé par cette fonction est limité à 128 KiB.

Exemple 1 de fonction de transformation

Cet exemple montre comment la fonction transform() produit un tableau unique d’objets à partir d’un objet de données et d’un tableau.

Dans cet exemple, le message suivant est publié dans le MQTT sujetA/B.

{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }

Cette SQL instruction pour une action de règle de sujet utilise la transform() fonction avec une String valeur deenrichArray. Dans cet exemple, Object est la propriété attributes de la charge utile du message et Array est le tableau values, qui contient trois objets.

select value transform("enrichArray", attributes, values) from 'A/B'

À la réception de la charge utile du message, l'SQLinstruction donne la réponse suivante.

[ { "a": 3, "data1": 1, "data2": 2 }, { "b": 4, "data1": 1, "data2": 2 }, { "c": 5, "data1": 1, "data2": 2 } ]

Exemple 2 de fonction de transformation

Cet exemple montre comment la fonction transform() peut utiliser des valeurs littérales pour inclure et renommer des attributs individuels à partir de la charge utile du message.

Dans cet exemple, le message suivant est publié dans le MQTT sujetA/B. Il s’agit du même message que celui utilisé dans Exemple 1 de fonction de transformation.

{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }

Cette SQL instruction pour une action de règle de sujet utilise la transform() fonction avec une String valeur deenrichArray. Le Object dans la fonction transform() possède un seul attribut nommé key avec la valeur de attributes.data1 dans la charge utile du message et Array est le tableau values qui contient les trois mêmes objets que ceux utilisés dans l’exemple précédent.

select value transform("enrichArray", {"key": attributes.data1}, values) from 'A/B'

À la réception de la charge utile du message, cette SQL instruction donne la réponse suivante. Notez comment la propriété data1 est nommée key dans la réponse.

[ { "a": 3, "key": 1 }, { "b": 4, "key": 1 }, { "c": 5, "key": 1 } ]

Exemple 3 de fonction de transformation

Cet exemple montre comment la transform() fonction peut être utilisée dans des SELECT clauses imbriquées pour sélectionner plusieurs attributs et créer de nouveaux objets pour un traitement ultérieur.

Dans cet exemple, le message suivant est publié dans le MQTT sujetA/B.

{ "data1": "example", "data2": { "a": "first attribute", "b": "second attribute", "c": [ { "x": { "someInt": 5, "someString": "hello" }, "y": true }, { "x": { "someInt": 10, "someString": "world" }, "y": false } ] } }

La fonction Object for this transform est l'objet renvoyé par l'SELECTinstruction, qui contient les b éléments a et de l'data2objet du message. Le paramètre Array comprend les deux objets du tableau data2.c figurant dans le message d’origine.

select value transform('enrichArray', (select a, b from data2), (select value c from data2)) from 'A/B'

Avec le message précédent, l'SQLinstruction donne la réponse suivante.

[ { "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" } ]

Le tableau renvoyé dans cette réponse peut être utilisé avec des actions de règles de rubrique qui prennent en charge batchMode.

trim(String)

Supprime tous les espaces de début et de fin de la valeur String fournie. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemple :

Trim(" hi ") = "bonjour"

Type d'argument Résultat
Int La représentation String de Int avec tous les espaces de début et de fin supprimés.
Decimal La représentation String de Decimal avec tous les espaces de début et de fin supprimés.
Boolean La représentation String de la valeur Boolean (« vrai » ou « faux ») avec tous les espaces de début et de fin supprimés.
String L'argument String avec tous les espaces de début et de fin supprimés.
Tableau La représentation String de la valeur Array à l'aide des règles de conversion standard.
Objet La représentation String de l'objet à l'aide des règles de conversion standard.
Null Undefined.
Non défini Undefined.

trunc(Decimal, Int)

Tronque le premier argument du nombre de Decimal, spécifié par le deuxième argument. Si le deuxième argument est inférieur à zéro, il est défini sur zéro. Si le deuxième argument est supérieur à 34, il est défini sur 34. Les zéros de fin sont supprimés du résultat. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

trunc(2.3, 0) = 2.

trunc(2.3123, 2) = 2.31.

trunc(2.888, 2) = 2.88.

trunc(2.00, 5) = 2.

Type d'argument 1 Type d'argument 2 Résultat
Int Int La valeur source.
Int/Decimal Int/Decimal Le premier argument est tronqué jusqu'à la longueur décrite par le deuxième argument. Le deuxième argument, s'il ne s'agit pas d'un Int, est arrondi à la valeur Int inférieure la plus proche.
Int/Decimal/String Int/Decimal Le premier argument est tronqué jusqu'à la longueur décrite par le deuxième argument. Le deuxième argument, s'il ne s'agit pas d'un Int, est arrondi à la valeur Int inférieure la plus proche. Une valeur String est convertie en une valeur Decimal. Si la chaîne ne peut être pas convertie, le résultat est Undefined.
Autre valeur Undefined.

upper(String)

Renvoie la version en majuscules de la valeur String donnée. Les arguments non-String sont convertis en valeurs String à l'aide des règles de conversion standard. Pris en charge par SQL la version 2015-10-08 et versions ultérieures.

Exemples :

upper("hello") = "HELLO"

upper(["hello"]) = "[\"HELLO\"]"