Saltar al contenido principal

FirstSortedValue - función de script

La función FirstSortedValue() devuelve el valor de la expresión especificado en value que se corresponda con el resultado de ordenar el argumento sort_weight, teniendo en cuenta rank, si se especifica. Si más de un valor obtenido comparte el mismo sort_weight para el rank especificado, la función devuelve NULL.

Los valores ordenados se repiten a lo largo de una serie de registros, definidos por una cláusula group by, o se agregan a todo el conjunto completo de datos si no se ha definido ninguna cláusula group by.

Sintaxis:  

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

Tipo de datos que devuelve: dual

Argumentos:  

Argumentos de FirstSortedValue
Argumento Descripción
value Expression La función halla el valor de la expresión value que corresponde al resultado de ordenar sort_weight.
sort-weight Expression La expresión que contiene los datos que se han de ordenar. Encuentra el primer valor (y el más bajo) de sort_weight, desde el que se determina el correspondiente valor de la expresión value. Si coloca un signo menos delante de sort_weight, la función devuelve el último valor (el más alto) en orden.
rank Expression

Si se establece un rank "n" mayor que 1, devolverá el enésimo valor en orden.

distinct

Si la palabra DISTINCT aparece antes que los argumentos de la función, se descartarán los duplicados resultantes de evaluar los argumentos de la función.

Ejemplos y resultados:  

Añada el script de ejemplo a su documento y ejecútelo. A continuación, añada como mínimo los campos de la columna de resultados a una hoja de nuestro documento para ver el resultado.

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

 

Resultados del ejemplo 1
Campo de resultados (Customer) Valor del resultado (MyProductWithSmallestOrderByCustomer)
Astrida CC
Betacab AA
Canutility AA
Divadip DD

La función ordena UnitSales de menor a mayor, buscando el valor de Customer con el menor valor de UnitSales, el orden más pequeño.

Porque CC se corresponde con el menor valor (valor de UnitSales=2) para el cliente Astrida. AA corresponde al pedido más pequeño (4) para el cliente Betacab, AA corresponde al pedido más pequeño (8) para el cliente Canutility y DD corresponde al pedido más pequeño (10) para el cliente Divadip.

Ejemplo 2:  

Dado que la tabla Temp se carga como en el ejemplo anterior:

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

 

Resultados del ejemplo 2
Campo de resultado (Customer) Valor del resultado (MyProductWithLargestOrderByCustomer)
Astrida AA
Betacab DD
Canutility CC
Divadip -

Un signo menos precede al argumento sort_weight, así que la función ordena el más grande primero.

Porque AA corresponde al pedido más grande (valor de UnitSales:18) para el cliente Astrida, DD corresponde al pedido más grande (12) para el cliente Betacab y CC corresponde al pedido más grande (13) para el cliente Canutility. Hay dos valores idénticos para el pedido más grande (16) para el cliente Divadip, por lo tanto esto da un resultado nulo.

Ejemplo 3:  

Dado que la tabla Temp se carga como en el ejemplo anterior:

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

 

Resultados del ejemplo 3
Campo de resultado (Customer) Valor del resultado (MyProductWithLargestOrderByCustomer)
Astrida AA
Betacab DD
Canutility CC
Divadip AA

Esto es igual al ejemplo anterior, excepto en que se utiliza el cualificador distinct. Esto hace que se descarte el resultado duplicado de Divadip, permitiendo que devuelva un valor no nulo.

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.

Únase al Programa de modernización de la analítica

Remove banner from view

Modernícese sin comprometer sus valiosas aplicaciones de QlikView con el Programa de modernización de la analítica. Haga clic aquí para obtener más información o contactar con nosotros: ampquestions@qlik.com