Gå till huvudinnehåll

FirstSortedValue - skriptfunktion

FirstSortedValue() returnerar ett värde från uttrycket som har angetts under value som motsvarar resultatet av sorteringen av argumentet sort_weight. rank tas med i beräkningen om detta är angivet. Om fler än ett resultatvärde delar samma sort_weight för den angivna rank returnerar funktionen NULL.

De sorterade värdena itereras över ett antal poster, enligt vad som definieras i en group by-sats, eller aggregerat över den fullständiga datauppsättningen om ingen group by-sats har definierats.

Syntax:  

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

Returnerad datatyp: dual

Argument:  

FirstSortedValue-argument
Argument Beskrivning
value Expression Funktionen finner värdet av uttrycket value som motsvarar resultatet vid sortering av sort_weight.
sort-weight Expression Uttrycket som innehåller data som ska sorteras. Det första (lägsta) värdet i sort_weight hittas, varifrån motsvarande värde i uttrycket value fastställs. Om du sätter ett minustecken framför sort_weight returnerar funktionen det sista (högsta) sorterade värdet i stället.
rank Expression

Genom att ange rank "n" som är större än 1 får du det n:te sorterade värdet.

distinct

Om predikatet DISTINCT förekommer framför funktionsargumenten ignoreras alla dubbletter som evaluerats utifrån funktionsargumenten.

Exempel och resultat:  

Lägg till exempelskriptet i dokumentet och kör det. Lägg sedan till åtminstone de fält som listas i resultatkolumnen på ett ark i vårt dokument för att se resultatet.

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

 

Resultat för exempel 1
Resultatfält (Customer) Resultatvärde (MyProductWithSmallestOrderByCustomer)
Astrida CC
Betacab AA
Canutility AA
Divadip DD

Funktionen sorterar UnitSales från den minsta till den största, och söker efter värdet Customer med det minsta värdet för UnitSales, den minsta ordern.

Eftersom CC motsvarar den minsta ordern (värdet UnitSales = 2) för kunden Astrida. AA motsvarar den minsta ordern (4) för kunden Betacab, AA motsvarar den minsta ordern (8) för kunden Canutility, och DD motsvarar den minsta ordern (10) för kunden Divadip.

Exempel 2:  

Givet att Temp-tabellen är laddad som i föregående exempel:

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

 

Resultat för exempel 2
Resultatfält (Customer) Resultatvärde (MyProductWithLargestOrderByCustomer)
Astrida AA
Betacab DD
Canutility CC
Divadip -

Argumentet sort_weight inleds med ett minustecken så att funktionen sorterar den största först.

Eftersom AA motsvarar den största ordern (värdet av UnitSales:18) för kunden Astrida, DD motsvarar den största ordern (12) för kunden Betacab och CC motsvarar den största ordern (13) för kunden Canutility. Det finns två identiska värden för den största ordern (16) för kunden Divadip, därför producerar detta ett null-resultat.

Exempel 3:  

Givet att Temp-tabellen är laddad som i föregående exempel:

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

 

Resultat för exempel 3
Resultatfält (Customer) Resultatvärde (MyProductWithLargestOrderByCustomer)
Astrida AA
Betacab DD
Canutility CC
Divadip AA

Detta är samma som i föregående exempel, förutom att kvalificeraren distinct används. Detta gör att dubblettresultatet för Divadip ignoreras, så att ett icke-null-värde kan returneras.

Var den här sidan till hjälp för dig?

Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!

Gå med i programmet Analytics Modernization

Remove banner from view

Modernisera utan att kompromissa med dina värdefulla QlikView-appar med programmet för analysmodernisering. Klicka här för mer information eller ta kontakt: ampquestions@qlik.com