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 clauses SELECT ou WHERE de vos expressions SQL.

abs(Decimal)

Il renvoie la valeur absolue d'un nombre. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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 transmettant le paramètre inputJson à la fonction Lambda et renvoie les données JSON générées par la fonction Lambda.

Arguments
Argument Description
functionArn

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

inputJson

Données JSON en entrée transmises à la fonction Lambda. Pour transmettre des requêtes d’objets imbriqués et des littéraux, vous devez utiliser la version SQL 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

ARN de la règle. Vous pouvez utiliser la get-topic-rule AWS CLI commande pour obtenir l'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.

Soit une charge utile de message JSON comme suit :

{ "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 l’intégralité de la charge utile des messages MQTT, vous pouvez spécifier la charge utile JSON 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)

Il effectue une opération AND au niveau du bit sur des représentations binaires des deux arguments Int(-convertis). Prise en charge par SQL 2015-10-08 et versions ultérieures.

Exemple : bitand(13, 5) = 5

Type d'argument Type d'argument Résultat
Int Int Int, une opération AND au niveau du bit des deux arguments.
Int/Decimal Int/Decimal Int, une opération AND au niveau du bit 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, une opération AND au niveau du bit 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. Prise en charge par SQL 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)

Il effectue une opération XOR au niveau du bit sur des représentations binaires des deux arguments Int(-convertis). Prise en charge par SQL 2015-10-08 et versions ultérieures.

Exemple : bitor(13, 5) = 8

Type d'argument Type d'argument Résultat
Int Int Int, une opération XOR au niveau du bit sur les deux arguments.
Int/Decimal Int/Decimal Int, une opération XOR au niveau du bit 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, un XOR au niveau du bit sur les deux arguments. Les chaînes sont converties en 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 Undefined.

bitnot(Int)

Il effectue une opération NOT au niveau du bit sur des représentations binaires de l'argument Int(-converti). Prise en charge par SQL 2015-10-08 et versions ultérieures.

Exemple : bitnot(13) = 2

Type d'argument Résultat
Int Int, une opération NOT au niveau du bit de l'argument.
Decimal Int, une opération NOT au niveau du bit de l'argument. La valeur Decimal est arrondie à la valeur Int inférieure la plus proche.
String Int, une opération NOT au niveau du bit de 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. Prise en charge par SQL 2015-10-08 et versions ultérieures. Format : cast(valeur as type).

Exemple :

cast(true as Int) = 1

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

Pour 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).
En outre, pour 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 que 10.0, renvoient une valeur Int (10) au lieu de la valeur Decimal attendue (10.0). Pour convertir de manière fiable des valeurs numériques entières en tant que valeurs Decimal, utilisez SQL V1 (2015-10-08) 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 « true »=True et « false »=False (insensible à la casse). Autres valeurs de chaînes = Undefined.
Tableau Le tableau sérialisé au format 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é au format JSON. La chaîne JSON est une liste de paires clé-valeur séparées par des virgules, délimitées par des accolades. String est entre guillemets, à l'inverse de Decimal, Int, Boolean et Null.
Null Undefined.
Non défini Undefined.

ceil(Decimal)

Arrondit la valeur Decimal donnée à la valeur Int supérieure la plus proche. Prise en charge par SQL 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 caractère ASCII qui correspond à l'argument Int donné. Prise en charge par SQL 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 valeur ASCII spécifiée. Si l'argument n'est pas une valeur ASCII valide, le résultat est Undefined.
Decimal Le caractère correspondant à la valeur ASCII spécifiée. L'argument Decimal est arrondi à la valeur Int inférieure la plus proche. Si l'argument n'est pas une valeur ASCII valide, le résultat est Undefined.
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 valeur ASCII valide, le résultat est Undefined.
Tableau Undefined.
Objet Undefined.
Null Undefined.
Autre valeur Undefined.

clientid()

Retourne l'ID du client MQTT en envoyant le message, ou une valeur n/a si le message n'a pas été pas envoyé via MQTT. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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, schéma de décodage)

Utilisez la fonction decode pour décoder une valeur codée. Si la chaîne décodée est un document JSON, un objet adressable est renvoyé. Sinon, la chaîne décodée est renvoyée sous forme de chaîne. La fonction renvoie 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 2016-03-23 et versions ultérieures.

value

Une valeur de chaîne ou l’une des expressions valides, telles que définies dans AWS IoT Référence 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 fonction decode de cette instruction SQL 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 valeur encoded_temp permet d’obtenir le document JSON valide suivant, qui permet à l’instruction SELECT de lire la valeur de température.

{ "temperature": 33 }

Le résultat de l’instruction SELECT dans cet exemple est affiché ici.

{ "temp": 33 }

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

Décodage de la charge utile des messages protobuf

Vous pouvez utiliser la fonction SQL 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 chaîne JSON 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 de proto, cette fonction décodera les chaînes codées en base64 au format 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 d’expression SQL utilisant la fonction SQL 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.

encode(value, encodingScheme)

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

value

Une des expressions valides, telles que définies dans la AWS IoT Référence SQL. Vous pouvez spécifier * pour encoder la charge utile dans son ensemble, qu'elle soit ou non au format 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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 ROLearn) partitionKeyValue sortKeyName sortKeyValue

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

ARN d’un rôle IAM 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'instruction SELECT suivante utilise la fonction get_dynamodb() pour récupérer l'emplacement de l'ID d'appareil spécifié :

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

Note
  • Vous pouvez appeler get_dynamodb() une fois au maximum par instruction SQL. L'appel de get_dynamodb() plusieurs fois dans une même instruction SQL entraîne la fin de la règle sans invoquer aucune action.

  • 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 des en-têtes MQTT5 suivants : contentType, payLoadFormatIndicator, responseTopic et correlationData 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 : codée en UTF-8 qui décrit le contenu du message de publication.

