Subfield() wordt gebruikt voor het extraheren van onderdelen van subtekenreeksen van een bovenliggend tekenreeksveld, waarbij de oorspronkelijke recordvelden bestaat uit twee of meer onderdelen met een scheidingsteken ertussen.
De functie Subfield() kan bijvoorbeeld worden gebruikt om voornaam en achternaam te extraheren vanuit een lijst met records die bestaat uit volledige namen, de samenstellende delen van een padnaam of voor het extraheren van gegevens uit tabellen met door komma's gescheiden waarden.
Als u de functie Subfield() gebruikt in een opdracht LOAD terwijl de optionele parameter field_no wordt weggelaten, wordt één complete record gegenereerd voor elke subtekenreeks. Als meerdere velden worden geladen met Subfield(), worden de cartesische producten van alle combinaties gemaakt.
Syntaxis:
SubField(text,
delimiter[, field_no ])
Retourgegevenstypen: tekenreeks
Argumenten:
Argumenten
Argument
Beschrijving
text
De oorspronkelijke tekenreeks. Dit kan een hard gecodeerde tekst, een variabele, een uitbreiding met dollarteken of een andere uitdrukking zijn.
delimiter
Een teken binnen de invoerreeks text die de tekenreeks opsplitst in samenstellende delen.
field_no
Het optionele derde argument is een geheel getal waarmee wordt opgegeven welke van de subtekenreeksen van de bovenliggende tekenreeks text moeten worden geretourneerd. Gebruik de waarde 1 om terug te keren naar de eerste subtekenreeks, 2 om terug te keren naar de tweede subtekenreeks, enzovoorts.
Als field_no een positieve waarde is, worden subtekenreeksen van links naar rechts geëxtraheerd.
Als field_no een negatieve waarde is, worden subtekenreeksen van rechts naar links geëxtraheerd.
TipSubField() kan worden gebruikt in plaats van complexe combinaties van functies zoals Len(), Right(), Left(), Mid() en andere tekenreeksfuncties.
Voorbeelden: diagramuitdrukkingen
Voorbeeld
Resultaat
SubField(S, ';' ,2)
Retourneert 'cde' als S is 'abc;cde;efg'.
SubField(S, ';' ,1)
Retourneert een lege tekenreeks als S een lege tekenreeks is.
SubField(S, ';' ,1)
Retourneert een lege tekenreeks als S';' is.
Stel dat u een variabele hebt met een padnaam vMyPath,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;zijn.
In een diagram met tekst en afbeelding kunt u een meting toevoegen, zoals: SubField(vMyPath, '\',-3), met het resultaat 'Qlik', omdat het de derde subtekenreeks vanaf het rechteruiteinde van de variabele vMyPath is.
Voorbeelden: script- en diagramuitdrukkingen die gebruikmaken van SubField
Basisvoorbeelden
Voorbeeld
Resultaat
SubField(S, ';' ,2)
Retourneert 'cde' als S is 'abc;cde;efg'.
SubField(S, ';' ,1)
Retourneert een lege tekenreeks als S een lege tekenreeks is.
SubField(S, ';' ,1)
Retourneert een lege tekenreeks als S';' is.
Stel dat u een variabele hebt met een padnaam vMyPath,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;zijn.
In een diagram met tekst en afbeelding kunt u een meting toevoegen, zoals: SubField(vMyPath, '\',-3), met het resultaat 'Qlik', omdat het de derde subtekenreeks vanaf het rechteruiteinde van de variabele vMyPath is.
Scriptvoorbeeld 1
Load-script
Laad de volgende scriptuitdrukkingen en gegevens in de editor voor het laden van gegevens.
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;
Een visualisatie maken
Maak een tabelvisualisatie in een Qlik Sense-werkblad met Name, FirstName en SurName als dimensies.
Resultaat
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
Uitleg
De functie SubField() haalt de eerste subtekenreeks op uit Name door het argument field_no in te stellen op 1. Aangezien de waarde van field_no positief is, wordt de volgorde links naar rechts gevolgd voor het ophalen van de subtekenreeks. Een tweede functieaanroep haalt de tweede subtekenreeks op door het argument field _no in te stellen op -1, waardoor de subtekenreeks wordt opgehaald volgens de volgorde rechts naar links.
Scriptvoorbeeld 2
Load-script
Laad de volgende scriptuitdrukkingen en gegevens in de editor voor het laden van gegevens.
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 '|');
Een visualisatie maken
Maak een tabelvisualisatie in een Qlik Sense-werkblad met Instrument, Player en Project als dimensies.
Resultaat
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
Uitleg
Dit voorbeeld laat zien dat als u meerdere exemplaren van de functie Subfield() gebruikt, elk met de parameter field_no weggelaten, binnen in dezelfde LOAD-opdracht, Cartesiaanse producten worden gemaakt van alle combinaties. De optie DISTINCT wordt gebruikt om te voorkomen dat dubbele records worden gemaakt.
Was deze pagina nuttig?
Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!