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:
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.
|
Esempi e risultati:
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;
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 '|');
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 '|');
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 |