Gå till huvudinnehåll

SubField - skript- och diagramfunktion

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 field_no-parametern 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:  

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

  • Om field_no är ett positivt värde extraheras delsträngar från vänster till höger.
  • Om field_no är ett negativt värde extraheras delsträngar från höger till vänster.
Anteckning om tips SubField() 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 och resultat:  

Exempel 1–3
Exempel Resultat
SubField('abc;cde;efg', ';', 2) Returnerar 'cde'
SubField('', ';', 1) Returnerar NULL
SubField(';', ';', 1) Returnerar en tom sträng

Lägg till exempelskriptet i dokumentet och kör det. Lägg sedan till åtminstone de fält som listas i resultatkolumnen på ett ark i dokumentet för att se resultatet.

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;

Exempel 4
Name FirstName Surname
Dave Owen Dave Owen
Joe Tem Joe Tem

Antag att du har en variabel som innehåller namnet på en sökväg 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.

I det här exemplet visas hur flera rader skapas från en förekomst av Subfield().

Lägg till exempelskriptet i dokumentet och kör det. Lägg sedan till åtminstone de fält som listas i resultatkolumnen på ett ark i dokumentet för att se resultatet.

LOAD DISTINCT

Player,

SubField(Project,',') as Project;

 

Load * inline [

Player|Project

Neil|Music,OST

Jo|Music

Mike|Music,OST,Video

] (delimiter is '|');

Exempel 5
Player Project
Neil Music
Neil OST
Jo Music
Mike Music
Mike OST
Mike Video

Det här exemplet visar hur användning av flera instanser av Subfield()-funktionen inifrån samma LOAD-sats, och där field_no-parametern har utelämnats i alla instanser, skapar kartesiska produkter av alla kombinationer. Alternativet DISTINCT används för att undvika att dubblettposter skapas.

Lägg till exempelskriptet i dokumentet och kör det. Lägg sedan till åtminstone de fält som listas i resultatkolumnen på ett ark i dokumentet för att se resultatet.

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

Exempel 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

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!

Gå med i programmet Analytics Modernization

Remove banner from view

Modernisera utan att kompromissa med dina värdefulla QlikView-appar med programmet för analysmodernisering. Klicka här för mer information eller ta kontakt: ampquestions@qlik.com