

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
<a name="iot-sql-functions"></a>

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

Les fonctions externes suivantes sont facturées de manière équivalente à celle d'une action de règle : [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-func-aws-lambda), [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-dynamodb](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-dynamodb), et [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-thing-shadow](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-function-get-thing-shadow). La [https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-decode-base64](https://docs.aws.amazon.com//iot/latest/developerguide/iot-sql-functions.html#iot-sql-decode-base64)fonction ne vous est également facturée que lorsque vous [décodez un message Protobuf](https://docs.aws.amazon.com//iot/latest/developerguide/binary-payloads.html#binary-payloads-protobuf) en JSON. Pour plus de détails, consultez la [page de AWS IoT Core tarification](https://aws.amazon.com/iot-core/pricing/).

## abs(Decimal)
<a name="iot-func-abs"></a>

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()
<a name="iot-sql-function-accountid"></a>

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)
<a name="iot-func-acos"></a>

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)
<a name="iot-func-asin"></a>

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)
<a name="iot-func-atan"></a>

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)
<a name="iot-func-atan2"></a>

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\$1lambda(functionArn, inputJson)
<a name="iot-func-aws-lambda"></a>

 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` ou`source-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](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html).

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 « \$1 », 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)
<a name="iot-func-bitand"></a>

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)
<a name="iot-func-bitor"></a>

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)
<a name="iot-func-xbitor"></a>

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)
<a name="iot-func-bitnot"></a>

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()
<a name="iot-sql-function-cast"></a>

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 est`Undefined`. Prise en charge par SQL 2015-10-08 et versions ultérieures. Format : fonte (*value*s*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.  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 : ^-?\$1d\$1(\$1.\$1d\$1)?((?i)E-?\$1d\$1)?\$1. « 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 : ^-?\$1d\$1(\$1.\$1d\$1)?((?i)E-?\$1d\$1)?\$1. « 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\$1nonzero\$1value = True. | 
| Decimal | 0 = False, any\$1nonzero\$1value = 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é 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)
<a name="iot-func-ceil"></a>

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)
<a name="iot-func-chr"></a>

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()
<a name="iot-sql-function-clientid"></a>

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()
<a name="iot-func-concat"></a>

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\$1 |  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)
<a name="iot-func-cos"></a>

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)
<a name="iot-func-cosh"></a>

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)
<a name="iot-sql-decode-base64"></a>

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](iot-sql-reference.md), 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
<a name="iot-sql-decode-example"></a>

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
<a name="iot-sql-decode-protobuf"></a>

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.](binary-payloads.md#binary-payloads-protobuf)

**Important**  
Si vous omettez `source‐arn` ou `source‐account` si vous définissez des autorisations pour un AWS IoT principal, n'importe qui Compte AWS peut invoquer votre fonction de décodage par le biais d'autres AWS IoT règles. Pour sécuriser votre fonction, consultez les [politiques relatives aux compartiments](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucket-policies.html) dans le *guide de l'utilisateur d'Amazon Simple Storage Service*.

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)
<a name="iot-sql-encode-payload"></a>

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](iot-sql-reference.md). Vous pouvez spécifier \$1 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)
<a name="iot-func-endswith"></a>

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)
<a name="iot-func-exp"></a>

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)
<a name="iot-func-floor"></a>

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
<a name="iot-sql-function-get"></a>

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. | 
| String | 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\$1dynamodb (TableName,,,,, partitionKeyName ROLearn) partitionKeyValue sortKeyName sortKeyValue
<a name="iot-sql-function-get-dynamodb"></a>

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](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey).

partitionKeyValue  
Valeur de la clé de partition utilisée pour identifier un enregistrement. Pour plus d’informations, veuillez consulter [Clés DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey).

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](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey).

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](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey).

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:us-east-1:123456789012: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.

## get\$1mqtt\$1property (nom)
<a name="iot-sql-function-get-mqtt-property"></a>

Fait référence à l'un MQTT5 des en-têtes 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`, et`correlation_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. Le sujet 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\$1mqtt\$1property("format\$1indicator") | Chaîne (UNSPECIFIED\$1BYTES ou \$1DATA) UTF8 | Chaîne (UNSPECIFIED\$1BYTES) | 
| get\$1mqtt\$1property("content\$1type") | String | Non défini | 
| get\$1mqtt\$1property("response\$1topic") | String | Non défini | 
| get\$1mqtt\$1property("correlation\$1data") | Chaîne codée en base64 | Non défini | 
| get\$1mqtt\$1property("some\$1invalid\$1name") | Non défini | Non défini | 

