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:
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.
|
Exempel och resultat:
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;
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 '|');
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 '|');
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 |