Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN 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

1 Solution

Accepted Solutions
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

View solution in original post

19 Replies
sorrakis01
Specialist
Specialist

Hola,

Una duda, estás utilizando un calendario maestro? de ser asi podrías crearte un campo ID para cada mes o periodo (que sea numérico). Así te será más fácil luego solo tendrías que poner esto:

v_MesActual=max(ID_Mes)

v_MesAnterior=max(ID_Mes-1)

Es solo una idea.

saludos,

Anonymous
Not applicable
Author

No lo estoy usando pero podria probar, lo unico que nunca he hecho un calendario maestro solo de fecha sin dia, en formato  MMYYYY.

¿Me recomiendas algo antes de probarlo?

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Hola María:

En el calendario

LOAD Year(TuFecha) * 12 + Num(Month(TuFecha) as AñoMesOrd

Luego tienes varios recursos, me vale el propuesto por Jordi

v_MesActual=max(AñoMesOrd )

v_MesAnterior=max(AñoMesOrd -1)


Saludos

Joaquín

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Básicamente tu propuesta fallará en enero ... 201601 - 1 será 201600 no diciembre de 2015 !!!!!!

Usa la conversión a ordinal !!!!!

sorrakis01
Specialist
Specialist

Hola,

Si quieres mira este enlance aunque sobre este tema hay muchos. En él te explica como probar y crear el calendario maestro.

Understanding the Master Calendar (video)

Tu échale un ojo y luego decides si te simplifica la vida o te la complica...

Saludos,

JoaquinLazaro
Partner - Specialist II
Partner - Specialist II

Por cierto, tienes las funciones Year(TuFecha) y Month(TuFecha) que te permite cálculos sobre fechas sin tener que manipular substrings de los campos fecha.

Saludos,

Joaquín

alex_millan
Creator III
Creator III

Hola,


independientemente de que puedas utilizar otras aproximaciones, yo pruebo con tu definición haciendo unas ligeras modificaciones (yo no defino el vMesActual) y creo que funciona.


Te adjunto ejemplo.


Saludos,

alex_millan
Creator III
Creator III

Hola,

Yo creo que tal y como define la variable para el periodo anterior ese punto lo tiene controlado, ¿o hay algo que estoy pasando por alto?

sorrakis01
Specialist
Specialist

Hola Alex,

Tu opción creo que se adapta quizá más a lo que pide Maria.

Un Saludo