L'exemple de règles SQL suivant fait référence à l'un MQTT5 des en-têtes 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\$1or\$1default (expression, DefaultValue)
<a name="iot-sql-function-get-or-default"></a>

Renvoie la valeur par défaut dans le deuxième paramètre s'il est spécifié ou renvoie undefined, lorsque l'expression du premier paramètre renvoie null, undefined ou échoue. Pris en charge par SQL 2016-03-23 et versions ultérieures.

**Important**  
`get_or_default`ne prend pas en charge les charges utiles non JSON directement telles quelles. Si vous utilisez une charge utile autre que JSON, utilisez les fonctions `encode` or`decode`.

`get_or_default()` accepte les paramètres suivants :

expression  
Toute expression valide contenant[Types de données](iot-sql-data-types.md),[Fonctions](#iot-sql-functions),[Littéraux](iot-sql-literals.md), [Variables](iot-sql-set.md#iot-sql-set-usage)[Requêtes d'objets imbriqués](iot-sql-nested-queries.md), ou[Extensions JSON](iot-sql-json.md). 

defaultValue  
(Facultatif) Toute expression valide contenant [Types de données](iot-sql-data-types.md)[Fonctions](#iot-sql-functions),[Littéraux](iot-sql-literals.md),[Requêtes d'objets imbriqués](iot-sql-nested-queries.md), [des variables](iot-sql-set.md#iot-sql-set-usage) ou[Extensions JSON](iot-sql-json.md). Il s'agit de la valeur à renvoyer chaque fois que le premier argument renvoie null, undefined ou échoue.   
Les fonctions qui extraient des données à partir de ressources appartenant au client, telles que get\$1secret, get\$1dynamodb, aws\$1lambda, get\$1thing\$1shadow, decode-protobuf et machinelearning\$1predict, ne sont pas autorisées pour le paramètre DefaultValue.

Le tableau suivant indique les arguments de fonction acceptables pour chaque argument et leurs sorties associées :


| Premier argument | Deuxième argument | Output | 
| --- | --- | --- | 
| Évaluation réussie | N'importe quelle valeur ou non spécifiée | La valeur du premier argument. | 
| Non défini, nul ou échec | Toute valeur, y compris Undefined ou Null | La valeur du deuxième argument. | 
| Non défini, nul ou échec | non précisé | Undefined | 

**Exemples :**

Exemple 1 :

L'exemple suivant fournit une valeur DefaultValue en cas d'échec d'une table ou d'une requête DynamoDB :

```
SELECT 
    device_id,
    get_or_default(
        get_dynamodb("DeviceConfig", "deviceId", nonExistentId, "arn:aws:iam::123456789012:role/ROLE_NAME"),
        {"mode": "standard", "timeout": 30, "enabled": true }
    ) as config
FROM 'device/telemetry'
```

Exemple 2 :

L'exemple suivant fournit une valeur par défaut sûre « UNKNOWN » si le statut n'est pas défini :

```
SELECT 
  get_or_default( CASE status
    WHEN 'active' THEN 'GOOD'
    WHEN 'inactive' THEN 'BAD'/
    ELSE 'UNKNOWN'
  END, 'UNKNOWN') as status_category
FROM 'topic/subtopic'
```

Exemple 3 :

L'exemple suivant montre comment vous pouvez également utiliser get\$1or\$1default avec un seul paramètre. Cela est utile dans les scénarios où vous n'avez peut-être pas de valeur par défaut claire, mais où vous ne voulez pas que l'exécution de votre règle échoue.

```
SELECT 
  get_dynamodb("DeviceConfig", "deviceId", nonExistentId, "arn:aws:iam::123456789012:role/ROLE_NAME") as config
FROM 'device/telemetry'
```

Si la recherche DynamoDB échoue, l'exécution de la règle échouera et aucune action ne sera exécutée. Si le code SQL suivant est utilisé à la place :

```
SELECT 
  get_or_default(get_dynamodb("DeviceConfig", "deviceId", nonExistentId, "arn:aws:iam::123456789012:role/ROLE_NAME")) as config
FROM 'device/telemetry'
```

L'instruction get\$1or\$1default sera évaluée à. Dans cet exemple`Undefined`, l'instruction SELECT sera globalement évaluée à `{}` et toutes les actions relatives aux règles seront tentées.

**Important**  
Nous vous recommandons de suivre les meilleures pratiques suivantes pour garantir la sécurité lors de l'utilisation de cette fonction :  
Évitez d'utiliser des secrets codés en dur dans les définitions de règles, y compris les valeurs par défaut
Utilisation AWS Secrets Manager pour gérer des informations sensibles

## get\$1registry\$1data (RegistryAPI, ThingName, ROLearn)
<a name="iot-sql-function-get-registry-data"></a>

Récupère les AWS IoT données du registre des objets dans une AWS IoT règle. Vous pouvez lire les données du registre (telles que les attributs, le type d'objet et les groupes d'objets auxquels appartient un appareil) et utiliser ces informations pour filtrer, enrichir ou acheminer les messages de manière dynamique. Pris en charge par SQL 2016-03-23 et versions ultérieures.

`get_registry_data()` accepte les paramètres suivants :

API de registre  
L'API de registre appelée. Les valeurs valides sont `DescribeThing` et `ListThingGroupsForThing`. Ces valeurs doivent être des chaînes constantes.

thingName  
Chaîne : nom de l'objet dont vous souhaitez récupérer les données de registre.

roleArn  
Chaîne : un ARN de rôle avec une `iot:DescribeThing` and/or `iot:ListThingGroupsForThing` autorisation d'autorisation basée sur l'API appelée.

Le format de réponse de la `get_registry_data` fonction est le même que celui de l'API de registre appelée. Pour en savoir plus, veuillez consulter [DescribeThing](https://docs.aws.amazon.com//iot/latest/apireference/API_DescribeThing.html) et [ListThingGroupsForThing](https://docs.aws.amazon.com//iot/latest/apireference/API_ListThingGroupsForThing.html) APIs.

Exemple :

Vous pouvez récupérer des informations sur le type d'objet pour filtrer les messages d'événements du AWS IoT Core cycle de vie pour les objets (le nom de l'objet correspondant à l'identifiant du client MQTT) où se trouve le type d'objet. `testenv`

```
SELECT * 
FROM '$aws/events/lifecycle/+' 
WHERE 
    get_registry_data("DescribeThing",clientId,[roleArn]).thingTypeName='testenv'
```

Exemple :

Vous pouvez récupérer les attributs d'objet d'un appareil avec un nom d'objet `sensor1` pour tous les messages envoyés par son périphérique passerelle`gateway1`.

```
SELECT *, get_registry_data("DescribeThing","sensor1",[roleArn]).attributes.temperature_threhold AS device1_tempthreshold 
FROM home1/gateway1/sensor1/#
```

**Note**  
Vous pouvez appeler `get_registry_data()` un maximum d'une fois par instruction SQL et par modèle de substitution pour les actions et les actions d'erreur.

## get\$1secret (SecreTid, SecretType, clé, roLearn)
<a name="iot-sql-function-get-secret"></a>

Récupère la valeur du champ chiffré `SecretString` ou `SecretBinary` de la version actuelle d’un secret dans [AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/). Pour plus d'informations sur la création et la gestion de secrets [CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html), consultez les [UpdateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_UpdateSecret.html)sections, et [PutSecretValue](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_PutSecretValue.html).

`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` \$1 `SecretBinary`.    
SecretString  
+ Pour les secrets que vous créez sous forme d'objets JSON à l'aide de APIs, de AWS CLI, 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 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 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](https-rule-action.md).

## get\$1thing\$1shadow (ThingName, ShadowName, RolEARN)
<a name="iot-sql-function-get-thing-shadow"></a>

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\$1user\$1properties () userPropertyKey
<a name="iot-sql-function-get-user-properties"></a>

Références aux propriétés utilisateur, qui est 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\$1user\$1properties (« une clé ») | Tableau de chaînes | ['some value', 'value with duplicate key'] | 
| get\$1user\$1properties (« une clé ») | Tableau de chaînes | ['a different value'] | 
| get\$1user\$1properties ( ) | Tableau d’objets de paire clé-valeur | [\$1'"some key": "some value"'\$1, \$1"other key": "a different value"\$1, \$1"some key": "value with duplicate key"\$1] | 
| get\$1user\$1properties (« 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 MQTT5 propriété) dans la charge utile :

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

## Fonctions de hachage
<a name="iot-sql-function-hash"></a>

 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)
