# SubField - función de script y de gráfico

SubField() se utiliza para extraer componentes de subcadenas de un campo de cadena principal, donde los campos de registro originales constan de dos o más partes separadas por un delimitador.

La función Subfield() debe utilizarse, por ejemplo, para extraer el nombre y apellido de una lista de registros que contienen nombres completos, las partes que componen el nombre de una ruta, o para extraer datos de tablas separadas por comas.

Si utiliza la función Subfield() en una sentencia LOAD con el parámetro opcional field\_no omitido, se generará un registro completo para cada subcadena. Si se cargan varios campos utilizando Subfield() se crean los productos cartesianos de todas las combinaciones.

Sintaxis:

SubField(text, delimiter[, field\_no ])

Tipo de datos que devuelve: cadena

Argumentos:

Argumentos

| Argumento | Descripción |
| --- | --- |
| text | La cadena original. Puede ser un texto escrito directamente en el código, una variable, una expansión de signo dólar u otra expresión. |
| delimiter | Un carácter dentro de los datos introducidos en text que divide la cadena en partes componentes. |
| field\_no | El tercer argumento opcional es un entero que especifica cuál de las subcadenas de la cadena principal text se devolverá. Utilice el valor 1 para volver a la primera subcadena, 2 para volver a la segunda subcadena, etc.<br><br><ul> <li>Si <span>field_no</span> es un valor positivo, las subcadenas se extraen de izquierda a derecha.</li> <li>Si <span>field_no</span> es un valor negativo, las subcadenas se extraen de derecha a izquierda.</li> </ul> |

Nota de sugerencia SubField() se puede usar en lugar de utilizar combinaciones complejas de funciones como Len(), Right(), Left(), Mid() y otras funciones de cadena.

Ejemplos: expresiones de gráfico

| Ejemplo | Resultado |
| --- | --- |
| `SubField(S,   ';' ,2)` | Devuelve 'cde' si S es 'abc;cde;efg'. |
| `SubField(S,   ';' ,1)` | Devuelve una cadena vacía si S es una cadena vacía. |
| `SubField(S,   ';' ,1)` | Devuelve una cadena vacía si S es ';'. |
| Supongamos que tiene una variable que contiene una ruta de archivo vMyPath,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`. | En un gráfico de texto e imagen, puede agregar una medida como:<br>`SubField(vMyPath, '\',-3``)`, lo cual da como resultado "Qlik", porque es la tercera subcadena desde el extremo derecho de la variable vMyPath. |

## Ejemplos: script y expresiones de gráfico utilizando SubField

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

#### Ejemplos: expresiones de script y de gráfico

### Ejemplos básicos

| Ejemplo | Resultado |
| --- | --- |
| `SubField(S,   ';' ,2)` | Devuelve 'cde' si S es 'abc;cde;efg'. |
| `SubField(S,   ';' ,1)` | Devuelve una cadena vacía si S es una cadena vacía. |
| `SubField(S,   ';' ,1)` | Devuelve una cadena vacía si S es ';'. |
| Supongamos que tiene una variable que contiene una ruta de archivo vMyPath,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`. | En un gráfico de texto e imagen, puede agregar una medida como:<br>`SubField(vMyPath, '\',-3``)`, lo cual da como resultado "Qlik", porque es la tercera subcadena desde el extremo derecho de la variable vMyPath. |

### Ejemplo de script 1

#### Script de carga

Cargue las siguientes expresiones de script y datos en el editor de carga de datos.

```
FullName:
					
LOAD * inline [
Name
'Dave Owen'
'Joe Tem'
];

SepNames:

Load Name,
SubField(Name, ' ',1) as FirstName,
SubField(Name, ' ',-1) as Surname
Resident FullName;
Drop Table FullName;
```

#### Crear una visualización

Cree una visualización de tabla en una hoja de Qlik Sense con Name, FirstName y SurName como dimensiones.

#### Resultado

| Name | FirstName | SurName |
| --- | --- | --- |
| Dave Owen | Dave | Owen |
| Joe Tem | Joe | Tem |

#### Explicación

La función SubField() extrae la primera subcadena de Name estableciendo el argumento field\_no en 1. Dado que el valor de field\_no es positivo, se sigue un orden de izquierda a derecha para extraer la subcadena. Una segunda llamada de función extrae la segunda subcadena configurando el argumento de field \_no en -1, lo que extrae la subcadena siguiendo un orden de derecha a izquierda.

### Ejemplo de script 2

#### Script de carga

Cargue las siguientes expresiones de script y datos en el editor de carga de datos.

```
LOAD DISTINCT
Instrument,
SubField(Player,',') as Player,
SubField(Project,',') as Project;

Load * inline [
Instrument|Player|Project
Guitar|Neil,Mike|Music,Video
Guitar|Neil|Music,OST
Synth|Neil,Jen|Music,Video,OST
Synth|Jo|Music
Guitar|Neil,Mike|Music,OST
] (delimiter is '|');
```

#### Crear una visualización

Cree una visualización de tabla en una hoja de Qlik Sense con Instrument, Player y Projectcomo dimensiones.

#### Resultado

| Instrument | Player | Project |
| --- | --- | --- |
| Guitar | Mike | Music |
| Guitar | Mike | Video |
| Guitar | Mike | OST |
| Guitar | Neil | Music |
| Guitar | Neil | Video |
| Guitar | Neil | OST |
| Synth | Jen | Music |
| Synth | Jen | Video |
| Synth | Jen | OST |
| Synth | Jo | Music |
| Synth | Neil | Music |
| Synth | Neil | Video |
| Synth | Neil | OST |

#### Explicación

Este ejemplo muestra cómo usar múltiples instancias de la función Subfield(), cada una con el parámetro field\_no omitido, desde dentro de la misma sentencia LOAD crea productos cartesianos de todas las combinaciones. La opción DISTINCT sirve para evitar crear registros duplicados.