# SubField - script- en diagramfunctie

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.<br><br><ul> <li>Als <span>field_no</span> een positieve waarde is, worden subtekenreeksen van links naar rechts geëxtraheerd.</li> <li>Als <span>field_no</span> een negatieve waarde is, worden subtekenreeksen van rechts naar links geëxtraheerd.</li> </ul> |

Tip SubField() 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,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`zijn. | In een diagram met tekst en afbeelding kunt u een meting toevoegen, zoals:<br>`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

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

#### Voorbeelden - script- en diagramuitdrukkingen

### 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,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`zijn. | In een diagram met tekst en afbeelding kunt u een meting toevoegen, zoals:<br>`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.