payLoadFormatIndicateur

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

Rubrique de réponse

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.

Données de corrélation

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 SQL suivant fait référence à l’un des en-têtes MQTT5 suivants : contentType, payLoadFormatIndicator, responseTopic et correlationData

SELECT *, get_mqtt_property('content_type') as contentType, get_mqtt_property('format_indicator') as payloadFormatIndicator, get_mqtt_property('response_topic') as responseTopic, get_mqtt_property('correlation_data') as correlationData FROM 'some/topic'

get_secret (SecreTid, SecretType, clé, 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 : Amazon Resource Name (ARN) ou nom convivial du secret à récupérer.

Type de secret

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

SecretString
  • Pour les secrets que vous créez sous forme d'objets JSON à l'aide des API AWS CLI, de la console 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 pas de valeur pour le paramètre key, cette fonction renvoie l’objet JSON complet.

  • Pour les secrets que vous créez en tant qu’objets non JSON à l’aide des API ou des 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 du paramètre key, 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 objet JSON stocké dans le champ SecretString 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’intégralité de l’objet JSON.

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

roleArn

Chaîne : un ARN de rôle avec des autorisations secretsmanager:GetSecretValue et secretsmanager:DescribeSecret.

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 appels d’API Secrets Manager depuis le moteur de règles pendant la fenêtre de mise en cache de 15 minutes.

Exemples :

Vous pouvez utiliser la fonction get_secret dans un en-tête d’authentification dans le cadre d’une action de règle HTTPS, comme dans l’exemple d’authentification par clé d’API 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 règle HTTPS, veuillez consulter HTTP.

get_thing_shadow(thingName, shadowName, roleARN)

Renvoie le shadow spécifié de l'objet spécifié. Pris en charge par SQL 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 : un ARN de rôle avec une autorisation iot:GetThingShadow.

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 sont un type d’en-tête de propriété pris en charge dans MQTT5.

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 présente le comportement SQL 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 SQL suivant fait référence aux propriétés utilisateur (un type d’en-tête de propriété MQTT5) 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 SQL 2015-10-08 et versions 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 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. Prise en charge par SQL 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 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 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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). Prise en charge par SQL 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 une valeur String à l'aide des conversions standard, puis la fonction LPAD 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.

ltrim(String)

Supprime tous les espaces de début (tabulations et espaces) de la valeur String fournie. Prise en charge par SQL 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(modelId, roleArn, record)

Utilisez cette machinelearning_predict fonction pour faire des prédictions en utilisant les données d'un message MQTT basé sur un SageMaker modèle Amazon. Prise en charge par SQL 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 permet d’accéder au modèle par rapport auquel la prévision doit être réalisée.

record

Les données à transmettre à l'API SageMaker Predict. Elles doivent être représentées sous la forme d'un objet JSON à couche unique. Si l'enregistrement est un objet JSON multiniveau, il est mis à plat en sérialisant ses valeurs. Par exemple, le code JSON suivant :

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

deviendrait :

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

La fonction renvoie un objet JSON dans 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 SageMaker pour faire des prédictions. La valeur doit être SGD.

predictedScores

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

predictedValue

La valeur prédite par SageMaker.

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. Prise en charge par SQL 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é. Prise en charge par SQL 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()

Retourne un UUID aléatoire de 16 octets. Prise en charge par SQL 2015-10-08 et versions ultérieures.

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

numbytes(String)

Renvoie le nombre d'octets dans l'encodage UTF-8 de la chaîne fournie. Les règles de conversion standard s'appliquent aux arguments non-String. Pris en charge par SQL 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 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. Prise en charge par SQL 2015-10-08 et versions ultérieures. Prise en charge par SQL 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
Client MQTT MQTT Certificat d'appareil X.509 Empreinte du certificat X.509
AWS IoT client MQTT pour console MQTT Utilisateur ou rôle IAM iam-role-id: nom de session
AWS CLI HTTP Utilisateur ou rôle IAM userid
AWS IoT SDK de l'appareil MQTT Certificat d'appareil X.509 Empreinte du certificat X.509
AWS IoT SDK de l'appareil MQTT terminé 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. Prise en charge par SQL 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 « $ ». Prise en charge par SQL 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 « $ ». Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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). Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL version 23/03/2016. 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"

Exemple SQL :

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 illustre comment ajouter la fonction sourceip () en tant que propriété utilisateur MQTT à 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 des messages IPv4 et IPv6. 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 (Chaîne, Entier) ou (Chaîne, Entier, Entier), 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. Prise en charge par SQL 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 version SQL spécifiée dans cette règle. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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 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 JDK11 Time.

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 Prise en charge par SQL 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. Prise en charge par SQL 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 suivi (UUID) du message MQTT ou une valeur Undefined si le message n'a pas été pas envoyé via MQTT. Prise en charge par SQL 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 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 la rubrique MQTT A/B.

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

Cette instruction SQL pour une action de règle de rubrique utilise la fonction transform() avec une valeur String de enrichArray. 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’instruction SQL 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 la rubrique MQTT A/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 instruction SQL pour une action de règle de rubrique utilise la fonction transform() avec une valeur String de enrichArray. 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 instruction SQL 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 fonction transform() peut être utilisée dans des clauses SELECT 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 la rubrique MQTT A/B.

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

Le Object pour cette fonction de transformation est l’objet renvoyé par l’instruction SELECT, qui contient les éléments a et b de l’objet data2 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’instruction SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 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. Prise en charge par SQL 2015-10-08 et versions ultérieures.

Exemples :

upper("hello") = "BONJOUR"

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