Przeskocz do zawartości głównej

FirstSortedValue — funkcja skryptu

Funkcja FirstSortedValue() zwraca wartość z wyrażenia podanego argumentem value, która odpowiada wynikowi posortowania według argumentu sort_weight z uwzględnieniem argumentu rank (jeśli został podany). W przypadku uzyskania więcej niż jednej wartości o takim samym wyniku sort_weight dla podanej wartości argumentu rank funkcja zwraca NULL.

Sortowane wartości są iterowane po liczbie rekordów (zgodnie z definicją z klauzuli group by) lub agregowane w pełnym zestawie danych, jeśli nie określono klauzuli group by.

Składnia:  

FirstSortedValue ([ distinct ] value, sort-weight [, rank ])

Typ zwracanych danych: podwójny

Argumenty:  

Argumenty FirstSortedValue
Argument Opis
value Expression Funkcja znajduje wartość wyrażenia value odpowiadającą wynikowi sortowania argumentu sort_weight.
sort-weight Expression Wyrażenie zawierające dane do sortowania. Znajdowana jest pierwsza (najniższa) wartość argumentu sort_weight, na podstawie której określana jest wartość wyrażenia podanego argumentem value. Jeśli przed argumentem sort_weight zostanie podany znak minusa, funkcja zwróci ostatnią (najwyższą) wartość z sortowania.
rank Expression

Podanie dla parametru rank wartości „n” większej niż 1 spowoduje zwrócenie n-tej wartości w kolejności sortowania.

distinct

Jeśli przed argumentami funkcji występuje słowo DISTINCT, wówczas duplikaty wynikające z wyników obliczenia argumentów funkcji są pomijane.

Przykłady i wyniki:  

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.

Przykład 1:  

Temp:

LOAD * inline [

Customer|Product|OrderNumber|UnitSales|CustomerID

Astrida|AA|1|10|1

Astrida|AA|7|18|1

Astrida|BB|4|9|1

Astrida|CC|6|2|1

Betacab|AA|5|4|2

Betacab|BB|2|5|2

Betacab|DD|12|25|2

Canutility|AA|3|8|3

Canutility|CC|13|19|3

Divadip|AA|9|16|4

Divadip|AA|10|16|4

Divadip|DD|11|10|4

] (delimiter is '|');

 

FirstSortedValue:

LOAD Customer,FirstSortedValue(Product, UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;

 

Wyniki przykładu 1
Pole wynikowe (Customer) Wartość wynikowa (MyProductWithSmallestOrderByCustomer)
Astrida CC
Betacab AA
Canutility AA
Divadip DD

Funkcja sortuje wartości UnitSales od najmniejszej do największej, wyszukując wartość Customer z najmniejszą wartością UnitSales, co odpowiada najmniejszemu zamówieniu.

Ponieważ CC odpowiada najmniejszemu zamówieniu (wartość UnitSales=2) dla Astrida klienta. AA odpowiada najmniejszemu zamówieniu (4) dla Betacab klienta, AA odpowiada najmniejszemu zamówieniu (8) dla Canutility klienta, a DD odpowiada najmniejszemu zamówieniu (10) dla Divadip klienta.

Przykład 2:  

Zakładając, że tabela Temp została załadowana jak w poprzednim przykładzie:

LOAD Customer,FirstSortedValue(Product, -UnitSales) as MyProductWithLargestOrderByCustomer Resident Temp Group By Customer;

 

Wyniki przykładu 2
Pole wynikowe (Customer) Wartość wynikowa (MyProductWithLargestOrderByCustomer)
Astrida AA
Betacab DD
Canutility CC
Divadip -

Argument sort_weight poprzedza znak minus, dlatego funkcja sortuje wartości od największych.

Ponieważ AA odpowiada największemu zamówieniu (wartość UnitSales:18) dla Astrida klienta, DD odpowiada największemu zamówieniu (12) dla Betacab klienta, a CC odpowiada największemu zamówieniu (13) dla Canutility klienta. Istnieją dwie identyczne wartości największego zamówienia (16) dla Divadip, klienta, w wyniku czego uzyskuje się wynik Null.

Przykład 3:  

Zakładając, że tabela Temp została załadowana jak w poprzednim przykładzie:

LOAD Customer,FirstSortedValue(distinct Product, -UnitSales) as MyProductWithSmallestOrderByCustomer Resident Temp Group By Customer;

 

Wyniki przykładu 3
Pole wynikowe (Customer) Wartość wynikowa (MyProductWithLargestOrderByCustomer)
Astrida AA
Betacab DD
Canutility CC
Divadip AA

Sytuacja wygląda tak samo jak w poprzednim przykładzie — jedynym wyjątkiem jest użycie kwalifikatora distinct. Powoduje to zignorowanie powielonego wyniku Divadip, umożliwiając zwrot wartości innych niż Null.

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

Dołącz do Programu Modernizacji Analityki

Remove banner from view

Przeprowadź modernizację bez szkody dla Twoich cennych aplikacji QlikView za pomocą programu Analytics Modernization Program. Kliknij tutaj aby uzyskać więcej informacji lub skontaktuj się z nami: ampquestions@qlik.com