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

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(S,   ';' ,2)` | Liefert 'cde', wenn S 'abc;cde;efg' ist. |
| `SubField(S,   ';' ,1)` | Liefert einen leeren String, wenn S ein leerer String ist. |
| `SubField(S,   ';' ,1)` | Liefert einen leeren String, wenn S ';' ist. |
| Nehmen wir an, Sie haben eine Variable, die einen Pfadnamen enthält, vMyPath,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`. | In einem Text- und Bilddiagramm können Sie eine Kennzahl wie<br>`SubField(vMyPath, '\',-3``)` hinzufügen, woraus sich „Qlik“ ergibt, weil dies der Teilstring an dritter Stelle vom rechten Ende der Variablen vMyPath ist. |

## Beispiele: Skript- und Diagrammformeln mit SubField

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

#### Beispiele – Skript- und Diagrammformeln

### Einfache Beispiele

| Beispiel | Ergebnis |
| --- | --- |
| `SubField(S,   ';' ,2)` | Liefert 'cde', wenn S 'abc;cde;efg' ist. |
| `SubField(S,   ';' ,1)` | Liefert einen leeren String, wenn S ein leerer String ist. |
| `SubField(S,   ';' ,1)` | Liefert einen leeren String, wenn S ';' ist. |
| Nehmen wir an, Sie haben eine Variable, die einen Pfadnamen enthält, vMyPath,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`. | In einem Text- und Bilddiagramm können Sie eine Kennzahl wie<br>`SubField(vMyPath, '\',-3``)` hinzufügen, woraus sich „Qlik“ ergibt, weil dies der Teilstring an dritter Stelle vom rechten Ende der Variablen vMyPath ist. |

### Skriptbeispiel 1

#### Ladeskript

Laden Sie die folgenden Skriptformeln und Daten in den Dateneditor.

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

#### Erstellen einer Visualisierung

Erstellen Sie eine Tabellenvisualisierung in einem Qlik Sense Arbeitsblatt mit Name, FirstName und SurName als Dimensionen.

#### Ergebnis

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

#### Erläuterung

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.

### Skriptbeispiel 2

#### Ladeskript

Laden Sie die folgenden Skriptformeln und Daten in den Dateneditor.

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

#### Erstellen einer Visualisierung

Erstellen Sie eine Tabellenvisualisierung in einem Qlik Sense-Arbeitsblatt mit Instrument, Player und Project als Dimensionen.

#### Ergebnis

| 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, zu verhindern, dass duplizierte Datensätze erstellt werden.