Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Limitar gráfico de líneas de 0 a 100

Que tal amigos;

tengo una consulta en la cual espero me puedan ayudar,

tengo una gráfica de lineas en el cual muestro mis valores mediante esta formula de set analysis

(sum({$<DataSource={Ventas}, Month=>} Unidades) - sum({$<DataSource={Planeacion}, Month=>} Unidades)) / sum({$<DataSource={Planeacion}, Month=>} Unidades)

me salen valores negativos y valores arriba de 100 como estoy calculando el accuracy la idea es que todo lo que pase de 100 lo baje a 0 y todo lo que sea negativo también lo deje en 0

serían tan amables de decirme si hay alguna forma de hacerlo.

De antemano muchas gracias.

Saludos

29 Replies
sorrakis01
Specialist
Specialist

Hola Guillermo,

Con un if lo puedes solucionar (If(tus calcuilos)>100,0,If(tus calculos)<0,100,tuscalculos)

Saludos,

Anonymous
Not applicable
Author

Gracias por tu ayuda Jordi,

que crees que intente como me dices pero me marca memoria excedida hice lo siguiente:

if(Sum({$<DataSource = {Facturacion}, PeriodType={'Current'}, Month=>} Unidades))-Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)/Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)>100,0, if(Sum({$<DataSource = {Facturacion}, PeriodType={'Current'}, Month=>} Unidades))-Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)/Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)<0,100,Sum({$<DataSource = {Facturacion}, PeriodType={'Current'}, Month=>} Unidades))-Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)/Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)

Lo hice mal ?

sorrakis01
Specialist
Specialist

Hola Guillermo,

Si era una idea..... pero lo que si que es verdad es que los ifs penalizan mucho.... y tu debes estar calculando una gran cantidad de daros y tu máquina no lo debe soportar. Se tendrá que valorar otra posibilidad......

Saludos,

Anonymous
Not applicable
Author

Bueno haber si alguien puede darme otra alternativa, muchas gracias Jordi.

rubenmarin

Hola Guillermo, creo que no tienes bien algún paréntesis:

if(Sum({$<DataSource = {Facturacion}, PeriodType={'Current'}, Month=>} Unidades))-Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)/Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)>100,0, if(Sum({$<DataSource = {Facturacion}, PeriodType={'Current'}, Month=>} Unidades))-Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)/Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)<0,100,Sum({$<DataSource = {Facturacion}, PeriodType={'Current'}, Month=>} Unidades))-Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)/Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)


Quizás debería ser:

if((Sum({$<DataSource = {Facturacion}, PeriodType={'Current'}, Month=>} Unidades)-Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades))/Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)>100,0, if((Sum({$<DataSource = {Facturacion}, PeriodType={'Current'}, Month=>} Unidades)-Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades))/Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)<0,100,(Sum({$<DataSource = {Facturacion}, PeriodType={'Current'}, Month=>} Unidades))-Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades))/Sum({$<DataSource = {Forecast}, PeriodType={'Current'}, Month=>} Unidades)


La parte en que si supera 100 hay que poner 0 y si baja de 0 poner 100 me extraña, creo que debería ser al revés pero si lo han pedido así por algo será.


Saludos.

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola Guillermo:

Cuando aparece el mensaje "memoria excedida" significa cualquier cosa ... menos "hay muchos datos".

Mira los paréntesis y la sintaxis. Intenta llevar todo el set análisis a una variable y así será más fácil de probar.

Saludos

Joaquín

sorrakis01
Specialist
Specialist

Hola,

Pueba primero lo de los parentesis, si no funciona para ver si son los datos haz una pequeña prueba y carga pocos registros en el script. Si te funciona es que tendrás que asignar más memoria al objeto o o pensar otra solución. Si te sigue dando el error entonces Joaquín estará en lo cierto.

Saludos

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola:

Esto te va a costar un esfuerzo ... suponiendo que sean valores del campo, yo cambiaría

DataSource = {Forecast}

DataSource = {Facturacion}


por


DataSource = {'Forecast'}

DataSource = {'Facturacion'}


Mejor hazlo llevando las partes de Set Analysis a variables y construye desde cero, campo a campo.


Suerte

Joaquín


sorrakis01
Specialist
Specialist

Hola Joaquín,

Por lo que yo sé,

Si nos basamos en las premisas de que la expresión es correcta y el documento tiene una buena estructura de script ese error solo puede ser por exceso de datos (ese proceso no puede ser calculado por x motivos, soretodo por tema de rendimiento)

Como lo ves? (te lo digo por si no estoy en lo cierto)

Saludos,