Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
PabloOrtiz
Partner - Creator
Partner - Creator

Selección de un valor dentro de una tabla de intervalos

Hola a todos, tengo la siguiente situación:

Una tabla de intervalos:

    

ServicioImporteDesdeImporteHastaPorcentaje
S1050002
S15001150003
S1150019999994
S20100002
S210001200003
S2200019999994

Por otra parte tengo una tabla de servicios con unos importes:

 

ServicioCosteServicio
S16.000,00 €
S222.000,00 €

Necesitaría obtener la siguiente tabla de resultado:

  

CodServicioCosteServicioPorcentaje
S16.000,00 €3
S222.000,00 €4

Es decir dado un coste de servicio obtener dentro del intervalo de porcentajes del servicio cual es el que le corresponde.

Para el servicio S1 el valor 6.000 cae en la fila de intervalos correspondiente al porcentaje 3

Para el servicio S2 el valor 22.000 cae en la fila de intervalos correspondiente al porcentaje 4

Gracias de antemano.

4 Replies
rubenmarin

Hola Pablo, si es en el script puedes usar IntervalMatch() para identificar la linea que corresponda de la 1ª tabla; y para crear una tabla como esa puedes usar joins para llevar el porcentaje a la 2ª tabla y luego eliminar lo que sobre, algo así:

//Cargar Tabla1 y Tabla2

Left Join (Tabla2)

IntervalMatch (CosteServicio, Servicio) LOAD ImporteDesde, ImporteHasta, Servicio Resident Tabla1;

Left Join (Tabla2) LOAD ImporteDesde, ImporteHasta, Servicio, Porcentaje Resident Tabla1;

DROP Table Tabla1;

DROP Fields ImporteDesde, ImporteHasta;

También puedes hacer el join directamente con Tabla1 y luego quedarte solo con los registros que tengan valor en CosteServicio.

Saludos.

PabloOrtiz
Partner - Creator
Partner - Creator
Author

Hola Rubén, el problema es que los valores del CosteServicio son dinámicos.

Existe una tabla como esta:

Date                Servicio     CosteServicio

01/01/2016          S1                    3.000

01/01/2016          S1                    3.000

01/01/2016          S2                    11.000

01/01/2016          S2                      1.000   

01/01/2016          S2                    10.000

02/01/2016          S1                      5.000   

02/01/2016          S1                    20.000

Cuando el usuario selecciona una fecha, coste servicio toma unos valores, por ejemplo cuando se selecciona el 01/01/2016 los valores de coste servicio son estos, pero para otra seleccion son otros.

     Servicio     CosteServicio

         S1                    6.000

         S2                    22.000

No puedo hacerlo con un IntervalMatch, ha de ser una selección dinámica. Dada una selección del usuario se debe de calcular el porcentaje que toca a cada servicio de forma dinámica.




rubenmarin

Hola Pablo, creo que no he entendido algo... si existe una tabla con un coste de servicio por fecha ¿Por qué no se le puede añadir el porcentaje directamente a esa tabla?... ¿O es que esa tabla ya es un gráfico?

En un gráfico se podría obtener usando

Aggr(If(CosteServicio>=ImporteDesde and CosteServicio<=ImporteHasta, Porcentaje), Servicio, ImporteDesde)

Seguramente habrá una forma mejor, pero si el valor cambia por fila no creo que te sirva usar set analisys ni $()

PabloOrtiz
Partner - Creator
Partner - Creator
Author

Hola Ruben, gracias por la respuesta, la medición correcta que me han comentado en otro hilo que tenía abierto es casi idéntica a la que me propones.

=Aggr(If(Sum(CosteServicio) >= ImporteDesde and Sum(CosteServicio) <= ImporteHasta, Porcentaje), Servicio, ImporteDesde, ImporteHasta)

Un saludo.