# Index – Skript- och diagramfunktion

Index() söker en sträng för att hitta startpositionen för den n:e förekomsten av en angiven delsträng. Ett valbart tredje argument ger värdet för n, vilket annars är 1. Ett negativt värde söker från slutet av strängen. Strängens positioner är numrerade vänster till höger från 1 och uppåt.

Syntax:

Index(text, substring[, count])

Returnerad datatyp: heltal

Argument

| Argument | Beskrivning |
| --- | --- |
| text | Den ursprungliga strängen. |
| substring | En teckensträng att söka efter i text.<br><br>Anteckning om informationOm delsträngen inte finns i texten returnerar Index 0. |
| count | Definierar vilken förekomst av substring som sökningen ska göras för. Till exempel, söker värdet 2 efter den andra förekomsten. Ett negativt värde börjar från slutet av strängen. |

Exempel: diagramuttryck

| Exempel | Resultat |
| --- | --- |
| `Index( 'abcdefg', 'cd' )` | Returnerar `3` |
| `Index(  'abcdabcd', 'b', 2 )` | Returnerar `6` (den andra förekomsten av `b`) |
| `Index( 'abcdabcd', 'b',-2 )` | Returnerar `2` (den andra förekomsten av `b` räknat från slutet) |
| `Left( Date, Index( Date,'-') -1` ) where `Date = 1997-07-14` | Returnerar `1997` |
| `Mid( Date, Index( Date, '-', 2 ) -2, 2 )` where `Date` = `1997-07-14` | Returnerar `07` |
| `Index( 'abc', 'x' )` | Returnerar `0` (`x` existerar inte i strängen `abc`) |
| `Index( 'abc', 'a', 2 )` | Returnerar `0` (det finns ingen andra förekomst av `a`) |

## Exempel – grunderna i Index

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

#### Diagramuttryck

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter `Example`.

* Ett fält i datatabellen heter `InputString`.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

* ` InputString
                                   `

Skapa följande beräknade dimensioner:

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

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

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

Resultattabell

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

Den första raden med strängen `abcdabcd` returnerar:

* `3` – den första förekomsten av `cd`

* `0` – för att `e` inte finns i strängen

* `6` – den första förekomsten av `b` räknat från slutet av strängen

Den andra raden med strängen `abcdefg` returnerar:

* `3` – den första förekomsten av `cd`

* `5` – den första förekomsten av `e`

* `2` – den första förekomsten av `b` räknat från slutet av strängen

Anteckning om informationEn negativ `count`-parameter skannar strängen i omvänd riktning. Den position som returneras anges dock alltid från vänster till höger, även om den skannas baklänges.

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

#### Laddningsskript

Följande kod visar hur du använder funktionen i ett laddningsskript.

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

Resultattabell

| Sträng | Index\_CD | Index\_B | Index\_B2 |
| --- | --- | --- | --- |
| abcdefg | 3 | 2 | 2 |
| abcdabcd | 3 | 2 | 6 |

## Exempel – Index-scenario

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

#### Diagramuttryck

Översikt

Ett kundsupportcenter har en datauppsättning som innehåller ämnesrader från e-postmeddelanden från kunder. Supportcentret vill kategorisera dessa e-postmeddelanden baserat på de nyckelord som förekommer i ämnesraden, till exempel `Refund`, `Complaint` och `Technical Issue`. Ämnesraderna lagras i ett fält i datasetet som heter `EmailSubject`.

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter `Example`.

* Ett fält i datatabellen heter `EmailSubject`.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

* ` EmailSubject
                                   `

Skapa följande beräknade dimension:

* `=If(Index(EmailSubject, 'Refund') > 0, 'Refund', 'Other')`, för att beräkna vilken ämnestext i e-postmeddelanden som avser återbetalningar.

Resultat

| EmailSubject | If(Index(EmailSubject, 'Refund') &gt; 0, 'Refund', 'Other') |
| --- | --- |
| Klagomål på leveransservice | Annat |
| Uppföljning av begäran om återbetalning | Återbetalning |
| Begäran om återbetalning – Order 12345 | Återbetalning |
| Tekniskt problem ej löst | Annat |
| Tekniskt problem med produkt XYZ | Annat |

Utdata från funktionen `Index` har korrekt identifierat alla ämnesrader som innehåller strängen `Refund`. Det här är ett exempel på hur du kan analysera och kategorisera data med hjälp av kapslade funktioner och ge användarna mervärde.