# SubStringCount Fonction de script et de graphique

SubStringCount() renvoie le nombre d'occurrences de la sous-chaîne spécifiée dans le texte de la chaîne d'entrée. Si aucun caractère ne correspond, la fonction renvoie 0.

SubStringCount(text, sub\_string)

entier

Arguments

| Argument | Description |
| --- | --- |
| text | Chaîne d'origine. |
| sub\_string | Chaîne qui peut figurer une ou plusieurs fois dans la chaîne d'entrée text. |

Exemple : Expressions de graphique

| Exemple | Résultat |
| --- | --- |
| `SubStringCount( 'abcdefgcdxyz', 'cd' )` | Renvoie `2` |
| `SubStringCount( 'abcdefgcdxyz', 'dc' )` | Renvoie `0` |

## Exemple - Les bases de SubStringCount

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubStringCount.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 `FruitSentence`.

Script de chargement

```
Example:
Load * inline [
FruitSentence
"I love eating an apple every day.Apple juice is great too!"
"Apple pie is my favorite dessert. I also enjoy apple jam."
"There is an apple and a banana on the table."
"I don't like apples as much as oranges."
"An apple a day keeps the doctor away, but two apples are even better!"
];
```

Résultats

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

* ` FruitSentence
                                   `

Créez la dimension calculée suivante :

* `=SubStringCount(FruitSentence, 'apple')` pour calculer le nombre de fois où le terme `apple` apparaît dans `FruitSentence`.

Results table

| FruitSentence | SubStringCount(FruitSentence, 'apple') |
| --- | --- |
| An apple a day keeps the doctor away, but two apples are even better! | 2 |
| Apple pie is my favorite dessert. I also enjoy apple jam. | 1 |
| I don't like apples as much as oranges. | 1 |
| I love eating an apple every day. Apple juice is great too! | 1 |
| There is an apple and a banana on the table. | 1 |

Le tableau est trié sur la dimension `FruitSentence` dans l'ordre croissant. La fonction `SubStringCount` renvoie le nombre de fois où le terme `apple` apparaît dans chaque phrase. Par exemple, la première phrase renvoie `2`, car le terme apparaît deux fois dans la phrase. Dans les deuxième et quatrième phrases, la fonction ignore le terme `Apple`, car il ne correspond pas à la casse du terme recherché `apple`.

Note ConseilPour effectuer une recherche insensible à la casse, vous pouvez commencer par convertir votre chaîne d'entrée en majuscules ou en minuscules, puis utiliser la fonction `SubStringCount` sur le résultat. Par exemple, pour rechercher toutes les occurrences du terme apple, quelle que soit la casse, utilisez l'expression de mesure suivante : `=SubStringCount(Upper(FruitSentence),'APPLE')`. L'expression utilise la fonction `SubStringCount` avec la fonction `Upper` pour convertir la chaîne toute entière en caractères majuscules, puis recherche le terme `APPLE`.

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

#### Script de chargement

Le code suivant montre comment utiliser la fonction dans un script de chargement. Cet exemple comprend une instruction Load antérieure qui utilise la fonction `SubStringCount` avec la fonction `Upper` pour convertir la chaîne toute entière en caractères majuscules, puis recherche le terme `APPLE`.

```
Example:
Load *,
SubStringCount(Upper(FruitSentence),'APPLE') as SubStringCount_APPLE;
Load * inline [
FruitSentence
"I love eating an apple every day. Apple juice is great too!"
"Apple pie is my favorite dessert. I also enjoy apple jam."
"There is an apple and a banana on the table."
"I don't like apples as much as oranges."
"An apple a day keeps the doctor away, but two apples are even better!"
];
```

Tableau de résultats

| FruitSentence | SubStringCount\_APPLE |
| --- | --- |
| I love eating an apple every day. Apple juice is great too! | 2 |
| Apple pie is my favorite dessert. I also enjoy apple jam. | 2 |
| There is an apple and a banana on the table. | 1 |
| I don't like apples as much as oranges. | 1 |
| An apple a day keeps the doctor away, but two apples are even better! | 2 |

## Exemple - Scénario SubStringCount

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

#### Expression de graphique

Vue d'ensemble

Un jeu de données de produits fruitiers contient un champ avec des descriptions de produits. Cet exemple calcule le nombre d'occurrences des noms de fruits suivants dans chaque description : apple, banana et orange.

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 `ProductDescription`.

Script de chargement

```
Example:
Load * inline [
ProductDescription
"Fresh apple and banana smoothie."
"Organic apple, banana, and orange juice. Great for breakfast."
"A refreshing orange soda made with real orange juice."
"Banana chips with apple and cinnamon flavor."
"Delicious apple pie with a hint of cinnamon and vanilla."
"Tropical banana and orange mix for smoothies."
];
```

Résultats

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

* `ProductDescription`

Créez les dimensions calculées suivantes :

* `=SubStringCount(ProductDescription, 'apple')` pour calculer le nombre d'occurrences du terme `apple` dans la chaîne `ProductDescription`.

