# SubField - funzione dello script e del grafico

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:

Argomenti SubField

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

Esempi e risultati:

Esempi 1-3

| Esempio | Risultato |
| --- | --- |
| ` SubField('abc;cde;efg', ';', 2)  ` | Restituisce 'cde' |
| ` SubField('', ';', 1)  ` | Restituisce NULL |
| ` SubField(';', ';', 1)  ` | Restituisce una stringa vuota |

Aggiungere lo script di esempio al documento ed eseguirlo. Aggiungere quindi a un foglio del documento almeno i campi elencati nella colonna dei risultati per visualizzare il risultato.

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

Esempio 4

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

Ipotizziamo che si disponga di una variabile con un nome percorso vMyPath,

`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`.

In un grafico testo e immagine è possibile aggiungere una misura come:  
`SubField(vMyPath, '\',-3``)`, che restituisce 'Qlik', poiché si tratta della terza sottostringa a partire dall'estremità destra della variabile vMyPath.

Questo esempio mostra come vengono create più righe da una singola istanza di Subfield().

Aggiungere lo script di esempio al documento ed eseguirlo. Aggiungere quindi a un foglio del documento almeno i campi elencati nella colonna dei risultati per visualizzare il risultato.

`LOAD DISTINCT` `Player,` `SubField(Project,',') as Project;` ` ` `Load * inline [` `Player|Project` `Neil|Music,OST` `Jo|Music` `Mike|Music,OST,Video` `] (delimiter is '|');`

Esempio 5

| Player | Project |
| --- | --- |
| Neil | Music |
| Neil | OST |
| Jo | Music |
| Mike | Music |
| Mike | OST |
| Mike | Video |

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

Aggiungere lo script di esempio al documento ed eseguirlo. Aggiungere quindi a un foglio del documento almeno i campi elencati nella colonna dei risultati per visualizzare il risultato.

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

Esempio 6

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