Vai al contenuto principale

FirstSortedValue - funzione di script

FirstSortedValue() restituisce il valore dell’espressione specificata in value che corrisponde al risultato della classificazione dell’argomento a sort_weight, ad esempio, il nome del prodotto con il prezzo unitario più basso. Il valore n nell’ordine di classificazione può essere specificato in rank. Se più valori risultanti condividono lo stesso sort_weight per il rank specificato, la funzione restituisce NULL. I valori classificati vengono ripetuti su un insieme di record, come definito da una clausola group by, o aggregati tra la serie di dati completa, qualora la clausola group by non sia stata definita.

Syntax:  

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

Return data type: dual

Arguments:  

Argument Description
value Expression La funzione trova il valore dell’espressione value che corrisponde al risultato della classificazione di sort_weight.
sort-weight Expression L'espressione contenente i dati da ordinare. Viene trovato il primo valore (il più basso) di sort_weight dal quale viene determinato il valore corrispondente dell'espressione value. Inserendo un segno meno davanti a sort_weight, la funzione restituisce invece l'ultimo valore ordinato (il più elevato).
rank Expression

Dichiarando un valore "n" di rank maggiore di 1, si otterrà il valore n-esimo nell'ordine.

distinct

Se la parola DISTINCT è riportata prima degli argomenti della funzione, i duplicati risultanti dalla valutazione degli argomenti della funzione vengono ignorati.

Examples and results:  

Aggiungere lo script di esempio all'app ed eseguirlo. Aggiungere quindi a un foglio nell'app almeno i campi elencati nella colonna dei risultati per visualizzare il risultato.

Per ottenere lo stesso aspetto della colonna dei risultati mostrata di seguito, nel pannello delle proprietà, in Ordinamento passare da Automatico a Personalizza, quindi deselezionare l'ordinamento numerico e alfabetico.

Example Result

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;

Customer MyProductWithSmallestOrderByCustomer

Astrida CC

Betacab AA

Canutility AA

Divadip DD

The function sorts UnitSales from smallest to largest, looking for the value of Customer with the smallest value of UnitSales, the smallest order.

Because CC corresponds to the smallest order (value of UnitSales=2) for customer Astrida. AA corresponds to the smallest order (4) for customer Betacab, AA corresponds to the smallest order (8) for customer Canutility, and DD corresponds to the smallest order (10) for customer Divadip..

Given that the Temp table is loaded as in the previous example:

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

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip -

A minus sign precedes the sort_weight argument, so the function sorts the largest first.

Because AA corresponds to the largest order (value of UnitSales:18) for customer Astrida, DD corresponds to the largest order (12) for customer Betacab, and CC corresponds to the largest order (13) for customer Canutility. There are two identical values for the largest order (16) for customer Divadip, therefore this produces a null result.

Given that the Temp table is loaded as in the previous example:

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

Customer MyProductWithLargestOrderByCustomer

Astrida AA

Betacab DD

Canutility CC

Divadip AA

This is the same as the previous example, except the distinct qualifier is used. This causes the duplicate result for Divadip to be disregarded, allowing a non-null value to be returned.