Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Set Analysis

Hola,

Tengo un problemilla con el set analysis, a ver si alguien me puede ayudar.

Estoy trabajando con dos cuadros de texto, en el primero me muestra el valor de un indicador para el año seleccionado, y en caso de que no haya seleccion para el valor máximo; y el segundo cuadro de texto debe mostrar el valor del mismo indicador para el mes anterior al seleccionado.

Captura.PNG

Mi campo ID_Mes viene en formato YYYYMM.

Os cuento un poco como lo he hecho.

  • Para que siempre me muestre el valor para la fecha seleccionada o en su defecto para la fecha mas reciente he creado dos variables una que me dice cual es el ID_MesActual(Seleccionado o Maximo) y otra ID_MesAnterior (Al seleccionado o máximo)

     Estas variables las he definido asi:

                              v_MesActual=max(ID_Mes)

                              v_MesAnterior=if(Right(v_MesActual,2)='01', num((Left(v_MesActual,4)-1)&'12'), v_MesActual-1)

  • En mi expresión se cuentan los ID_ Empleado que cumplen ciertas condiciones como por ejemplo ID_Filal= 1, 2, 3 , ID_Dept=1,3,5

Por tanto en mi expresion para el mes actual tengo lo siguiente:

count({<ID_Filial={1,2,3},ID_Dept={1,3,5}, ID_Mes={$(v_MesActual)}>}distinct ID_Empleado)

a la hora de definir mi expresión para el mes anterior, le tengo que decir que no "me aplique" los filtros para el mes ya que sino entiende que el mes seleccionado no se corresponde con el mes Anterior (logico) pero siempre me da 0.

count(1{<ID_Filial={1,2,3},ID_Dept={1,3,5}, ID_Mes={$(v_MesAnterior)}>}distinct ID_Empleado)


Lo hago utilizando el 1, pero yo quiero establecer la posibilidad de que filtre por todos los campos excepto por el mes que ya viene definido por la variable.


He probado con dos condiciones en el set Analysis utilizando el operador *, pero me obliga a poner el 1 en ambas. ¿Alguna idea?


Gracias


Maria

19 Replies
Anonymous
Not applicable
Author

Buenas,

Gracias por vuestros comentarios. Al final solucione el tema de las variables con vuestras aportaciones y adaptándolo un poco a mi caso, ahora me funciona correctamente, las he definido así:

  • v_MesActual= date(max(ID_Mes),'YYYYMM')
  • v_MesAnterior= Date(Date#($(v_MesActual), 'YYYYMM') -1, 'YYYYMM')

Esto ya lo controlo, pero sigue surgiendome la misma duda.

Si yo a mi  aplicacion le añado los filtros de centro y area por ejemplo, para calcular la suma de ventas para el periodo actual y el anterior tendria que poner:

  • ACTUAL: Sum({<ID_Mes={$(v_MesActual)}>}Ventas)
  • ANTERIOR: Sum({1<ID_Mes={$(v_MesAnterior)}>}Ventas)

Si no pongo el 1 en la expresión anterior no me da solucion.


Ahora bien... ¿Como hago para que ese resultado me filtre por los demas campos que he añadido?

sorrakis01
Specialist
Specialist

Hola María,

Lo que quieres es que tenga en cuenta las selecciones que haces en los cuadros de lista (supongo que con lo de filtro te refieres a ello) o que no las tenga en cuenta?

Si quieres que las tenga en cuenta en principio en tu fórmula ya lo tienes bien pero tendrías que quitar el 1 de ANTERIOR.

Si no quieres que tenga en cuenta centro y area podrías ponerlo así:

  • ACTUAL: Sum({<Centro=, Area=, ID_Mes={$(v_MesActual)}>}Ventas)
  • ANTERIOR: Sum({<Centro=, Area=, ID_Mes={$(v_MesAnterior)}>}Ventas)

Saludos,

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola Maria:

Prueba a calcular el mes anterior con un AddMonths() y el diferencial -1.

Debería funcionar sin el calificador de conjunto 1

Si pones centro=, area=, .... lo que haces es ignorar las selecciones sobre esos campos si quieres que las aplique no las incluyas en el set analysis.

Saludos,

Joaquín

alex_millan
Creator III
Creator III

Hola,

básicamente si en tu set pones el 1 descartas las selecciones que tengas efectuadas, y en contraposición si pones $ las tienes en cuenta.

Si quieres que no tenga en cuenta algún campo en particular, por ejemplo año o mes, puedes especificarlo:

{$<....., año =, mes =>} (así tendría en cuenta las selecciones excepto las que corresponden a año y mes

Espero que te ayude

Un saludo,

Anonymous
Not applicable
Author


Buenas,

Efectivamente se que no me lo tiene en cuenta con el 1, pero no consigo que me funcione de otra forma.

Os paso un ejemplo de como lo he hecho.

Si no selecciono el mes, si que me calcula el mes actual y el anterior, pero si lo selecciono, el mes anterior sin el 1, pasa a darme 0 siempre.

Lo que quiero conseguir es que tambien se pueda filtrar por los valores de cuadro de lista que he añadido en el cuadro de seleccion multiple.

¿Alguna idea?

alex_millan
Creator III
Creator III

Yo pruebo y parece funcionar, quizás te he entendido mal pero filtrando por shipperid y employee_id los cálculos se actualizan a la selección sin problema.

En qué supuesto te falla?

Anonymous
Not applicable
Author

En el que pone Mes Anterior, como no pongo el 1 me falla.

Y en el que pone mes Anterior con 1, no me aplica los filtros.

alex_millan
Creator III
Creator III

Pero, yo no he hecho ajustes y la información que muestra parece cuadrar con la de la tabla.

Los datos de ventas para la expresión =sum({<OrderDate={$(v_MesAnterior)}>}Sales) se ajustan al empleado 7, el shipper 2 y el mes anterior al seleccionado.

Anonymous
Not applicable
Author

Efectivamente te sale...  Pero el campo Order Date no deberia estar disponible para filtrar, solo el mes y el Año. Fijate que tal y como lo tienes selccionado, si seleccionas el mes que hay disponible (mayo), ya me da errores.  Le he añadido a mi calculo en el Set Analysis la condicion de que no filtre por mes ni año y parece que funciona.

¿como lo ves?

alex_millan
Creator III
Creator III

Añade Mes= a la expresión y listos

=sum({<OrderDate={$(v_MesAnterior)}, Mes=>}Sales)

Con eso evitas que se aplique la selección de mes al cálculo, si tienes que discriminar algun campo más, haces lo mismo.

Así vas jugando con los campos, incorporándolos o no al set de datos