# Index — funkcja skryptu i funkcja wykresu

Funkcja Index() przeszukuje ciąg, aby znaleźć pozycję początkową n-tego wystąpienia podanego fragmentu tekstu. Opcjonalny trzeci argument dostarcza wartość n, która w przypadku pominięcia wynosi 1. Podanie wartości ujemnej powoduje wyszukiwanie od końca ciągu znaków. Pozycje w ciągu znaków są numerowane od lewej do prawej od 1 w górę.

Składnia:

Index(text, substring[, count])

Typ zwracanych danych: liczba całkowita

Argumenty

| Argument | Opis |
| --- | --- |
| text | Pierwotny ciąg znaków. |
| substring | Ciąg znaków do wyszukania w tekście text.<br><br>InformacjaJeśli podciąg nie istnieje w tekście, Indeks zwraca 0. |
| count | Określa wystąpienie substring do wyszukania. Na przykład wartość dwóch wyszukań dla drugiego wystąpienia. Podanie wartości ujemnej powoduje rozpoczęcie od końca ciągu znaków. |

Przykład: wyrażenia wykresu

| Przykład | Wynik |
| --- | --- |
| `Index( 'abcdefg', 'cd' )` | Zwraca wartość `3` |
| `Index(  'abcdabcd', 'b', 2 )` | Zwraca `6` (drugie wystąpienie `b`) |
| `Index( 'abcdabcd', 'b',-2 )` | Zwraca `2` (drugie wystąpienie `b` od końca) |
| `Left( Date, Index( Date,'-') -1` ) where `Date = 1997-07-14` | Zwraca wartość `1997` |
| `Mid( Date, Index( Date, '-', 2 ) -2, 2 )` where `Date` = `1997-07-14` | Zwraca wartość `07` |
| `Index( 'abc', 'x' )` | Zwraca `0` (`x` nie istnieje w ciągu `abc`). |
| `Index( 'abc', 'a', 2 )` | Zwraca `0` (nie ma drugiego wystąpienia `a`). |

## Przykład — podstawy Index

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

#### Wyrażenie wykresu

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych załadowany do tabeli o nazwie `Example`.

* Jedno pole w tabeli danych o nazwie `InputString`.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:

* ` InputString
                                   `

Utwórz następujące wymiary wyliczane:

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

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

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

Tabela wynikowa

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

Pierwszy wiersz z ciągiem `abcdabcd` zwraca:

* `3` — pierwsze wystąpienie `cd`

* `0` — ponieważ znaku `e` nie znaleziono w ciągu znaków

* `6` — pierwsze wystąpienie `b` od końca ciągu znaków

Drugi wiersz z ciągiem `abcdefg` zwraca:

* `3` — pierwsze wystąpienie `cd`

* `5` — pierwsze wystąpienie `e`

* `2` — pierwsze wystąpienie `b` od końca ciągu znaków

InformacjaUjemny parametr `count` powoduje skanowanie ciągu w odwrotnej kolejności. Zwracana pozycja jest jednak zawsze oznaczana od lewej do prawej, nawet w przypadku skanowania w odwrotnej kolejności.

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

#### Skrypt ładowania

Poniższy kod pokazuje, jak użyć tej funkcji w skrypcie ładowania.

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

Tabela wynikowa

| Ciąg znaków | Index\_CD | Index\_B | Index\_B2 |
| --- | --- | --- | --- |
| abcdefg | 3 | 2 | 2 |
| abcdabcd | 3 | 2 | 6 |

## Przykład — zastosowanie Index

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

#### Wyrażenie wykresu

Przegląd

Centrum obsługi klienta ma zbiór danych zawierający tematy wiadomości e-mail od klientów. Centrum pomocy technicznej chce kategoryzować te wiadomości e-mail na podstawie słów kluczowych, które pojawiają się w temacie wiadomości, na przykład `Refund`, `Complaint` i `Technical Issue`. Wiersze tematu są przechowywane w polu zestawu danych o nazwie `EmailSubject`.

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zestaw danych załadowany do tabeli o nazwie `Example`.

* Jedno pole w tabeli danych o nazwie `EmailSubject`.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:

* ` EmailSubject
                                   `

Utwórz następujący wymiar wyliczany:

* `=If(Index(EmailSubject, 'Refund') > 0, 'Refund', 'Other')` do obliczenia, który tekst tematu wiadomości e-mail dotyczy zwrotów.

Wyniki

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

W danych wyjściowych funkcji `Index` pomyślnie zidentyfikowano wszystkie wiersze tematu, które zawierają ciąg `Refund`. Jest to przykład tego, jak można analizować i kategoryzować dane za pomocą funkcji zagnieżdżonych w sposób przydatny dla użytkowników.