# SubField Skript- und Diagrammfunktion

SubField() wird zur Extrahierung von Teilstring-Komponenten aus einem übergeordneten Stringfeld verwendet, bei dem die Ursprungsdatensatzfelder aus zwei oder mehr Teilen bestehen, die durch ein Trennzeichen getrennt sind.

Die Funktion Subfield() kann zum Beispiel verwendet werden, um Vor- und Nachnamen aus einer Liste von Datensätzen, die aus Vor- und Nachname bestehen, die Komponenten eines Pfadnamens oder Daten aus kommagetrennten Tabellen zu extrahieren.

Wenn Sie die Funktion Subfield() in einem LOAD-Befehl ohne den optionalen Parameter field\_no verwenden, wird für jeden Teilstring ein vollständiger Datensatz generiert. Wenn mehrere Felder mit Subfield() geladen werden, werden die kartesischen Produkte aller Kombinationen erstellt.

Syntax:

SubField(text, delimiter[, field\_no ])

Rückgabe Datentyp: String

Argumente

| Argument | Beschreibung |
| --- | --- |
| text | Der Original-String. Dabei kann es sich um hartcodierten Text, eine Variable, eine Dollarzeichenerweiterung oder eine andere Formel handeln. |
| delimiter | Ein Zeichen in der Eingabe text, das den String in Komponenten aufteilt. |
| field\_no | Das optionale dritte Argument ist eine Ganzzahl, die angibt, welcher der Teilstrings des übergeordneten Strings text geliefert werden soll. Verwenden Sie den Wert 1, um den ersten Teilstring zurückzugeben, den Wert 2, um den zweiten Teilstring zurückzugeben, usw.<br><br><ul> <li>Wenn <span>field_no</span> ein positiver Wert ist, werden Teilstrings von links nach rechts extrahiert.</li> <li>Wenn <span>field_no</span> ein negativer Wert ist, werden Teilstrings von rechts nach links extrahiert.</li> </ul> |

Tipphinweis SubField() kann anstelle komplexer Kombinationen von Funktionen wie Len(), Right(), Left(), Mid() und anderen Stringfunktionen verwendet werden.

Beispiele: Diagrammformeln

| Beispiel | Ergebnis |
| --- | --- |
| `SubField( 'abc;cde;efg',   ';' ,2 )` | Liefert `cde` |
| `SubField( Null,   ';' ,1 )` | Gibt einen leeren String zurück |
| `SubField( ';',   ';' ,1 )` | Gibt einen leeren String zurück |
| `SubField( '\Users\ext_jrb\Documents\Qlik\Sense\Apps;','\',-3 )` | Liefert `Qlik` |

## Beispiel – Grundlegendes zu „SubField“

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

#### Diagrammformel

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Datensatz, der in eine Datentabelle namens `Example` geladen wird

* Ein Feld in der Datentabelle heißt `Name`.

Ladeskript

```
Example:
Load * inline [
Name
Dave Owen
Joe Tem
];
```

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie dieses Feld als Dimension hinzu:

* ` Name
                                   `

Erstellen Sie die folgenden dynamischen Dimensionen:

* `=SubField(Name, ' ',1)`, um den ersten Teilstring zu extrahieren, der vor dem Leerzeichen-Trennzeichen `' '` steht.

* `=SubField(Name, ' ',-1)`, um den ersten Teilstring zu extrahieren, der vor dem Leerzeichen-Trennzeichen `' '` steht, beginnend auf der rechten Seite des Strings.

Results table

| Name | SubField(Name, ' ',1) | SubField(Name, ' ',-1) |
| --- | --- | --- |
| Dave Owen | Dave | Owen |
| Joe Tem | Joe | Tem |

Die Funktion `SubField()` extrahiert den ersten Teilstring von `Name`, indem das Argument `field_no` auf 1 gesetzt wird. Da der Wert von `field_no` positiv ist, wird eine Reihenfolge von links nach rechts zum Extrahieren des Teilstrings verwendet. Ein zweiter Funktionsaufruf extrahiert den zweiten Teilstring, indem das Argument `field_no` auf -1 gesetzt wird. Dadurch wird der Teilstring in einer Reihenfolge von rechts nach links extrahiert.

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

#### Ladeskript

Ladeskript

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript in einen neuen Abschnitt ein.

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* `Name`
* `FirstName`
* `SurName`

Results table

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

Erläuterung

Die Funktion `SubField` extrahiert den ersten Teilstring `Name`, indem das Argument `field_no` auf 1 gesetzt wird. Da der Wert von `field_no` positiv ist, wird eine Reihenfolge von links nach rechts zum Extrahieren des Teilstrings verwendet. Ein zweiter Funktionsaufruf extrahiert den zweiten Teilstring, indem das Argument `field_no` auf -1 gesetzt wird. Dadurch wird der Teilstring in einer Reihenfolge von rechts nach links extrahiert.

## Beispiel – Szenario für „SubField“

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

#### Diagrammformel

Übersicht

Ein Produktdatensatz enthält eine Produkttabelle. Jedes Produkt in der Tabelle hat ein Tag-Feld, das den Produktbereich identifiziert. Produkte können mehrere Werte für das Tag-Feld haben. Widget A hat zum Beispiel die folgenden Tags: Elektronik, Gadgets, Heim. Tag-Werte werden durch das Pipe-Zeichen (|) als Trennzeichen getrennt. Dieses Beispiel zeigt, wie Sie mit der Funktion `SubField` bestimmte Tag-Werte extrahieren können.

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Datensatz, der in eine Datentabelle namens `Example` geladen wird

* Die folgenden Felder in der Datentabelle:

  * `ProductID`

  * `ProductName`

  * `Tags`

  * `Sales`

Ladeskript

```
Example:
Load  *
INLINE [
ProductID, ProductName, Tags, Sales
1, Widget A, Electronics|Gadgets|Home, 150
2, Widget B, Electronics|Accessories, 200
3, Widget C, Furniture|Home, 100
4, Widget D, Gadgets|Accessories, 250
];
```

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* ` ProductID
                                   `

* `ProductName`

* `Tags`

Erstellen Sie die folgenden dynamischen Dimensionen:

* `=SubField(Tags, '|',1)`, um den ersten Eintrag im Feld `Tags` zu extrahieren.

* `=SubField(Tags, '|',2)`, um den zweiten Eintrag im Feld `Tags` zu extrahieren.

* `=SubField(Tags, '|',3)`, um den dritten Eintrag im Feld `Tags` zu extrahieren.

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

Die Ausgabe der Funktionen `SubField` hat erfolgreich die Tags von den entsprechenden Positionen im ursprünglichen `Tags`-String zurückgegeben.

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

#### Ladeskript

Ladeskript

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript in einen neuen Abschnitt ein.

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

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

Erläuterung

Dieses Beispiel zeigt, wie durch die Verwendung mehrerer Instanzen der Funktion Subfield() jeweils ohne den Parameter field\_no aus demselben LOAD-Befehl heraus kartesische Produkte aller Kombinationen erstellt werden. Die Option DISTINCT dient dazu, die Erstellung duplizierter Datensätze zu verhindern.