<a name="iot-sql-function-indexof"></a>

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()
<a name="iot-sql-function-isNull"></a>

Retourne la valeur true si la valeur de l'argument est `Null`. Pris en charge par SQL 2016-03-23 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()
<a name="iot-sql-function-isUndefined"></a>

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)
<a name="iot-sql-function-length"></a>

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)
<a name="iot-func-nln"></a>

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)
<a name="iot-func-log"></a>

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)
<a name="iot-func-lower"></a>

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"])` = "[\$1"bonjour\$1"]".

## lpad(String, Int)
<a name="iot-func-lpad"></a>

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)
<a name="iot-func-ltrim"></a>

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\$1predict(modelId, roleArn, record)
<a name="iot-sql-function-machine-learning"></a>

Utilisez cette `machinelearning_predict` fonction pour faire des prédictions en utilisant les données d'un message MQTT basé sur un modèle Amazon SageMaker AI. 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 AI 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 l' SageMaker IA 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 l' SageMaker IA.

## mod(Decimal, Decimal)
<a name="iot-func-mod"></a>

Renvoie le reste résultant de la division du premier argument par le deuxième argument. Équivalent à [remainder(Decimal, Decimal)](#iot-func-remainder). 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 | Output | 
| --- | --- | --- | 
| 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
<a name="iot-func-nanvl"></a>

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 | Output | 
| --- | --- | --- | 
| 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()
<a name="iot-sql-function-newuuid"></a>

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)
<a name="iot-sql-function-numbytes"></a>

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\$1time(String, Long[, String])
<a name="iot-sql-function-parse-time"></a>

