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. 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.
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensverzameling die wordt geladen in een tabel met de naam Example.
Eén veld in de gegevenstabel met de naam Name.
Load-script
Example:
Load * inline [
Name
Dave Owen
Joe Tem
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:
Name
Maak de volgende berekende dimensies:
=SubField(Name, ' ',1) om de eerste subreeks te extraheren die vóór de spatie van het ' ' scheidingsteken verschijnt.
=SubField(Name, ' ',-1) om de eerste subtekenreeks te extraheren die vóór de spatie van het ' ' scheidingsteken verschijnt, beginnend vanaf de rechterkant van de tekenreeks.
Results table
Name
SubField(Name, ' ',1)
SubField(Name, ' ',-1)
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
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.
Load-script
Open de Editor voor laden van gegevens en voeg het volgende load-script toe aan een nieuw tabblad.
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;
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
Name
FirstName
SurName
Results table
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
Uitleg
De functie SubField haalt de eerste subtekenreeks op, 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.
Voorbeeld 5 – Scenario met SubField
Overzicht
Een gegevensverzameling van producten bevat een producttabel. Elk product in de tabel heeft een tagveld dat het productgebied identificeert. Producten kunnen meerdere waarden voor het tagveld hebben. Widget A heeft bijvoorbeeld de volgende tags: Electronics, Gadgets, Home. Tagwaarden worden gescheiden door het sluisteken (|) als scheidingsteken. Dit voorbeeld laat zien hoe u specifieke tagwaarden kunt extraheren met de functie SubField.
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensverzameling die wordt geladen in een tabel met de naam Example.
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
ProductID
ProductName
Tags
Maak de volgende berekende dimensies:
=SubField(Tags, '|',1) om het eerste item uit het veld Tags te extraheren.
=SubField(Tags, '|',2) om het tweede item uit het veld Tags te extraheren.
=SubField(Tags, '|',3) om het tweede item uit het veld Tags te extraheren.
Results table
ProductID
ProductName
Tags
SubField(Tags, '|', 1)
SubField(Tags, '|', 2)
SubField(Tags, '|', 3)
1
Widget A
Electronics|Gadgets|Home
Electronics
Gadgets
Home
2
Widget B
Electronics|Accessories
Electronics
Accessories
-
3
Widget C
Furniture|Home
Furniture
Home
-
4
Widget D
Gadgets|Accessories
Gadgets
Accessories
-
De uitvoer van de SubField functies heeft met succes de tags van de relevante posities in de oorspronkelijke Tags tekenreeks geretourneerd.
Load-script
Open de Editor voor laden van gegevens en voeg het volgende load-script toe aan een nieuw tabblad.
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 '|');
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
Instrument
Player
Project
Results table
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!