# 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 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

| 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.<br><br><ul> <li>Om <span>field_no</span> är ett positivt värde extraheras understrängar från vänster till höger.</li> <li>Om <span>field_no</span> är ett negativt värde extraheras understrängar från höger till vänster.</li> </ul> |

Anteckning om tips SubField() 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.

Exempel: diagramuttryck

| Exempel | Resultat |
| --- | --- |
| `SubField(S,   ';' ,2)` | Returnerar 'cde' om S är 'abc;cde;efg'. |
| `SubField(S,   ';' ,1)` | Returnerar en tom sträng om S är en tom sträng. |
| `SubField(S,   ';' ,1)` | Returnerar en tom sträng om S är ';'. |
| Anta att du har en variabel som innehåller ett sökvägsnamn vMyPath,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`. | I ett text- och bilddiagram kan du lägga till mått, t.ex.<br>`SubField(vMyPath, '\',-3``)`, som resulterar i 'Qlik', eftersom det är den tredje delsträngen till höger om variabeln vMyPath. |

## Exempel: skript- och diagramuttryck som använder SubField

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubField.htm)

#### Exempel – skript- och diagramuttryck

### Grundläggande exempel

| Exempel | Resultat |
| --- | --- |
| `SubField(S,   ';' ,2)` | Returnerar 'cde' om S är 'abc;cde;efg'. |
| `SubField(S,   ';' ,1)` | Returnerar en tom sträng om S är en tom sträng. |
| `SubField(S,   ';' ,1)` | Returnerar en tom sträng om S är ';'. |
| Anta att du har en variabel som innehåller ett sökvägsnamn vMyPath,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`. | I ett text- och bilddiagram kan du lägga till mått, t.ex.<br>`SubField(vMyPath, '\',-3``)`, som resulterar i 'Qlik', eftersom det är den tredje delsträngen till höger om variabeln vMyPath. |

### Skriptexempel 1

#### Laddningsskript

Ladda följande skriptuttryck och data i skriptredigeraren.

```
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;
```

#### Skapa en visualisering

Skapa en tabellvisualisering i ett Qlik Sense-ark med Name, FirstName och SurName som dimensioner.

#### Resultat

| Name | FirstName | SurName |
| --- | --- | --- |
| Dave Owen | Dave | Owen |
| Joe Tem | Joe | Tem |

#### Förklaring

Funktionen SubField() extraherar den första delsträngen i Name genom att ställa in argumentet 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.

### Skriptexempel 2

#### Laddningsskript

Ladda följande skriptuttryck och data i skriptredigeraren.

```
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 '|');
```

#### Skapa en visualisering

Skapa en tabellvisualisering i ett Qlik Sense-ark med Instrument, Player och Project som dimensioner.

#### Resultat

| 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 instanser av funktionen Subfield(), 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.