Utilisez cette `parse_time` fonction pour formater un horodatage dans un format lisible par l'homme date/time . Pris en charge par SQL 2016-03-23 et versions ultérieures. Pour convertir une chaîne d’horodatage en millisecondes, veuillez consulter [time\$1to\$1epoch (Chaîne, Chaîne)](#iot-sql-function-time-to-epoch).

La fonction `parse_time` attend les arguments suivants :

pattern  
(String) Un date/time modèle qui suit les formats [Joda-Time](http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html). 

timestamp  
(Long) Heure à formater en millisecondes depuis l'époque Unix. Voir la fonction [timestamp()](#iot-function-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](http://joda-time.sourceforge.net/timezones.html). 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)
<a name="iot-func-power"></a>

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 | Output | 
| --- | --- | --- | 
| 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()
<a name="iot-sql-function-principal"></a>

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:session-name | 
| 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()
<a name="iot-sql-function-rand"></a>

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\$1matches(String, String)
<a name="iot-func-regex-matches"></a>

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\$1replace(String, String, String)
<a name="iot-func-regex-replace"></a>

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 « \$1 ». 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\$1substr(String, String)
<a name="iot-func-regex-substr"></a>

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 « \$1 ». 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)
<a name="iot-func-remainder"></a>

Renvoie le reste résultant de la division du premier argument par le deuxième argument. Équivalent à [mod(Decimal, Decimal)](#iot-func-mod). 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 | Output | 
| --- | --- | --- | 
| 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)
<a name="iot-func-replace"></a>

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)
<a name="iot-func-rpad"></a>

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)
<a name="iot-func-round"></a>

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)
<a name="iot-func-rtrim"></a>

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)
<a name="iot-func-sign"></a>

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)
<a name="iot-func-sin"></a>

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)
<a name="iot-func-sinh"></a>

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()
<a name="iot-function-sourceip"></a>

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](https://docs.aws.amazon.com//iot/latest/developerguide/iot-substitution-templates.html) dans une action [DynamoDB](https://docs.aws.amazon.com//iot/latest/developerguide/dynamodb-rule-action.html).

```
{
	"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](https://docs.aws.amazon.com//iot/latest/developerguide/iot-substitution-templates.html).

```
{
	"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](https://docs.aws.amazon.com//iot/latest/developerguide/iot-basic-ingest.html). 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 le[biais de Republier l’action.](republish-rule-action.md).

## substring(String, Int[, Int])
<a name="iot-func-substring"></a>

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`. 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\$1version()
<a name="iot-sql-function-sql-version"></a>

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)
<a name="iot-func-sqrt"></a>

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)
<a name="iot-func-startswith"></a>

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)
<a name="iot-func-tan"></a>

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)
<a name="iot-func-tanh"></a>

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\$1to\$1epoch (Chaîne, Chaîne)
<a name="iot-sql-function-time-to-epoch"></a>

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\$1time(String, Long[, String])](#iot-sql-function-parse-time).

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 date/time modèle qui suit les [formats JDK11 temporels](http://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/time/format/DateTimeFormatter.html).

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()
<a name="iot-function-timestamp"></a>

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)
<a name="iot-function-topic"></a>

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](iot-basic-ingest.md) 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()
<a name="iot-sql-function-traceid"></a>

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)
<a name="iot-func-transform"></a>

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.

String  
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
<a name="iot-func-transform-example1"></a>

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
<a name="iot-func-transform-example2"></a>

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](#iot-func-transform-example1).

```
{
    "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
<a name="iot-func-transform-example3"></a>

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)
<a name="iot-func-trim"></a>

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)
<a name="iot-func-trunc"></a>

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)
<a name="iot-sql-function-upper"></a>

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"])` = "[\$1"BONJOUR\$1"]"