Skip to main content
Announcements
Qlik Connect 2025: 3 days of full immersion in data, analytics, and AI. May 13-15 | Orlando, FL: Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Mapeo de Valores en Expresion

Buenos días a todos.

Primero quiero decir que sé que si la pregunta se hiciera en inglés mas gente podría ayudarme, pero como creo que no sería capaz de explicarme correctamente en inglés hago la pregunta en español.

Mi problema es que necesito crear una dimensión calculada para que dependiendo del valor de una expresión (un Sum) calcule a que tramo corresponde el resultado de esa expresión.

Explicado con mas detalle, tengo muchos puntos de venta, y dentro de cada uno de ellos (y dependiendo de la seleccion actual) tengo que ver que unidades se le han enviado y dependiendo su servicio tiene que ir a un tramo de servicio o a otro. Un punto de Venta corresponde a un tramo de Servicio.

No puedo calcular los tramos a nivel de Script, porque depende de la selección realizada.

Un ejemplo del resultado sería algo como la imagen que adjunto.

Este resultado lo conseguido con la siguiente expresión, pero el problema es que no es óptima y debido a la información existente tarda mucho tiempo en cargar (2-3 minutos en el cliente Windows, en Web ni siquiera lo abre).

Aggr(If($(vAuxTramoServicio) = 1, 1, If($(vAuxTramoServicio)=2, 2, If($(vAuxTramoServicio)=3,3, If($(vAuxTramoServicio)=4,4, If($(vAuxTramoServicio)=5,5, If($(vAuxTramoServicio)>=6 And $(vAuxTramoServicio) <=10, '6 a 10', If($(vAuxTramoServicio)>=11 And $(vAuxTramoServicio) <=25,'11 a 25', If($(vAuxTramoServicio)>=26 And $(vAuxTramoServicio) <=50,'26 a 50', If($(vAuxTramoServicio)>=51 And $(vAuxTramoServicio) <=100,'51 a 100', If($(vAuxTramoServicio)>=101,'Más de 100')))))))))), CLAVE_PUNTO_VENTA, COD_NUMERO)

vAuxTramoServicio es

Sum({<[ESTADO_PUNTO_VENTA]={'Final'}>} NUM_ENTREGADOS + NUM_COMPLEMENTOS)

He intentado alguna alternativa, pero no soy capaz de que funcione ninguna.

Primero he probado con ApplyMap, pero me he dado cuenta que solo funciona esa función en Script, porque los Load Mapping se eliminan cuando termina el script.

He cargado unos Excel con el mapeo de cada uno de los resultados posibles a que tramo correspondería, pero no he conseguido la expresión que funcione.

He probado con FieldValue y FieldIndex, pero el problema es que FieldValue son valores distintos, por lo que no puedo sacar el indice correcto para sacar el valor que le corresponde. Me refiero a que por ejemplo si el servicio es 8, no me saca el tramo de servicio del 8, sino el 8º valor de TramoServicio.

Aggr(FieldValue(TramoServicio, FieldIndex(EjemplaresServicio, $(vAuxTramoServicio))), CLAVE_PUNTO_VENTA, COD_NUMERO)

También he probado con alguna función parecida a esta, pero no me funciona:

Aggr(Only(If(EjemplaresServicio=$(vAuxTramoServicio), TramoServicio)), CLAVE_PUNTO_VENTA, COD_NUMERO)

Las pruebas que he realizado con If me dan valores nulos.

Por favor, a ver si alguien puede ayudarme o darme una idea con la que poder seguir trabajando para optimizar la expresión de la dimensión calculada.

También adjunto un Excel con ejemplos de mapeos que tengo que hacer.

1 Reply
Not applicable
Author

Lo subo por si alguien lo ve y me puede ayudar.

Muchas gracias.