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.
Jeśli field_no jest wartością dodatnią, wówczas podciągi są wyodrębniane od lewej do prawej.
Jeśli field_no jest wartością ujemną, wówczas podciągi są wyodrębniane od prawej do lewej.
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 skryptów i wykresów używające funkcji SubField
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,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.
Na wykresie typu Tekst i grafika można dodać miarę, taką jak: 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.
Czy ta strona była pomocna?
Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!