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 parametern field_no 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. Använd värdet 1 om du vill returnera den första delsträngen, 2 om du vill returnera den delsträngen och så vidare.
Om field_no är ett positivt värde extraheras understrängar från vänster till höger.
Om field_no är ett negativt värde extraheras understrängar från höger till vänster.
Anteckning om tipsSubField() 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.
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning som läses in i en datatabell som heter Example.
Ett fält i datatabellen heter Name.
Laddningsskript
Example:
Load * inline [
Name
Dave Owen
Joe Tem
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:
Name
Skapa följande beräknade dimensioner:
=SubField(Name, ' ',1), för att extrahera den första delsträngen som visas före mellanslagsavgränsaren ' '.
=SubField(Name, ' ',-1), för att extrahera den första delsträngen som visas före mellanslagsavgränsaren ' ', med början från höger om strängen.
Results table
Name
SubField(Name, ' ',1)
SubField(Name, ' ',-1)
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
SubField()-funktionen extraherar den första delsträngen i Name genom att ställa in field_no på 1. Eftersom värdet i field_no är positivt, används ordningen vänster till höger vid extrahering av delsträngen. Ett andra funktionsanrop extraherar den andra delsträngen genom att ställa in argumentet field_no på -1, vilket extraherar delsträngen i ordningen höger till vänster.
Laddningsskript
Öppna Skriptredigeraren och lägg till följande laddningsskript till en ny flik.
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;
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
Name
FirstName
SurName
Results table
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
Förklaring
SubField-funktionen extraherar den första delsträngen, Name, genom att ställa in field_no på 1. Eftersom värdet i field_no är positivt, används ordningen vänster till höger vid extrahering av delsträngen. Ett andra funktionsanrop extraherar den andra delsträngen genom att ställa in argumentet field_no på -1, vilket extraherar delsträngen i ordningen höger till vänster.
Exempel – SubField-scenario
Översikt
En dataupsättning med produkter innehåller en produkttabell. Varje produkt i tabellen har ett taggfält som identifierar produktområdet. Produkter kan ha flera värden för taggfältet. Widget A har till exempel följande taggar: elektronik, prylar, hem. Taggvärdena separeras av pipetecknet (|) som avgränsare. Det här exemplet visar hur du extraherar specifika taggvärden med hjälp av SubField-funktionen.
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning som läses in i en datatabell som heter Example.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
ProductID
ProductName
Tags
Skapa följande beräknade dimensioner:
=SubField(Tags, '|',1), för att ta ut den första posten i Tags-fältet.
=SubField(Tags, '|',2), för att ta ut den andra posten i Tags-fältet.
=SubField(Tags, '|',3) för att ta ut den tredje posten i Tags-fältet.
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
-
Utdata från SubField-funktionerna har framgångsrikt returnerat taggarna från de relevanta positionerna i den ursprungliga Tags-strängen.
Laddningsskript
Öppna Skriptredigeraren och lägg till följande laddningsskript till en ny flik.
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 '|');
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
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
Förklaring
Det här exemplet visar hur användning av flera förekomster av Subfield()-funktionen, där parametern field_no har utelämnats, inom samma LOAD-sats skapar kartesiska produkter av alla kombinationerna. Alternativet DISTINCT används för att undvika att skapa dubbletter av poster.
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!