# Index Skript- und Diagrammfunktion

Index() durchsucht einen String, um die Startposition des n-ten Vorkommens eines angegebenen Teilstrings zu ermitteln. Ein optionales drittes Argument liefert den Wert von n. Erfolgt keine Eingabe, wird 1 verwendet. Bei einem negativen Wert wird vom Ende des Strings aus gesucht. Die Positionen im String werden von links nach rechts beginnend mit 1 aufsteigend nummeriert.

Syntax:

Index(text, substring[, count])

Rückgabe Datentyp: ganze Zahl

Argumente

| Argument | Beschreibung |
| --- | --- |
| text | Der Original-String. |
| substring | Ein String, nach dem in text gesucht werden soll.<br><br>InformationshinweisWenn der Teilstring nicht im Text vorhanden ist, gibt Index 0 zurück. |
| count | Definiert, nach welchem Vorkommen von substring gesucht werden soll. Beim Wert 2 wird beispielsweise nach dem zweiten Vorkommen gesucht. Bei einem negativen Wert wird am Ende des Strings begonnen. |

Beispiel: Diagrammformeln

| Beispiel | Ergebnis |
| --- | --- |
| `Index( 'abcdefg', 'cd' )` | Liefert `3` |
| `Index(  'abcdabcd', 'b', 2 )` | Gibt `6` zurück (das zweite Vorkommen von `b`) |
| `Index( 'abcdabcd', 'b',-2 )` | Gibt `2` zurück (das zweite Vorkommen von `b`, vom Ende aus begonnen) |
| `Left( Date, Index( Date,'-') -1` ) where `Date = 1997-07-14` | Liefert `1997` |
| `Mid( Date, Index( Date, '-', 2 ) -2, 2 )` where `Date` = `1997-07-14` | Liefert `07` |
| `Index( 'abc', 'x' )` | Gibt `0` zurück (`x` ist im String `abc` nicht vorhanden) |
| `Index( 'abc', 'a', 2 )` | Gibt `0` zurück (`a` kommt kein zweites Mal vor) |

## Beispiel – Grundlegendes zu „Index“

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

#### Diagrammformel

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Datensatz, der in eine Datentabelle namens `Example` geladen wird

* Ein Feld in der Datentabelle heißt `InputString`.

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie dieses Feld als Dimension hinzu:

* ` InputString
                                   `

Erstellen Sie die folgenden dynamischen Dimensionen:

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

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

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

Ergebnistabelle

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

Die erste Zeile mit dem String `abcdabcd` gibt Folgendes zurück:

* `3` – das erste Vorkommen von `cd`

* `0` – weil `e` im String nicht gefunden wird

* `6` – das erste Vorkommen von `b` ab dem Ende des Strings

Die zweite Zeile mit dem String `abcdefg` gibt Folgendes zurück:

* `3` – das erste Vorkommen von `cd`

* `5` – das erste Vorkommen von `e`

* `2` – das erste Vorkommen von `b` ab dem Ende des Strings

InformationshinweisEin negativer `count`-Parameter scannt den String in umgekehrter Richtung. Die zurückgegebene Position wird jedoch immer von links nach rechts angegeben, auch wenn sie in umgekehrter Reihenfolge gescannt wird.

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

#### Ladeskript

Der folgende Code zeigt, wie Sie die Funktion in einem Ladeskript verwenden können.

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

Ergebnistabelle

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

## Beispiel – Szenario für „Index“

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

#### Diagrammformel

Übersicht

Ein Kunden-Support-Center verfügt über einen Datensatz, der die Betreffzeilen aus Kunden-E-Mails enthält. Das Support-Center möchte diese E-Mails anhand der Schlüsselwörter in der Betreffzeile kategorisieren, zum Beispiel `Refund`, `Complaint` und `Technical Issue`. Die Betreffzeilen werden im Datensatz in einem Feld namens `EmailSubject` gespeichert.

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Datensatz, der in eine Datentabelle namens `Example` geladen wird

* Ein Feld in der Datentabelle heißt `EmailSubject`.

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie dieses Feld als Dimension hinzu:

* ` EmailSubject
                                   `

Erstellen Sie die folgende berechnete Dimension:

* `=If(Index(EmailSubject, 'Refund') > 0, 'Refund', 'Other')`, um zu berechnen, welche E-Mail-Betrefftexte sich auf Erstattungen beziehen.

Ergebnisse

| EmailSubject | If(Index(EmailSubject, 'Refund') &gt; 0, 'Refund', 'Other') |
| --- | --- |
| Beschwerde über den Lieferservice | Sonstige |
| Den Erstattungsantrag weiterverfolgen | Erstattung |
| Antrag auf Rückerstattung – Bestellung 12345 | Erstattung |
| Technisches Problem nicht behoben | Sonstige |
| Technisches Problem mit Produkt XYZ | Sonstige |

Die Ausgabe der Funktion `Index` hat erfolgreich alle Betreffzeilen identifiziert, die den String `Refund` enthalten. Dies ist ein Beispiel dafür, wie Sie Daten mithilfe von verschachtelten Funktionen analysieren und kategorisieren und den Benutzern einen Mehrwert bieten können.