Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

set analysis

hola amigos,

tengo una duda respecto al uso del set analysis.

tengo un gráfico tabla con con los campos A,B,C,D,E,F,G donde E es el resultado de la operación (B+C+D) - A, los campos F y G tienen los valores 0 y 1 de acuerdo a la siguiente condicional


F = If(E >= 0, 1,0)       y       G = If(E < 0,1,0)

lo que necesito es contar cuantos valores 1 hay en cada campo (F y G) teniendo en cuenta que el campo "E" es un campo que se calcula en el gráfico de tabla, y el nombre es una etiqueta, no existe como tal en la tabla cargada en QV.

he probado con: Count({<E = {1}>} [%Codigo]) pero no me reconoce la expresión.

gracias por su ayuda.

1 Solution

Accepted Solutions
jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Hola,

Sería más fácil si tratas de calcular tanto E,F y G directamente en el script y en la gráfica podrías contar las F y G con una expresión así:

count({$<F={1}> Campo} y

count({$<G={1}> Campo}

dependiendo de los registros que tengas, es probable que tengas que usar un count distinct. Como nota adicional, la fórmula que estabas intentando usar no es posible en QlikView ya que Set Analysis solo funciona sobre campos calculados en el script. Si por alguna razón no pudieras calcular los campos E, F y G en el script entonces no podrías usar set analysis para contar los 1s, por lo que tendrías que usar otra alternativa como ifs (aunque sería menos eficiente conforme la cantidad de registro aumente)

saludos

View solution in original post

6 Replies
jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Hola,

Sería más fácil si tratas de calcular tanto E,F y G directamente en el script y en la gráfica podrías contar las F y G con una expresión así:

count({$<F={1}> Campo} y

count({$<G={1}> Campo}

dependiendo de los registros que tengas, es probable que tengas que usar un count distinct. Como nota adicional, la fórmula que estabas intentando usar no es posible en QlikView ya que Set Analysis solo funciona sobre campos calculados en el script. Si por alguna razón no pudieras calcular los campos E, F y G en el script entonces no podrías usar set analysis para contar los 1s, por lo que tendrías que usar otra alternativa como ifs (aunque sería menos eficiente conforme la cantidad de registro aumente)

saludos

Not applicable
Author

Hola Jaime,

los campos B,C y D pertenecen  la tabla1 y el campo A pertenece a la tabla2, como puedo hacer el calculo de F y G en tiempo carga.

teniendo en cuenta que la estructura es una especie de cabecera detalle de 1--*

Saludos

jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Hola, para no modificar tanto la estructura que ya tienes podrías hacer una mapeo del campo A desde la tabla2 hacia la tabla1, para que los campos B,C,D,A estén en la misma tabla y de esa forma pueda calcular E = (B+C+D) - A. Y ya que tengas E, puedes calcular en el mismo script F y G con la misma lógica que ya tenías,

Para el mapeo de A, sería algo así

TablaMapeo:

Mapping Load CampoComúnEntreTabla1yTabla2,

                    A

from Tabla2;

Tabla1:

B, C, D, Applymap('TablaMapeo', CampoComúnEntreTabla1yTabla2, 'N/A') as A

from Tabla1

Al hacer esto, ya no debes cargar el campo A en la tabla2, ya que con el mapeo quedaría en la tabla1 y si los cargas en ambas estarías generando una llave sintética.

Anexo un archivo de ejemplo en donde viene como se haría el mapeo y calculo de los campos adicionales,

En la ayuda (F1) puedes encontrar más detalles sobre las cargas de mapeo y llaves sintéticas,

saludos

Not applicable
Author

Gracias por las respuestas Jaime,

Al final termine haciendo los cálculos en el load, tal como indicas en la primera respuesta.

Not applicable
Author

Jaime una consulta más, tengo una campo el cual necesariamente necesito hacer el calculo en una tabla pivot, pero no me muestra los totales de la columna calculada, adjunto imagen.tablaPivot.png

gracias.

jaimeaguilar
Partner - Specialist II
Partner - Specialist II

Hola,

no se cual sea la expresión que estés usando, pero un detalle que tienen las tablas pivote en comparación con las tablas simples es que las pivote no te da la opción de hacer la suma (o cualquier operación de agregación) de las filas, al menos no de manera simple. Lo que tendrías que hacer es forzar tal vez con una aggr() para que te sume las filas de acuerdo a los parámetros que necesites, algo así:

sum(aggr(Expresión, campo1, campo2, campoN))

En tu caso lo de campo1, campo2, etc se sustituiría probablemente por Material, Código Almacen o los campos que necesiten estar involucrados. Sin embargo necesitaría ver la expresión que estás utilizando para poderte dar una mejor respuesta,

saludos