Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
ivan_esperon
Partner - Contributor
Partner - Contributor

Box Plot con getObjectField()

Hola!

En la versión de Noviembre de Qlik Sense cuando con set analysis añado en un aggr un GetObjectField() en el BoxPlot no funciona y si lo cambio por GetObjectField(0) entonces se cae el motor de Qlik.

El error que muestra el gráfico con GetObjectField() es:

'El gráfico no se muestra porque contiene valores indefinidos.'

La expresión que utilizo en el gráfico es:

avg(aggr((((sum(Neto)-sum(Coste))/sum(Neto))*100)-10,NumAlbaran,$(=GetObjectField())))


con

avg(aggr((((sum(Neto)-sum(Coste))/sum(Neto))*100)-10,NumAlbaran,Empresa)) 


Sí funciona...


La dimensión es dinámica según la selección de un campo y el gráfico se genera con esa dimensión.


¿Le ha pasado a alguien?


Muchas gracias!!

5 Replies
rubenmarin

Hola Ivan, si la dimensión es calculada, y devuelve el nombre de un campo del modelo de datos a usar en base a una expresión, puedes reproducir la misma expresión en el $():

avg(aggr((((sum(Neto)-sum(Coste))/sum(Neto))*100)-10,NumAlbaran,$(=ExpresionDimensionCalculada)))


Aunque debería funcionar igual, confirmar que la expresión devuelve un campo existente.



ivan_esperon
Partner - Contributor
Partner - Contributor
Author

Hola Ruben, gracias por responderme.

El tema es que no es una dimensión calculada, es el contenido de un campo, es decir, en gráfico de empresa será el campo DimEmpresa que tendrá unos valores como CodigoEmpresa, Empresa... que son dimensiones de la aplicación.

Utilizo el GetObjectField() para que me devuelva ese 'Empresa' ó 'CodigoEmpresa'.

Es más, me funciona en todos los gráficos de la aplicación sin ningún problema excepto en el Box Plot

rubenmarin

Hola Ivan, ¿puedes probar si así funciona?:

avg(aggr((((sum(Neto)-sum(Coste))/sum(Neto))*100)-10,NumAlbaran,$(=DimEmpresa)))


o:

avg(aggr((((sum(Neto)-sum(Coste))/sum(Neto))*100)-10,NumAlbaran,[$(=MinString(DimEmpresa))]))

ivan_esperon
Partner - Contributor
Partner - Contributor
Author

Mi problema es que en la hoja de Empresa la dimensión en DimEmpresa, pero en la de almacén es DimAlmacen y las métricas son únicas para toda la aplicación (vienen en un INLINE) con lo cual no puedo poner fija la dimensión que se utiliza porque depende de la dimensión que tenga en el gráfico.

Es decir, la dimensión cambia según lo que estemos viendo pero la métrica no, la métrica se comparte en todas las pestañas.

rubenmarin

Hola Ivan, para poder decir que es la misma métrica se tendría que controlar de alguna forma la hoja en la que está (hay extensiones que seleccionan valores en campos al entrar en una hoja) y aplicar la condición correspondiente a la parte de [$(=MinString(DimEmpresa))], para DimEmpresa sea a su vez un valor dinámico con $(=).


Si los parámetros del aggr tienen que cambiar escribiendo un valor distinto en la propia expresión ya no es la misma medida, podría serlo el primer parámetro del aggr (la expresión), pero el aggr sería uno para cada gráfico.

avg(aggr($(expresion), dim1, dim2)


También podría crearse una variable parametrizada con al medida, aunque la llamada debería ser distinta en cada gráfico (o controlar de nuevo la hoja en la que está):

Variable: SET vExpresion = avg(aggr((((sum(Neto)-sum(Coste))/sum(Neto))*100)-10,NumAlbaran,$1));

Expresión Empresa: $(vExpresion(DimEmpresa))

Expresión Almacén: $(vExpresion(DimAlmacen))