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: 
pgalvezt
Specialist
Specialist

conteo con if

LOAD
A
B,
C,
if(C = A, Count(A) as a, Count(B) as b);

Hola, quisiera que al seleccionar A me cuente la cantidad total que existen, el mismo caso para B.

en la base de datos C contiene A y B.

El if que hice no me dio resultado. Si alguien me puede ayudar con esto se lo agradecería

Saludos.

11 Replies
Miguel_Angel_Baeyens

Hola,

Probaría lo siguiente, con dos campos en lugar de uno:

LOAD A, B, C, If(C = A, RANGESUM(PEEK(CUENTA_A), 1))) AS CUENTA_A, If(C = B, RANGESUM(PEEK(CUENTA_B), 1))) AS CUENTA_B;


Espero que te sirva.

Un saludo

pgalvezt
Specialist
Specialist
Author

Muy buena respuesta, pero lo que necesito es que me cuente la cantidad de registros que tenga la columna. Por ejemplo si tengo la columna llamada Letra y en esa columna tengo N registros llamados A. entonces al final necesito un indicador que me muestre el total de registros A de esa columna.

Cualquier duda me avisas.

Saludos.

Miguel_Angel_Baeyens

Si te entiendo bien, lo que quieres es saber, ante un campo dado, cuantas ocurrencias hay, o dicho de otro modo, cuantos valores no nulos o de un valor dado hay.

Hacerlo en el script como te proponía en el post anterior tiene sentido si realmente necesitas esa acumulación paso a paso. Si finalmente quieres un indicador para saber cuántos registros cuyo campo A cumplen ciertos requisitos, un objeto indicador o un objeto de texto simplemente, pueden valer.

Algo como

=Sum(If(Len(Campo1) > 0, 1))
o
=Sum(If(Index(Campo, 'A') > 0, 1))


Te devolvería el número de registros donde Campo1 no está vacío en el primer caso o en los que Campo contiene la letra "A" mayúscula. Ahora añade cualquier otra coincidencia en la condición para ajustarlo a lo que buscas.

A ver si te ayuda.

pgalvezt
Specialist
Specialist
Author

Listo, con tu ayuda pude resolverlo. Ya me cuenta los registros, eso si que en vez de una suma utilizé el Rangetextcount, ahora el problema que todos los registros que tienen igual nombre me los cuenta como si fuese 1 solo. Por ejemplo si tengo en la columna 5 registros con Nombre A, La función solo me las cuenta como si fuera 1. Entonces al crear el Gráfico indicador y poner esta función solo me muestra un número 1 y no la cantidad total de registros.

Trataré de ver la forma que me cuente estos registros como si fueran diferentes.

Gracias por la ayuda.

Miguel_Angel_Baeyens

No conozco tu modelo de datos, en cualquier caso, la funcion substringcount() te puede ayudar a saber, en una cadena de texto, cuantas ocurrencias hay de otra subcadena

SubStringCount('AAAAAAA', 'A')


debería devolver 7

Y de nada!

pgalvezt
Specialist
Specialist
Author

Disculpáme parece que no he sabido exoplicarme bien. Pero cuando dije registros me referia a las filas: por ejemplo.

Letras

A

A

A

A

B

B

La idea es que cuente cuantas letras A hay. En este caso me deberia arrojar un valor 4. en vez de eso me arroja un valor 1. esto es cierto porque solo me esta contando las diferentes letras y no todas, aunque sean iguales.

Saludos.

Miguel_Angel_Baeyens

Ahora lo tengo claro.

Ayer estuve viendo esto mismo con otro usuario del foro, cuyo post creo que puede ayudarte, aunque su modelo de datos sea distinto, pero las funciones que se utilizan son las mismas.

Espero que te ayude

pgalvezt
Specialist
Specialist
Author

Intente hacerlo como salia en ese post pero no me dio resultado. Como me preguntaste por el modelo de datos te resumo una tabla que muestra en lo que yo estoy trabajando.

UsuarioProcesadosDctoPrincipalBI
Usuario17CALNONO
Usuario150CALONONO
Usuario192LOANONO
Usuario131LITASISI
Usuario179CALSISI
Usuario11LITASISI
Usuario11CALONONO
Usuario250CALSISI
Usuario292LITASISI
Usuario231CALONONO


La idea de todo esto, es que yo alcrear un gráfico indicador, al hacer click en BI me aparezca la cantidad total de "SI" en este caso particular 5 "SI". En realidad no se si lo que estoy consultando se pueda realizar.

Saludos

Miguel_Angel_Baeyens

El otro post iba más indicado a funciones de ranking o similares.

Lo que parece que quieres, y más si es un indicador y la información ya la tienes en la tabla, podría ser algo como

Count({< BI = {'SI'} >} Procesados)


Si esto es así, como puedes elegir BI o cualquier otro campo que tengas en tus tablas, habrá que complicar más la expresión utilizando variables que contengan el campo actual que has seleccionado.

Piensa también en funciones del tipo GetCurrentSelections para este cometido, ya que te dicen el campo que has seleccionado y los valores posibles para dichos campos.

Un saludo.