# SubField — funkcja skryptu i funkcja wykresu

Funkcja Subfield() służy do wyodrębniania składników fragmentu tekstu z nadrzędnego pola ciągu znaków, gdy pierwotne pola rekordów składają się z co najmniej dwóch części rozdzielonych ogranicznikiem.

Funkcja Subfield() może być używana na przykład do wyodrębniania imienia i nazwiska z listy rekordów składających się z nazwisk, elementów nazwy ścieżki, lub wyodrębniania danych z tabel rozdzielanych przecinkami.

W przypadku korzystania z funkcji Subfield() w instrukcji LOAD z pozostawionym opcjonalnym parametrem field\_no, dla każdego ciągu podrzędnego zostanie wygenerowany jeden pełny rekord. Jeśli przy użyciu funkcji Subfield() załadowano kilka pól, wówczas zostanie wygenerowany iloczyn kartezjański wszystkich kombinacji.

Składnia:

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

Typ zwracanych danych: ciąg znaków

Argumenty:

Argumenty

| Argument | Opis |
| --- | --- |
| text | Pierwotny ciąg znaków. Może to być tekst ustalony, zmienna, rozszerzenie przez znak dolara lub inne wyrażenie. |
| delimiter | Znak w tekście wejściowym text, który dzieli ciąg znaków na elementy. |
| field\_no | Opcjonalny trzeci argument jest liczbą całkowitą, określającą, które z ciągów podrzędnych tekstu nadrzędnego text ciągu znaków mają zostać zwrócone. Użycie wartości 1 spowoduje zwrócenie pierwszego fragmentu tekstu, a wartości 2 zwrócenie drugiego fragmentu tekstu, i tak dalej.<br><br><ul> <li>Jeśli <span>field_no</span> jest wartością dodatnią, wówczas podciągi są wyodrębniane od lewej do prawej.</li> <li>Jeśli <span>field_no</span> jest wartością ujemną, wówczas podciągi są wyodrębniane od prawej do lewej.</li> </ul> |

Wskazówka Funkcja SubField() może być stosowana zamiast złożonych kombinacji funkcji, takich jak Len(), Right(), Left(), Mid() i inne funkcje ciągów znaków.

Przykłady: wyrażenia wykresu

| Przykład | Wynik |
| --- | --- |
| `SubField(S,   ';' ,2)` | Zwraca 'cde', jeśli S wynosi 'abc;cde;efg'. |
| `SubField(S,   ';' ,1)` | Zwraca pusty ciąg znaków, jeśli S jest pustym ciągiem znaków. |
| `SubField(S,   ';' ,1)` | Zwraca pusty ciąg znaków, jeśli S jest równe ';'. |
| Załóżmy, że istnieje zmienna, która przechowuje nazwę ścieżki vMyPath,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`. | Na wykresie typu Tekst i grafika można dodać miarę, taką jak:<br>`SubField(vMyPath, '\',-3``)`, czego wynikiem będzie „Qlik”, ponieważ jest to fragment ciągu trzeci od prawej strony zmiennej vMyPath. |

## Przykłady: wyrażenia skryptów i wykresów używające funkcji SubField

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

#### Przykłady — wyrażenia skryptów i wykresów

### Przykłady podstawowe

| Przykład | Wynik |
| --- | --- |
| `SubField(S,   ';' ,2)` | Zwraca 'cde', jeśli S wynosi 'abc;cde;efg'. |
| `SubField(S,   ';' ,1)` | Zwraca pusty ciąg znaków, jeśli S jest pustym ciągiem znaków. |
| `SubField(S,   ';' ,1)` | Zwraca pusty ciąg znaków, jeśli S jest równe ';'. |
| Załóżmy, że istnieje zmienna, która przechowuje nazwę ścieżki vMyPath,<br><br>`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`. | Na wykresie typu Tekst i grafika można dodać miarę, taką jak:<br>`SubField(vMyPath, '\',-3``)`, czego wynikiem będzie „Qlik”, ponieważ jest to fragment ciągu trzeci od prawej strony zmiennej vMyPath. |

### Przykład skryptu 1

#### Skrypt ładowania

Załaduj następujące wyrażenia skryptu i dane w edytorze ładowania danych.

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

#### Tworzenie wizualizacji

Utwórz wizualizację tabeli w arkuszu Qlik Sense z wymiarami Name, FirstName i SurName.

#### Wynik

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

#### Objaśnienie

Funkcja SubField() wyodrębnia pierwszy podciąg z Name, ustawiając argument field\_no na 1. Ponieważ wartość field\_no jest dodatnia, w celu wyodrębnienia podciągu stosuje się kolejność od lewej do prawej. Drugie wywołanie funkcji wyodrębnia drugi podciąg, ustawiając argument field\_no na –1, co powoduje wyodrębnienie podciągu w kolejności od prawej do lewej.

### Przykład skryptu 2

#### Skrypt ładowania

Załaduj następujące wyrażenia skryptu i dane w edytorze ładowania danych.

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

#### Tworzenie wizualizacji

Utwórz wizualizację tabeli w arkuszu Qlik Sense z wymiarami Instrument, Player i Project

#### Wynik

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

#### Objaśnienie

Ten przykład przedstawia, jak używając wielu instancji funkcji Subfield() (w każdej pomijając parametr field\_no) z tej samej instrukcji LOAD powoduje utworzenie iloczynów kartezjańskich wszystkich kombinacji. Opcja DISTINCT służy do unikania tworzenia zduplikowanych rekordów.