Skip to main content
Announcements
YOUR OPINION MATTERS! Please take the Qlik Experience survey you received via email. Survey ends June 14.
cancel
Showing results for 
Search instead for 
Did you mean: 
jmmayoral3
Creator
Creator

Problemas obteniendo en valor máximo de un número

Hola.

Tengo un problema bastante raro para el que no encuentro solución.

Tengo estos datos en un excel (escritos justo así, respetando separadores decimales y de miles):

                            

Dim1Exp1Exp2
21366501944,90
81119163325,40
8858402392,59
2849622964,98

Quiero obtener el valor de Dim1 que contiene el valor más alto de  Exp1 y de Exp2.

He creado 4 cuadros de texto con las siguientes fórmulas:

1) =MAX(Exp1) ----> Devuelve el valor más alto de Exp1, o sea, 136650

2) =MAX(Exp2) ----> Devuelve el valor más alto de Exp2, o sea, 3325,40

3) =concat( {$<[Exp1] =  {$(=MAX([Exp1]))}>} Dim1,'\n ') ---> Devuelve el valor de Dim1 que tiene el valor más alto en Exp1, o sea, me devuelve '2' (si tuviera varios valores máximos en Exp1, me devolvería, separados por un salto de línea, todos los valores posibles de Dim1 que corresponden con ese valor máximo de Exp1)

4) =concat( {$<[Exp2] =  {$(=MAX([Exp2]))}>} Dim1,'\n ') ----> ¡¡¡ NO DEVUELVE NADA!!!!

¿Por qué no devuelve nada?

He llegado a la conclusión de que el problema podría estar en el formato de los números, pero no estoy seguro. He probado a cambiar formatos pero el problema continua.

La configuración regional de mi equipo usa '.' (punto) como separador de miles y ',' (coma) como separador decimal. Excel está usando también esos símbolos para separar millares y decimales respectivamente.

En el script estoy usando:

SET MoneyThousandSep='.';

SET MoneyDecimalSep=',';

5 Replies
jolivares
Specialist
Specialist

Realmente creo que debes precisamente hacer una conversion de los valores, mientras tanto cuando hagas el load de los datos has la conversion.

Load ...

Num(Num#(Exp2,'#,##')) as Exp2

...

Verifica el resultado.

jmmayoral3
Creator
Creator
Author

Acabo de probarlo y sigue sin funcionar.

alexis_garcia
Creator II
Creator II

Hola, en el excel, entiendo que están en formato numérico, no?

Si es así, prueba a poner en lugar de max o sum en lugar de concat, a ver si así funciona el set analysis.

Un saludo.

jmmayoral3
Creator
Creator
Author

Si. Están en formato numérico y SUM, MAX y MIN se comportan exactamente igual que Concat.

He encontrado una solución alternativa utilizando la función FirstSortedValue(Dim1,-[Exp2]).... pero sigo intrigado por qué no funciona mi primera opción cuando se trata de números con decimales y funciona perfectamente con números naturales.

En cualquier caso sigo necesitando usar la función Concat en un caso muy concreto y para ello necesito encontrar una explicación al problema..

jmmayoral3
Creator
Creator
Author

Al final he encontrado una solución aunque sigo sin encontrar una explicación al problema.

La solución pasa por cargar el campo Exp2 dos veces en el LOAD. Una vez con su valor tal cual y otra multiplicándolo por 1000 para quitarle los decimales y que la expresión funcione.

Osea, el LOAD sería algo así.

LOAD

Dim1,

Exp1,

Exp2,

Exp2 * 1000 as Aux_Exp2

From.......

Luego sustituimos en la expresión EXP2 por Aux_Exp2 de modo que quedaría así.

=concat( {$<[Aux_Exp2] =  {$(=MAX([Aux_Exp2]))}>} Dim1,'\n ')


Y esto funciona perfectamente. O sea, por algún motivo a este tipo de expresiones se le atragantan los decimales.