# SubStringCount - Funzione per script e grafici

SubStringCount() restituisce il numero di occorrenze della sottostringa specificata nel testo della stringa di input. In mancanza di corrispondenze, viene restituito 0.

Sintassi:

SubStringCount(text, sub\_string)

Tipo di dati restituiti: numero intero

Argomenti

| Argomento | Descrizione |
| --- | --- |
| text | La stringa originale. |
| sub\_string | Una stringa che può ricorrere una o più volte all'interno della stringa di input text. |

Esempio: espressioni del grafico

| Esempio | Risultato |
| --- | --- |
| `SubStringCount( 'abcdefgcdxyz', 'cd' )` | Restituisce `2` |
| `SubStringCount( 'abcdefgcdxyz', 'dc' )` | Restituisce `0` |

## Esempio: principi fondamentali della funzione SubStringCount

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

#### Espressione del grafico

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che viene caricato in una tabella dati chiamata `Example`.

* Un campo della tabella dati denominata `FruitSentence`.

Script di caricamento

```
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!"
];
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:

* ` FruitSentence
                                   `

Creare la seguente dimensione calcolata:

* `=SubStringCount(FruitSentence, 'apple')`, per calcolare quante volte la parola `apple` è presente in `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 |

La tabella è ordinata in ordine crescente in base alla dimensione `FruitSentence`. La funzione `SubStringCount` restituisce il numero di volte in cui la parola `apple` ricorre in ogni frase. Ad esempio, la prima frase restituisce `2`, perché la parola ricorre due volte nella frase. Nella seconda e quarta frase, la funzione ignora la parola `Apple` perché l'utilizzo delle maiuscole e minuscole non corrisponde al termine di ricerca `apple`.

Nota di suggerimentoPer effettuare una ricerca senza distinzione tra maiuscole e minuscole, è possibile convertire prima la stringa di ricerca in caratteri maiuscoli o minuscoli, e quindi utilizzare la funzione `SubStringCount` sul risultato. Per esempio, per cercare tutte le occorrenze della parola apple, indipendentemente dall'utilizzo delle maiuscole e minuscole, utilizzare la seguente espressione di misura: `=SubStringCount(Upper(FruitSentence),'APPLE')`. L'espressione utilizza la funzione `SubStringCount` con la funzione `Upper` per convertire l'intera stringa in caratteri maiuscoli, quindi cerca la parola `APPLE`.

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

#### Script di caricamento

Il codice seguente mostra come utilizzare la funzione in uno script di caricamento. In questo esempio è incluso un carico precedente che utilizza la funzione `SubStringCount` con la funzione `Upper` per convertire l'intera stringa in caratteri in maiuscolo, e poi cerca la parola `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!"
];
```

Tabella dei risultati

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

## Esempio: scenario per l'applicazione della funzione SubStringCount

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

#### Espressione del grafico

Panoramica

Un set di dati con i prodotti a base di frutta contiene un campo con le descrizioni dei prodotti. Nel seguente esempio si calcola il numero di volte in cui i seguenti nomi di frutta ricorrono in ogni descrizione: mela, banana o arancia.

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che viene caricato in una tabella dati chiamata `Example`.

* Un campo della tabella dati denominata `ProductDescription`.

Script di caricamento

```
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."
];
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:

* `ProductDescription`

Creare le seguenti dimensioni calcolate:

* `=SubStringCount(ProductDescription, 'apple')`, per calcolare il numero di occorrenze della parola `apple` nella stringa `ProductDescription`.

* `=SubStringCount(ProductDescription, 'banana')`, per calcolare il numero di occorrenze della parola `banana` nella stringa `ProductDescription`.

* `=SubStringCount(ProductDescription, 'orange')`, per calcolare il numero di occorrenze della parola `orange` nella stringa `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 |

L'output della funzione `SubStringCount` restituisce con successo il numero di istanze in cui ogni sottostringa (`apple, banana, orange`) è presente nella descrizione del prodotto. Per esempio, nella prima descrizione, la funzione restituisce 2 perché ci sono due istanze della parola `orange`. L'argomento `sub_string` distingue tra le maiuscole e minuscole quindi, nella seconda descrizione, la funzione non conteggia la parola `Banana` perché non corrisponde alla sottostringa `banana` nell'espressione di misura.

Nota di suggerimentoPer effettuare una ricerca senza distinzione tra maiuscole e minuscole, è possibile convertire prima la stringa di ricerca in caratteri maiuscoli o minuscoli, e quindi utilizzare la funzione `SubStringCount` sul risultato. Per esempio, per cercare tutte le occorrenze della parola apple, indipendentemente dall'utilizzo delle maiuscole e minuscole, utilizzare la seguente espressione di misura: `=SubStringCount(Upper(ProductDescription),'APPLE')`. L'espressione utilizza la funzione `SubStringCount` con la funzione `Upper` per convertire l'intera stringa in caratteri maiuscoli, quindi cerca la parola `APPLE`.

## Esempio: scenario per l'applicazione della funzione SubStringCount scenario con analisi dei dati annidati

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

#### Espressione del grafico

Panoramica

Un set di dati con i nomi di prodotti IT contiene un elenco di numeri ID e categorie di modifica. Nella tabella dati, il campo Categories viene derivato da una gerarchia multilivello che elenca la categoria principale seguita da tutte le sottocategorie, ad esempio Software &gt; Programma &gt; Patch. Questo scenario mostra come scegliere l'ultimo valore, o valore leaf, da questa gerarchia irregolare di categorie, utilizzando una combinazione delle funzioni SubStringCount e SubField.

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che viene caricato in una tabella dati chiamata Example.

* I seguenti campi nella tabella dati:

  * ChangeID contiene l'ID della modifica originale da elaborare.

  * Categories contiene un elenco di categorie di modifica. Le categorie sono separate da punti e virgola e sono elencate in ordine gerarchico da sinistra a destra, partendo dalla categoria principale superiore fino alla sottocategoria più dettagliata.

Script di caricamento

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

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* ChangeID

* Categories

Creare le seguenti dimensioni calcolate:

* =SubStringCount(Categories,';')+1, per calcolare il numero di livelli di categoria nella gerarchia delle modifiche.

* =SubField(Categories, ';' ,SubStringCount(Categories,';')+1), per estrarre la categoria più a destra nella gerarchia delle modifiche.

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 |

In questo caso, la funzione SubStringCount è annidata all'interno della funzione SubField. La prima dimensione calcolata, SubStringCount(), calcola il numero di valori annidati nel campo Categories. Questo viene determinato contando il numero di punti e virgole ';' e aggiungendo 1 al risultato. L'output viene quindi inserito come terzo parametro della funzione SubField per estrarre la categoria più a destra annidata nel campo Categories.

Per esempio, rivedere i risultati della voce ChangeIDCHG00100. Nella prima dimensione calcolata, SubStringCount è 2. L'espressione aggiunge quindi 1 a questo risultato per determinare che il campo Categories ha tre valori di categoria annidati, Software, Program e Patch. La funzione SubField, nella seconda dimensione calcolata, utilizza poi questo risultato per estrarre la terza categoria, Patch.