SubField - script- en grafiekfunctie
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:
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.
|
Voorbeelden en resultaten:
Voorbeeld | Resultaat |
---|---|
SubField('abc;cde;efg', ';', 2) | Retourneert 'cde' |
SubField('', ';', 1) | Retourneert NULL |
SubField(';', ';', 1) | Retourneert een lege tekenreeks |
Voeg het voorbeeldscript toe aan uw document en voer dit uit. Voeg vervolgens ten minste de velden die in de resultatenkolom staan aan een werkblad in uw document toe om het resultaat te bekijken.
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 |
Stel dat u een variabele hebt met de padnaam vMyPath,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.
In een diagram met tekst en afbeeldingen kunt u bijvoorbeeld de volgende meting toevoegen:
SubField(vMyPath, '\',-3), hetgeen resulteert in 'Qlik', omdat het de derde subtekenreeks vanaf de rechterzijde van de variabele vMyPath is.
Dit voorbeeld laat zien hoe meerdere rijen worden gemaakt op basis van een enkele instantie van Subfield().
Voeg het voorbeeldscript toe aan uw document en voer dit uit. Voeg vervolgens ten minste de velden die in de resultatenkolom staan aan een werkblad in uw document toe om het resultaat te bekijken.
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 |
In dit voorbeeld wordt getoond hoe met het gebruik van meerdere exemplaren van de functie Subfield(), elk zonder de parameter field_no, binnen dezelfde LOAD-instructie cartesische producten van alle combinaties worden gemaakt. De optie DISTINCT wordt gebruikt om te voorkomen dat gedupliceerde records worden gemaakt.
Voeg het voorbeeldscript toe aan uw document en voer dit uit. Voeg vervolgens ten minste de velden die in de resultatenkolom staan aan een werkblad in uw document toe om het resultaat te bekijken.
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 |