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.
Exempel: Skript- och diagramuttryck som använder SubField
Grundläggande exempel
Exempel
Resultat
SubField(S, ';' ,2)
Returnerar 'cde' om S är 'abc;cde;efg'.
SubField(S, ';' ,1)
Returnerar en tom sträng om S är en tom sträng.
SubField(S, ';' ,1)
Returnerar en tom sträng om S är ';'.
Anta att du har en variabel som innehåller ett sökvägsnamn vMyPath,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.
I ett text- och bilddiagram kan du lägga till mått, t.ex. SubField(vMyPath, '\',-3), som resulterar i 'Qlik', eftersom det är den tredje delsträngen till höger om variabeln vMyPath.
Skriptexempel 1
Laddningsskript
Ladda följande skriptuttryck och data i skriptredigeraren.
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;
Skapa en visualisering
Skapa en tabellvisualisering i ett Qlik Sense-ark med Name, FirstName och SurName som dimensioner.
Resultat
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
Förklaring
Funktionen SubField() extraherar den första delsträngen i Name genom att ställa in argumentet field_no på 1. Eftersom värdet i field_no är positivt, används ordningen vänster till höger vid extrahering av delsträngen. Ett andra funktionsanrop extraherar den andra delsträngen genom att ställa in argumentet field_no på -1, vilket extraherar delsträngen i ordningen höger till vänster.
Skriptexempel 2
Laddningsskript
Ladda följande skriptuttryck och data i skriptredigeraren.
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 '|');
Skapa en visualisering
Skapa en tabellvisualisering i ett Qlik Sense-ark med Instrument, Player och Project som dimensioner.
Resultat
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
Förklaring
Det här exemplet visar hur användning av flera instanser av funktionen Subfield(), där parametern field_no har utelämnats, inom samma LOAD-sats skapar kartesiska produkter av alla kombinationerna. Alternativet DISTINCT används för att undvika att skapa dubbletter av poster.
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!