Subfield() används för att extrahera delsträngkomponenter från ett överordnat strängfält där de ursprungliga postfälten består av två eller fler delar, som separeras av en avgränsare.
Subfield()-funktionen kan användas till exempel för att extrahera förnamn och efternamn från en lista av poster som innehåller fullständiga namn, komponentdelarna i ett sökvägsnamn eller för att extrahera data från kommaavgränsade tabeller.
Om du använder funktionen Subfield() i en LOAD-sats med den valbara parametern field_no utelämnad kommer en fullständig post genereras för varje delsträng. Om flera fält laddas med hjälp av Subfield() skapas de kartesiska produkterna för alla kombinationer.
Syntax:
SubField(text,
delimiter[, field_no ])
Returnerad datatyp: sträng
Argument:
Argument
Argument
Beskrivning
text
Den ursprungliga strängen. Detta kan vara en hårdkodad text, en variabel, en dollarteckensexpansion eller ett annat uttryck.
delimiter
Ett tecken med indata-text som delar in strängen i dess komponentdelar.
field_no
Det valbara tredje argumentet är ett heltal som vilka av delsträngarna i den överordnade strängen text som ska returneras. Använd värdet 1 om du vill returnera den första delsträngen, 2 om du vill returnera den delsträngen och så vidare.
Om field_no är ett positivt värde extraheras understrängar från vänster till höger.
Om field_no är ett negativt värde extraheras understrängar från höger till vänster.
Anteckning om tipsSubField() kan användas istället för att använda komplexa kombinationer av funktioner, som t.ex. Len(), Right(), Left(), Mid() och andra strängfunktioner.
Examples: Script and chart expressions using SubField
Basic examples
Example
Result
SubField(S, ';' ,2)
Returns 'cde' if S is 'abc;cde;efg'.
SubField(S, ';' ,1)
Returns an empty string if S is an empty string.
SubField(S, ';' ,1)
Returns an empty string if S is ';'.
Suppose you have a variable that holds a path name vMyPath,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.
In a text & image chart, you can add a measure such as: SubField(vMyPath, '\',-3), which results in 'Qlik', because it is the substring third from the right-hand end of the variable vMyPath.
Script example 1
Load script
Load the following script expressions and data in the data load editor.
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;
Create a visualization
Create a table visualization in a Qlik Sensesheet with Name, FirstName, and SurName as dimensions.
Result
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
Explanation
The SubField() function extracts the first substring of Name by setting the field_no argument to 1. Since the value of field_no is positive, a left to right order is followed for extracting the subtring. A second function call extracts the second substring by setting the field_no argument to -1, which extracts the substring following a right to left order.
Script example 2
Load script
Load the following script expressions and data in the data load editor.
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 '|');
Create a visualization
Create a table visualization in a Qlik Sense sheet with Instrument, Player, and Project as dimensions.
Result
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
Explanation
This example shows how using multiple instances of the Subfield() function, each with the field_no parameter left out, from within the same LOAD statement creates Cartesian products of all combinations. The DISTINCT option is used to avoid creating duplicate records.
Var den här sidan till hjälp för dig?
Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!