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
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.
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych załadowany do tabeli o nazwie Example.
Jedno pole w tabeli danych o nazwie Name.
Skrypt ładowania
Example:
Load * inline [
Name
Dave Owen
Joe Tem
];
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar:
Name
Utwórz następujące wymiary wyliczane:
=SubField(Name, ' ',1) do wyodrębnienia pierwszego podciągu, który pojawia się przed ogranicznikiem ' ' (spacja).
=SubField(Name, ' ',-1) do wyodrębnienia pierwszego podciągu, który pojawia się przed ogranicznikiem ' ' (spacja) począwszy od prawej strony ciągu.
Results table
Name
SubField(Name, ' ',1)
SubField(Name, ' ',-1)
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
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.
Skrypt ładowania
Otwórz Edytor ładowania danych i dodaj następujący skrypt ładowania do nowej karty.
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;
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
Name
FirstName
SurName
Results table
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
Objaśnienie
Funkcja SubField wyodrębnia pierwszy podciąg, 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 — zastosowanie SubField
Przegląd
Zestaw danych produktów zawiera tabelę produktów. Każdy produkt w tabeli ma pole znacznika, które identyfikuje obszar produktu. Produkty mogą mieć wiele wartości w polu znacznika. Na przykład Widget A ma następujące tagi: Electronics, Gadgets, Home. Wartości znaczników są oddzielone znakiem kreski pionowej (|) jako ogranicznikiem. Ten przykład pokazuje, jak wyodrębnić określone wartości znaczników za pomocą funkcji SubField.
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Zestaw danych załadowany do tabeli o nazwie Example.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
ProductID
ProductName
Tags
Utwórz następujące wymiary wyliczane:
=SubField(Tags, '|',1) do wyodrębnienia pierwszego elementu w polu Tags.
=SubField(Tags, '|',2) do wyodrębnienia drugiego elementu w polu Tags.
=SubField(Tags, '|',3) do wyodrębnienia trzeciego elementu w polu Tags.
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
-
W danych wyjściowych funkcji SubField zostały zwrócone znaczniki z odpowiednich pozycji w pierwotnym ciągu Tags.
Skrypt ładowania
Otwórz Edytor ładowania danych i dodaj następujący skrypt ładowania do nowej karty.
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 '|');
Wyniki
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:
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
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ć!