# Index Fonction de script et de graphique

Index() recherche dans une chaîne la position de départ de la nième occurrence d'une sous-chaîne fournie. Un troisième argument facultatif fournit la valeur de n, qui est égale à 1 s'il est omis. Une valeur négative permet de lancer la recherche en commençant par la fin de la chaîne. Les positions dans la chaîne sont numérotées de gauche à droite à partir de 1.

Syntaxe :

Index(text, substring[, count])

Type de données renvoyé : entier

Arguments

| Argument | Description |
| --- | --- |
| text | Chaîne d'origine. |
| substring | Chaîne de caractères à rechercher dans text.<br><br>Note InformationsSi la sous-chaîne n'existe pas dans le texte, l'index renvoie 0. |
| count | Définit l'occurrence de substring à rechercher. Par exemple, une valeur de 2 recherche la deuxième occurrence. Une valeur négative commence par la fin de la chaîne. |

Exemple : Expressions de graphique

| Exemple | Résultat |
| --- | --- |
| `Index( 'abcdefg', 'cd' )` | Renvoie `3` |
| `Index(  'abcdabcd', 'b', 2 )` | Renvoie `6` (la deuxième occurrence de `b`) |
| `Index( 'abcdabcd', 'b',-2 )` | Renvoie `2` (la deuxième occurrence de `b` en commençant par la fin) |
| `Left( Date, Index( Date,'-') -1` ) where `Date = 1997-07-14` | Renvoie `1997` |
| `Mid( Date, Index( Date, '-', 2 ) -2, 2 )` where `Date` = `1997-07-14` | Renvoie `07` |
| `Index( 'abc', 'x' )` | Renvoie `0` (`x` n'existe pas dans la chaîne `abc`) |
| `Index( 'abc', 'a', 2 )` | Renvoie `0` (il n'existe pas de deuxième occurrence de `a`) |

## Exemple - Les bases de Index

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Index.htm)

#### Expression de graphique

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données chargé dans une table de données appelée `Example`.

* Champ dans la table de données portant le nom `InputString`.

Script de chargement

```
Example:
Load * inline [
InputString
abcdefg
abcdabcd ];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension :

* ` InputString
                                   `

Créez les dimensions calculées suivantes :

* `=Index(InputString, 'cd')`

* `=Index(InputString, 'e')`

* `=Index(InputString, 'b', -1)`

Tableau de résultats

| InputString | Index(InputString, 'cd') | Index(InputString, 'e') | Index(InputString, 'b', -1) |
| --- | --- | --- | --- |
| abcdabcd | 3 | 0 | 6 |
| abcdefg | 3 | 5 | 2 |

La première ligne avec la chaîne `abcdabcd` renvoie :

* `3` - la première occurrence de `cd`

* `0` - parce que `e` n'est pas trouvé dans la chaîne

* `6` - la première occurrence de `b` à partir de la fin de la chaîne

La deuxième ligne avec la chaîne `abcdefg` renvoie :

* `3` - la première occurrence de `cd`

* `5` - la première occurrence de `e`

* `2` - la première occurrence de `b` à partir de la fin de la chaîne

Note InformationsUn paramètre `count` négatif analyse la chaîne en sens inverse. Toutefois, la position renvoyée est toujours indiquée de gauche à droite, même en cas d'analyse en sens inverse.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Index.htm)

#### Script de chargement

Le code suivant montre comment utiliser la fonction dans un script de chargement.

```
Example:
Load
*,
index(String, 'cd') as Index_CD,               // returns 3  in Index_CD
index(String, 'b') as Index_B,                // returns 2 in Index_B
index(String, 'b', -1) as Index_B2;           // returns 2 or 6 in Index_B2
Load * inline [
String
abcdefg
abcdabcd ];
```

Tableau de résultats

| String | Index\_CD | Index\_B | Index\_B2 |
| --- | --- | --- | --- |
| abcdefg | 3 | 2 | 2 |
| abcdabcd | 3 | 2 | 6 |

## Exemple - Scénario Index

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Index.htm)

#### Expression de graphique

Vue d'ensemble

Un centre d'assistance à la clientèle dispose d'un jeu de données contenant des lignes d'objet de messages e-mail des clients. Le centre d'assistance souhaite catégoriser ces e-mails en fonction des mots clés qui apparaissent dans la ligne d'objet, par exemple, `Refund`, `Complaint` et `Technical Issue`. Les lignes d'objet sont stockées dans un champ du jeu de données appelé `EmailSubject`.

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données chargé dans une table de données appelée `Example`.

* Champ dans la table de données portant le nom `EmailSubject`.

Script de chargement

```
Example:
Load * inline [
EmailSubject
Request for a Refund - Order 12345
Technical Issue with Product XYZ
Complaint about delivery service
Follow-up on Refund Request
Technical Issue not resolved
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension :

* ` EmailSubject
                                   `

Créez la dimension calculée suivante :

* `=If(Index(EmailSubject, 'Refund') > 0, 'Refund', 'Other')` pour calculer le texte de l'objet d'e-mail associé aux remboursements.

Résultats

| EmailSubject | If(Index(EmailSubject, 'Refund') &gt; 0, 'Refund', 'Other') |
| --- | --- |
| Complaint about delivery service | Other |
| Follow-up on Refund Request | Refund |
| Request for a Refund - Order 12345 | Refund |
| Technical Issue not resolved | Other |
| Technical Issue with Product XYZ | Other |

La sortie de la fonction `Index` a correctement identifié toutes les lignes d'objet contenant la chaîne `Refund`. Cet exemple montre comment analyser et catégoriser des données à l'aide de fonctions imbriquées et apporter de la valeur aux utilisateurs.