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

| 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.<br><br><ul> <li>Jeśli <span>field_no</span> jest wartością dodatnią, wówczas fragmenty tekstu są wyodrębniane od strony lewej do prawej.</li> <li>Jeśli <span>field_no</span> jest wartością ujemną, wówczas fragmenty tekstu są wyodrębniane od strony 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 i wyniki:

Przykłady 1–3

| Przykład | Wynik |
| --- | --- |
| ` SubField('abc;cde;efg', ';', 2)  ` | Zwraca wartość 'cde' |
| ` SubField('', ';', 1)  ` | Zwraca wartość NULL |
| ` SubField(';', ';', 1)  ` | Zwraca pusty ciąg znaków. |

Dodaj przykładowy skrypt do dokumentu i uruchom go. Następnie dodaj do arkusza w swoim dokumencie co najmniej pola wyszczególnione w kolumnie wyników, aby wyświetlić wynik.

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

Przykład 4

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

Załóżmy, że masz zmienną, która przechowuje nazwę ścieżki vMyPath,

`Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;`.

W wykresie z tekstem i grafiką można dodać miarę, taką jak:  
`SubField(vMyPath, '\',-3``)`, czego wynikiem będzie „Qlik”, ponieważ jest to fragment tekstu trzeci od prawej strony zmiennej vMyPath.

W tym przykładzie pokazano, jak można utworzyć wiele wierszy na podstawie jednego wystąpienia funkcji Subfield().

Dodaj przykładowy skrypt do dokumentu i uruchom go. Następnie dodaj do arkusza w swoim dokumencie co najmniej pola wyszczególnione w kolumnie wyników, aby wyświetlić wynik.

`LOAD DISTINCT` `Player,` `SubField(Project,',') as Project;` ` ` `Load * inline [` `Player|Project` `Neil|Music,OST` `Jo|Music` `Mike|Music,OST,Video` `] (delimiter is '|');`

Przykład 5

| Player | Project |
| --- | --- |
| Neil | Music |
| Neil | OST |
| Jo | Music |
| Mike | Music |
| Mike | OST |
| Mike | Video |

Ten przykład pokazuje, w jaki sposób użycie wielu wystąpień funkcji Subfield(), każde z pominiętym parametrem field\_no, w ramach tej samej instrukcji LOAD, tworzy iloczyny kartezjańskie wszystkich kombinacji. Opcja DISTINCT służy do unikania tworzenia zduplikowanych rekordów.

Dodaj przykładowy skrypt do dokumentu i uruchom go. Następnie dodaj do arkusza w swoim dokumencie co najmniej pola wyszczególnione w kolumnie wyników, aby wyświetlić wynik.

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

Przykład 6

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