# SubField Funzione per script e grafici

SubField() consente di estrarre i componenti della sottostringa da un campo della stringa padre, in cui i campi del record originali sono costituiti da due o più parti separate da un delimitatore.

La funzione Subfield(), ad esempio, consente di estrarre il nome di battesimo e il cognome da un elenco di record composto da nomi completi, le parti del componente di un nome del percorso o di estrarre dati da tabelle separate da virgole.

Se si utilizza la funzione Subfield() in un'istruzione LOAD escludendo il parametro field\_no opzionale, per ogni sottostringa verrà generato un record completo. Se diversi campi vengono caricati utilizzando Subfield(), vengono creati i prodotti cartesiani di tutte le combinazioni.

Sintassi:

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

Tipo di dati restituiti: stringa

Argomenti

| Argomento | Descrizione |
| --- | --- |
| text | La stringa originale. Può trattarsi di un testo codificato in forma rigida, una variabile, un'espansione del segno del dollaro o un'altra espressione. |
| delimiter | Un carattere all'interno del text di input che divide la stringa in parti del componente. |
| field\_no | Il terzo argomento opzionale è un numero intero che specifica la sottostringa della stringa principale text che verrà restituita. Utilizzare il valore 1 per restituire la prima sottostringa, 2 per restituire la seconda sottostringa e così via.<br><br><ul> <li>Se <span>field_no</span> è un valore positivo, le sottostringhe vengono estratte da sinistra a destra.</li> <li>Se <span>field_no</span> è un valore negativo, le sottostringhe vengono estratte da destra a sinistra.</li> </ul> |

Nota di suggerimento È possibile utilizzare SubField() invece di utilizzare combinazioni di funzioni complesse, come ad esempio Len(), Right(), Left(), Mid() e altre funzioni delle stringhe.

Esempio: espressioni del grafico

| Esempio | Risultato |
| --- | --- |
| `SubField( 'abc;cde;efg',   ';' ,2 )` | Restituisce `cde` |
| `SubField( Null,   ';' ,1 )` | Restituisce una stringa vuota |
| `SubField( ';',   ';' ,1 )` | Restituisce una stringa vuota |
| `SubField( '\Users\ext_jrb\Documents\Qlik\Sense\Apps;','\',-3 )` | Restituisce `Qlik` |

## Esempio: principi fondamentali della funzione SubField

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

#### Espressione del grafico

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che viene caricato in una tabella dati chiamata `Example`.

* Un campo della tabella dati denominata `Name`.

Script di caricamento

```
Example:
Load * inline [
Name
Dave Owen
Joe Tem
];
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:

* ` Name
                                   `

Creare le seguenti dimensioni calcolate:

* `=SubField(Name, ' ',1)`, per estrarre la prima sottostringa che appare prima del delimitatore spaziale `' '`.

* `=SubField(Name, ' ',-1)`, per estrarre la prima sottostringa che appare prima del delimitatore spaziale `' '`, iniziando dalla destra della stringa.

Results table

| Name | SubField(Name, ' ',1) | SubField(Name, ' ',-1) |
| --- | --- | --- |
| Dave Owen | Dave | Owen |
| Joe Tem | Joe | Tem |

La funzione `SubField()` estrae la prima sottostringa `Name` impostando l'argomento `field_no` su 1. Dato che il valore di `field_no` è positivo, per l'estrazione della sottostringa viene seguito l'ordine da sinistra a destra. Una seconda chiamata di funzione estrae la seconda sottostringa impostando l'argomento `field_no` su -1, in modo da estrarre la sottostringa seguendo un ordine da desta a sinistra.

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

#### Script di caricamento

Script di caricamento

Aprire Editor caricamento dati, quindi aggiungere il seguente script di caricamento in una nuova sezione.

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

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* `Name`
* `FirstName`
* `SurName`

Results table

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

Spiegazione

La funzione `SubField` estrae la prima sottostringa, `Name`, impostando l'argomento `field_no` su 1. Dato che il valore di `field_no` è positivo, per l'estrazione della sottostringa viene seguito l'ordine da sinistra a destra. Una seconda chiamata di funzione estrae la seconda sottostringa impostando l'argomento `field_no` su -1, in modo da estrarre la sottostringa seguendo un ordine da desta a sinistra.

## Esempio: scenario per l'applicazione della funzione SubField

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

#### Espressione del grafico

Panoramica

Un set di dati di prodotti contiene una tabella con i prodotti. Ogni prodotto nella tabella ha un campo con il tag che identifica l'area del prodotto. I prodotti possono avere più valori per il campo del tag. Ad esempio, il widget A ha i seguenti tag: Elettronica, Gadget, Casa. I valori dei tag sono separati da una barra verticale (|) come delimitatore. In questo esempio si mostra come estrarre i valori di tag specifici utilizzando la funzione `SubField`.

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che viene caricato in una tabella dati chiamata `Example`.

* I seguenti campi nella tabella dati:

  * `ProductID`

  * `ProductName`

  * `Tags`

  * `Sales`

Script di caricamento

```
Example:
Load  *
INLINE [
ProductID, ProductName, Tags, Sales
1, Widget A, Electronics|Gadgets|Home, 150
2, Widget B, Electronics|Accessories, 200
3, Widget C, Furniture|Home, 100
4, Widget D, Gadgets|Accessories, 250
];
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* ` ProductID
                                   `

* `ProductName`

* `Tags`

Creare le seguenti dimensioni calcolate:

* `=SubField(Tags, '|',1)`, per estrarre il primo elemento nel campo `Tags`.

* `=SubField(Tags, '|',2)`, per estrarre il secondo elemento nel campo `Tags`.

* `=SubField(Tags, '|',3)`, per estrarre il terzo elemento nel campo `Tags`.

Results table

| ProductID | ProductName | Tags | SubField(Tags, '\|', 1) | SubField(Tags, '\|', 2) | SubField(Tags, '\|', 3) |
| --- | --- | --- | --- | --- | --- |
| 1 | Widget A | Electronics\|Gadgets\|Home | Electronics | Gadgets | Home |
| 2 | Widget B | Electronics\|Accessories | Electronics | Accessories | - |
| 3 | Widget C | Furniture\|Home | Furniture | Home | - |
| 4 | Widget D | Gadgets\|Accessories | Gadgets | Accessories | - |

L'output delle funzioni `SubField` ha restituito con successo i tag dalle posizioni rilevanti nella stringa originale di `Tags`.

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

#### Script di caricamento

Script di caricamento

Aprire Editor caricamento dati, quindi aggiungere il seguente script di caricamento in una nuova sezione.

```
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 '|');
```

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* Instrument

* Player

* Project

Results table

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

Spiegazione

Questo esempio mostra come l'utilizzo di più istanze della funzione Subfield(), ciascuna senza il parametro field\_no, crea prodotti cartesiani di tutte le combinazioni dalla stessa istruzione LOAD. L'opzione DISTINCT viene utilizzata per evitare la creazione di record duplicati.