# Index Función de script y de gráfico

Index() busca una cadena para hallar la posición de inicio de la enésima vez que aparece una subcadena suministrada. Un tercer argumento opcional proporciona el valor de n, el cual se considera 1 si se omite. Un valor negativo busca desde el final de la cadena. Las posiciones de la cadena se numeran de izquierda a derecha de 1 en adelante.

Sintaxis:

Index(text, substring[, count])

Tipo de datos que devuelve: Entero

Argumentos

| Argumento | Descripción |
| --- | --- |
| text | La cadena original. |
| substring | Una cadena de caracteres que buscar en text.<br><br>Nota informativaSi la subcadena no existe en el texto, Index devuelve 0. |
| count | Define qué instancia de substring se debe buscar. Por ejemplo, un valor de 2 busca la segunda vez que aparece un carácter. Un valor negativo comienza desde el final de la cadena. |

Ejemplo: expresiones de gráfico

| Ejemplo | Resultado |
| --- | --- |
| `Index( 'abcdefg', 'cd' )` | Devuelve `3` |
| `Index(  'abcdabcd', 'b', 2 )` | Devuelve `6` (la segunda instancia de `b`) |
| `Index( 'abcdabcd', 'b',-2 )` | Devuelve `2` (la segunda instancia de `b` empezando por el final) |
| `Left( Date, Index( Date,'-') -1` ) where `Date = 1997-07-14` | Devuelve `1997` |
| `Mid( Date, Index( Date, '-', 2 ) -2, 2 )` where `Date` = `1997-07-14` | Devuelve `07` |
| `Index( 'abc', 'x' )` | Devuelve `0` (`x` no existe en la cadena `abc`) |
| `Index( 'abc', 'a', 2 )` | Devuelve `0` (no hay una 2ª instancia de `a`) |

## Ejemplo: fundamentos de Index

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

#### Expresión de gráfico

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Un campo de la tabla de datos llamado `InputString`.

Script de carga

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

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:

* ` InputString
                                   `

Cree las siguientes dimensiones calculadas:

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

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

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

Tabla de resultados

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

La primera fila con la cadena `abcdabcd` devuelve:

* `3` la primera instancia de `cd`

* `0` porque `e` no se encuentra en la cadena

* `6` la primera instancia de `b` a partir del final de la cadena

La segunda fila con la cadena `abcdefg` devuelve:

* `3` la primera instancia de `cd`

* `5` la primera instancia de `e`

* `2` la primera instancia de `b` a partir del final de la cadena de caracteres

Nota informativaUn parámetro negativo `count` recorre la cadena en sentido inverso. Sin embargo, la posición que devuelve siempre se indica de izquierda a derecha, incluso si se analiza en sentido inverso.

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

#### Script de carga

El siguiente código muestra cómo utilizar la función en un script de carga.

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

Tabla de resultados

| Cadena de caracteres | Index\_CD | Index\_B | Index\_B2 |
| --- | --- | --- | --- |
| abcdefg | 3 | 2 | 2 |
| abcdabcd | 3 | 2 | 6 |

## Ejemplo: uso de Index

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

#### Expresión de gráfico

Vista general

Un centro de atención al cliente dispone de un conjunto de datos que contiene las líneas de asunto de los mensajes de correo electrónico de los clientes. El centro de asistencia desea clasificar estos correos electrónicos en función de las palabras clave que aparecen en el asunto, por ejemplo, `Refund`, `Complaint` y `Technical Issue`. Las líneas de asunto se almacenan en un campo del conjunto de datos denominado `EmailSubject`.

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla de datos denominada `Example`.

* Un campo de la tabla de datos llamado `EmailSubject`.

Script de carga

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

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:

* ` EmailSubject
                                   `

Cree la siguiente dimensión calculada:

* `=If(Index(EmailSubject, 'Refund') > 0, 'Refund', 'Other')`, para calcular qué texto del asunto del correo electrónico está relacionado con los reembolsos.

Resultados

| EmailSubject | If(Index(EmailSubject, 'Refund') &gt; 0, 'Refund', 'Other') |
| --- | --- |
| Queja sobre el servicio de entrega | Otros |
| Seguimiento de la solicitud de reembolso | Reembolso |
| Solicitud de reembolso - Pedido 12345 | Reembolso |
| Problema técnico no resuelto | Otros |
| Problema técnico con el producto XYZ | Otros |

El resultado de la función `Index` ha identificado correctamente todas las líneas de asunto que contienen la cadena "Reembolso" (`Refund`). Este es un ejemplo de cómo puede analizar y clasificar datos utilizando funciones anidadas y aportar valor a los usuarios.