* `=SubStringCount(ProductDescription, 'banana')` pour calculer le nombre d'occurrences du terme `banana` dans la chaîne `ProductDescription`.

* `=SubStringCount(ProductDescription, 'orange')` pour calculer le nombre d'occurrences du terme `orange` dans la chaîne `ProductDescription`.

Results table

| ProductDescription | SubStringCount(ProductDescription, 'apple') | SubStringCount(ProductDescription, 'banana') | SubStringCount(ProductDescription, 'orange') |
| --- | --- | --- | --- |
| A refreshing orange soda made with real orange juice. | 0 | 0 | 2 |
| Banana chips with apple and cinnamon flavor. | 1 | 0 | 0 |
| Delicious apple pie with a hint of cinnamon and vanilla. | 1 | 0 | 0 |
| Fresh apple and banana smoothie. | 1 | 1 | 0 |
| Organic apple, banana, and orange juice. Great for breakfast. | 1 | 1 | 1 |
| Tropical banana and orange mix for smoothies. | 0 | 1 | 1 |

La sortie de la fonction `SubStringCount` parvient à renvoyer le nombre d'instances de chaque sous-chaîne (`apple, banana, orange`) dans la description de produit. Par exemple, dans la première description, la fonction renvoie 2, car il existe deux occurrences du terme `orange`. L'argument `sub_string` est sensible à la casse. Ainsi, dans la deuxième description, la fonction ne compte pas le terme `Banana`, parce qu'il ne correspond pas à la sous-chaîne `banana` dans l'expression de mesure.

Note ConseilPour effectuer une recherche insensible à la casse, vous pouvez commencer par convertir votre chaîne d'entrée en majuscules ou en minuscules, puis utiliser la fonction `SubStringCount` sur le résultat. Par exemple, pour rechercher toutes les occurrences du terme apple, quelle que soit la casse, utilisez l'expression de mesure suivante : `=SubStringCount(Upper(ProductDescription),'APPLE')`. L'expression utilise la fonction `SubStringCount` avec la fonction `Upper` pour convertir la chaîne toute entière en caractères majuscules, puis recherche le terme `APPLE`.

## Exemple - Scénario SubStringCount analysant des données imbriquées

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

#### Expression de graphique

Vue d'ensemble

Un jeu de données d'enregistrements IT contient une liste de numéros d'ID et de catégories de modifications. Dans la table de données, le champ Categories est dérivé d'une hiérarchie à plusieurs niveaux qui répertorie la catégorie parente supérieure suivie de toutes les sous-catégories, par exemple Software &gt; Program &gt; Patch. Ce scénario montre comment sélectionner la dernière valeur, ou valeur de feuille/terminale, dans cette hiérarchie de catégories irrégulière en utilisant une combinaison des fonctions SubStringCount et SubField.

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.

* Champs suivants dans la table de données :

  * ChangeID contient l'ID de modification d'origine à traiter.

  * Categories contient une liste des catégories de modifications. Les catégories sont séparées par des points-virgules et répertoriées dans un ordre hiérarchique de gauche à droite, en commençant par la catégorie parente supérieure jusqu'à la sous-catégorie la plus détaillée.

Script de chargement

```
Example:
Load * inline [
ChangeID,Categories
CHG00100,Software;Program;Patch
CHG00101,Hardware;Server
CHG00102,Hardware;Network;Router
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* ChangeID

* Categories

Créez les dimensions calculées suivantes :

* =SubStringCount(Categories,';')+1 pour calculer le nombre de niveaux de catégories dans la hiérarchie des modifications.

* =SubField(Categories, ';' ,SubStringCount(Categories,';')+1) pour extraire la catégorie la plus à droite dans la hiérarchie des modifications.

Results table

| ChangeID | Categories | ​SubStringCount(Categories,';')+1 | SubField(Categories, ';' ,SubStringCount(Categories,';')+1) |
| --- | --- | --- | --- |
| CHG00100 | Software;Program;Patch | 3 | Patch |
| CHG00101 | Hardware;Server | 2 | Server |
| CHG00102 | Hardware;Network;Router | 3 | Router |

Dans cet exemple, la fonction SubStringCount est imbriquée dans la fonction SubField. La première dimension calculée, SubStringCount(), calcule le nombre de valeurs imbriquées dans le champ Categories. Cela est déterminé en comptant le nombre de points-virgules ';' et en ajoutant 1 au résultat. Cette sortie est ensuite injectée comme troisième paramètre de la fonction SubField pour extraire la catégorie la plus à droite imbriquée dans le champ Categories.

Par exemple, examinez les résultats de l'entrée ChangeID CHG00100. Dans la première dimension calculée, SubStringCount est égal à 2. L'expression ajoute ensuite 1 à ce résultat pour déterminer que le champ Categories a trois valeurs de catégorie imbriquées, Software, Program et Patch. La fonction SubField, dans la deuxième dimension calculée, utilise ensuite ce résultat pour extraire la troisième catégorie, Patch.