Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
eduardo_vera
Contributor II
Contributor II

Selección sobre Dimensiones Condicionales en Qlik Sense

Hola, estoy trabajando sobre una tabla pivot en Qlik Sense donde tengo dos dimensiones que deben rotar de acuerdo a un selector en este caso llamado "Dimension" (Cliente, Producto o Vendedor) y cada uno de estos se puede agrupar mediante el filtro llamado "Agrupador" (Venta o Margen) haciendo un total de 6 medidas.

La primera dimensión que tengo es:

=if(Dimension = 'Producto' or GetSelectedCount(Dimension) = 0,

    if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        [Abc Producto Venta],

        [Abc Producto Margen]

    ),

if(Dimension = 'Cliente',

    if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        [Abc Cliente Venta],

        [Abc Cliente Margen]

    ),

if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        [Abc Vendedor Venta],

        [Abc Vendedor Margen]

    )

)

)

Y el de la segunda muy parecido:

=if(Dimension = 'Producto' or GetSelectedCount(Dimension) = 0,

    if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        [Abc 123 Producto Venta],

        [Abc 123 Producto Margen]

    ),

if(Dimension = 'Cliente',

    if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        [Abc 123 Cliente Venta],

        [Abc 123 Cliente Margen]

    ),

if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        [Abc 123 Vendedor Venta],

        [Abc 123 Vendedor Margen]

    )

)

)

El cálculo para las expresiones tiene una estructura similar a la mostrada. Las dimensiones rotan como se espera, el problema que existe es al momento de hacer una selección sobre el gráfico, por ejemplo, si quisiera filtrar sobre "ABC Producto Venta" los productos que pertenecen al grupo "A", se aplican filtros sobre todos los campos involucrados viéndose de la siguiente forma:

Esto resulta algo molesto y confuso, ¿alguna sugerencia o recomendación sobre como tratar este problema?

¿Es posible que aparezca directamente de esta forma? Que sería lo que se espera ver.

Gracias.

1 Solution

Accepted Solutions
rubenmarin

Hola Eduardo, no he probado si funciona pero igual creando una variable que sea la que identifique la dimensión a utilizar:

Variable vDimension1, contenido:

=if(Dimension = 'Producto' or GetSelectedCount(Dimension) = 0,

    if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        1,

        2

    ),

if(Dimension = 'Cliente',

    if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        3,

        4

    ),

if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        5,

        6

    )

)

)

Y usar como dimensión:

Pick($(vDimension1)

  , [Abc Producto Venta]

  , [Abc Producto Margen]

  , [Abc Cliente Venta]

  , [Abc Cliente Margen]

  , [Abc Vendedor Venta]

  , [Abc Vendedor Margen]

)

Y algo similar para la segunda dimensión.

View solution in original post

4 Replies
hector_munoz
Specialist
Specialist

Hola Eduardo,

Este es el típico problema de las dimensiones calculadas. Hablando mal, un "dolor de huev..." cuando el usuario selecciona un valor en la tabla o gráfico donde se muestra porque en todos los campos involucrados en el valor calculado seleccionado selecciona los valores originales.

Hay una variable en QlikView que se llama HidePrefix y que permitía que los campos que empezasen por la cadena especificada en esa variable se convirtiesen en campos de sistema y no apareciesen es el cuadro de selecciones actuales. Por ejemplo, yo tengo la costumbre (buena o mala) de a todos los campos que relacionan tablas o que son para variables de navegación, etc. prefijarlos con "_"; entonces si HidePrefix = '_' estos se convierten en campos de sistema y no se muestran en el cuadro de selecciones.

Dicho esto, lo que te recomiendo es que investigues si la variable HidePrefix existe en Qlik Sense (lo desconozco), y la uses en caso afirmativo, además de crear campos calculados donde sea posible con las condiciones que indicas en tu dimensión calculada.

Espero que te sirva de ayuda...

Saludos,

H

rubenmarin

Hola Eduardo, no he probado si funciona pero igual creando una variable que sea la que identifique la dimensión a utilizar:

Variable vDimension1, contenido:

=if(Dimension = 'Producto' or GetSelectedCount(Dimension) = 0,

    if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        1,

        2

    ),

if(Dimension = 'Cliente',

    if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        3,

        4

    ),

if(Agrupador = 'Venta USD' or GetSelectedCount(Agrupador) = 0,

        5,

        6

    )

)

)

Y usar como dimensión:

Pick($(vDimension1)

  , [Abc Producto Venta]

  , [Abc Producto Margen]

  , [Abc Cliente Venta]

  , [Abc Cliente Margen]

  , [Abc Vendedor Venta]

  , [Abc Vendedor Margen]

)

Y algo similar para la segunda dimensión.

rubenmarin

Hola Héctor, solo por confirmar que la variable HidePrefix también se puede usar en Sense.

Y como curiosidad: cuando se crea código de forma automática (por ejemplo con el Data Manager) por defecto Sense usa el '__' (doble guión bajo) como prefijo para los campos que deberían ser ocultos.

Saludos.

eduardo_vera
Contributor II
Contributor II
Author

Muchas gracias Ruben, si bien no se ve el campo sobre el cual se está aplicado el filtro, la presentación es mucho mejor de lo que tenía.