# Index Script- en diagramfunctie

Index() doorzoekt een tekenreeks om de beginpositie te vinden van de n-de keer dat een opgegeven subtekenreeks voorkomt. Een optioneel derde argument levert de waarde van n, die 1 is als het argument wordt weggelaten. Bij een negatieve waarde wordt gezocht vanaf het einde van de tekenreeks. De nummering van de posities in de tekenreeks loopt van links naar rechts en begint bij 1.

Syntaxis:

Index(text, substring[, count])

Retourgegevenstypen: geheel getal

Argumenten

| Argument | Beschrijving |
| --- | --- |
| text | De oorspronkelijke tekenreeks. |
| substring | Een reeks van tekens om naar te zoeken in text.<br><br>InformatieAls de subtekenreeks niet bestaat in de tekst, retourneert Index 0. |
| count | Definieert naar welk exemplaar van substring moet worden gezocht. Bijvoorbeeld, bij een waarde van 2 wordt naar het tweede exemplaar gezocht. Een negatieve waarde begint vanaf het einde van de tekenreeks. |

Voorbeeld: diagramuitdrukkingen

| Voorbeeld | Resultaat |
| --- | --- |
| `Index( 'abcdefg', 'cd' )` | Retourneert `3` |
| `Index(  'abcdabcd', 'b', 2 )` | Retourneert `6` (het tweede exemplaar van `b`) |
| `Index( 'abcdabcd', 'b',-2 )` | Retourneert `2` (het tweede exemplaar van `b` te beginnen vanaf het einde) |
| `Left( Date, Index( Date,'-') -1` ) where `Date = 1997-07-14` | Retourneert `1997` |
| `Mid( Date, Index( Date, '-', 2 ) -2, 2 )` where `Date` = `1997-07-14` | Retourneert `07` |
| `Index( 'abc', 'x' )` | Retourneert `0` (`x` bestaat niet in de tekenreeks `abc`). |
| `Index( 'abc', 'a', 2 )` | Retourneert `0` (er is geen 2e exemplaar van `a`) |

## Voorbeeld - Basisprincipes voor Index

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

#### Diagramuitdrukking

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

Het load-script bevat:

* Een gegevensverzameling die wordt geladen in een tabel met de naam `Example`.

* Eén veld in de gegevenstabel met de naam `InputString`.

Load-script

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

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:

* ` InputString
                                   `

Maak de volgende berekende dimensies:

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

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

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

Resultatentabel

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

De eerste rij met de tekenreeks `abcdabcd` retourneert:

* `3`—het eerste exemplaar van `cd`

* `0`—want `e` is niet gevonden in de tekenreeks

* `6`—het eerste exemplaar van `b` vanaf het einde van de tekenreeks

De tweede rij met de tekenreeks `abcdefg` retourneert:

* `3`—het eerste exemplaar van `cd`

* `5`—het eerste exemplaar van `e`

* `2`—het eerste exemplaar van `b` vanaf het einde van de tekenreeks

InformatieEen negatieve `count` parameter scant de tekenreeks in omgekeerde volgorde. De positie die wordt geretourneerd, wordt echter altijd van links naar rechts aangegeven, zelfs als er in omgekeerde richting wordt gescand.

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

#### Load-script

De volgende code laat zien hoe u de functie in een load-script kunt gebruiken.

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

Resultatentabel

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

## Voorbeeld – Scenario met Index

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

#### Diagramuitdrukking

Overzicht

Een klantenservicecentrum heeft een gegevensverzameling die onderwerpregels van e-mailberichten van klanten bevat. Het ondersteuningscentrum wil deze e-mails categoriseren op basis van de trefwoorden die in de onderwerpregel voorkomen, bijvoorbeeld `Refund`, `Complaint`, en `Technical Issue`. De onderwerpregels worden opgeslagen in een veld in de gegevensverzameling met de naam `EmailSubject`.

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

Het load-script bevat:

* Een gegevensverzameling die wordt geladen in een tabel met de naam `Example`.

* Eén veld in de gegevenstabel met de naam `EmailSubject`.

Load-script

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

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:

* ` EmailSubject
                                   `

Maak een nieuwe tabel en voeg de volgende berekende dimensie toe:

* `=If(Index(EmailSubject, 'Refund') > 0, 'Refund', 'Other')` om te berekenen welke tekst van het e-mailonderwerp betrekking heeft op terugbetalingen.

Resultaten

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

De uitvoer van de functie `Index` heeft met succes alle onderwerpregels geïdentificeerd die de tekenreeks `Refund` bevatten. Dit is een voorbeeld van hoe u gegevens kunt analyseren en categoriseren met behulp van geneste functies en meerwaarde kunt bieden aan gebruikers.