# Index Função de script e de gráfico

Index() busca uma string para localizar a posição inicial da enésima ocorrência de uma subsequência fornecida. Um terceiro argumento opcional fornece o valor de n, que é 1 se for omitido. Um valor negativo busca a partir do final da string. As posições na string são numeradas da esquerda para a direita, de 1 para cima.

Sintaxe:

Index(text, substring[, count])

Tipo de dados de retorno: inteiro

Argumentos

| Argumento | Descrição |
| --- | --- |
| text | A string original. |
| substring | Uma string de caracteres para pesquisar no text.<br><br>Nota informativaSe a substring não existir no texto, Index retornará 0. |
| count | Define qual ocorrência de substring pesquisar. Por exemplo, um valor de 2 pesquisas para a segunda ocorrência. Um valor negativo inicia a partir do final da string. |

Exemplo: expressões de gráfico

| Exemplo | Resultado |
| --- | --- |
| `Index( 'abcdefg', 'cd' )` | Retorna `3` |
| `Index(  'abcdabcd', 'b', 2 )` | Retorna `6` (a segunda ocorrência de `b`) |
| `Index( 'abcdabcd', 'b',-2 )` | Retorna `2` (a segunda ocorrência de `b` começando do final) |
| `Left( Date, Index( Date,'-') -1` ) where `Date = 1997-07-14` | Retorna `1997` |
| `Mid( Date, Index( Date, '-', 2 ) -2, 2 )` where `Date` = `1997-07-14` | Retorna `07` |
| `Index( 'abc', 'x' )` | Retorna `0` (`x` não existe na string `abc`) |
| `Index( 'abc', 'a', 2 )` | Retorna `0` (não há uma 2ª ocorrência de `a`) |

## Exemplo - Fundamentos de Index

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

#### Expressão de gráfico

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Um campo na tabela de dados chamado `InputString`.

Script de carregamento

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

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:

* ` InputString
                                   `

Crie as seguintes dimensões calculadas:

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

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

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

Tabela de resultados

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

A primeira linha com a string `abcdabcd` retorna:

* `3`: a primeira ocorrência de `cd`

* `0`: porque `e` não foi encontrado na string

* `6`: a primeira ocorrência de `b` a partir do final da string

A segunda linha com a string `abcdefg` retorna:

* `3`: a primeira ocorrência de `cd`

* `5`: a primeira ocorrência de `e`

* `2`: a primeira ocorrência de `b` a partir do final da string

Nota informativaUm parâmetro `count` negativo faz a varredura da string em sentido inverso. No entanto, a posição retornada é sempre denotada da esquerda para a direita, mesmo se escaneada ao contrário.

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

#### Script de carregamento

O código a seguir mostra como usar a função em um script de carregamento.

```
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 de resultados

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

## Exemplo - Cenário de Index

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

#### Expressão de gráfico

Visão geral

Um centro de suporte ao cliente tem um conjunto de dados que contém linhas de assunto de mensagens de e-mail de clientes. O centro de suporte deseja categorizar esses e-mails com base nas palavras-chave que aparecem na linha de assunto, por exemplo, `Refund`, `Complaint` e `Technical Issue`. As linhas de assunto são armazenadas em um campo no conjunto de dados chamado `EmailSubject`.

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova seção.

O script de carregamento contém:

* Um conjunto de dados que é carregado em uma tabela de dados denominada `Example`.

* Um campo na tabela de dados chamado `EmailSubject`.

Script de carregamento

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

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:

* ` EmailSubject
                                   `

Crie a seguinte dimensão calculada:

* `=If(Index(EmailSubject, 'Refund') > 0, 'Refund', 'Other')` para calcular qual texto de assunto de e-mail está relacionado a reembolsos.

Resultados

| EmailSubject | If(Index(EmailSubject, 'Refund') &gt; 0, 'Refund', 'Other') |
| --- | --- |
| Reclamação sobre o serviço de entrega | Outro |
| Acompanhamento da solicitação de reembolso | Reembolso |
| Solicitação de reembolso - Pedido 12345 | Reembolso |
| Problema técnico não resolvido | Outro |
| Problema técnico com o produto XYZ | Outro |

A saída da função `Index` identificou com sucesso todas as linhas de assunto que contêm a string `Refund`. Esse é um exemplo de como é possível analisar e categorizar dados usando funções aninhadas e agregar valor aos usuários.