Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Comparar años para obtener evolución

Tengo un Grafico que muestra por cada tienda

Ventas €

Numero de Ticket

Media

Ahora quiero comparar años, para ir viendo la evolucion

Para la linea de ventas tengo

(Sum (if (Año=2011,[Importe]))
-Sum (if (Año=2010,[Importe])))
/Sum (if (Año=2010,[Importe]))

Funciona sin problemas

Pero para el Numero de Ticket añado esto

if (Año=2011,Count (distinct [Nº ticket]))
-(if (Año=2010,Count (distinct [Nº ticket])))
/(if (Año=2010,Count (distinct [Nº ticket])))

pero no funciona

¿No se puede anidar un Count? ¿es por el distinct? ¿se puede hacer algo sin necesidad de crear totales en el Scrip, es decir desde la expresion del grafico?

Gracias

15 Replies
Miguel_Angel_Baeyens

Hola Luis,

Imagino que lo que tiene que ver es la sintaxis del Count, con un condicional debería ser

Count(DISTINCT If(Año = 2010, [Nº Ticket]))


Desconozco como puede afectar aquí el distinct. En cualquier caso, con análisis de conjuntos no debería darte ningún problema:

( Count({< Año = {2011} >} Distinct [Nº Ticket])- Count({< Año = {2010} >} Distinct [Nº Ticket]) )/ Count({< Año = {2010} >} Distinct [Nº Ticket])


Y similar para las ventas:

( Sum({< Año = {2011} >} [Importe])- Sum({< Año = {2010} >} [Importe]) )/ Sum({< Año = {2010} >} [Importe])


Revisa los paréntesis, que he podido equivocarme.

Espero que te sirva.

Not applicable
Author

Gracias Miguel Angel por tu rapida respuesta

Es curioso pero NO funciona, y digo es curioso, porque el analisis de conjunto en la ventas, funciona perfectamente, pero no para los Ticket.

He probado tambien con

(Count(DISTINCT If(Año = 2011, [Nº Ticket]))
- Count(DISTINCT If(Año = 2010, [Nº Ticket])))
/ Count(DISTINCT If(Año = 2010, [Nº Ticket]))

Es decir SIN analisis de conjunto y tampoco

¿Puede ser por el Count o el distinct?

Gracias

Miguel_Angel_Baeyens

Luis,

En un objeto de texto, ¿lo siguiente devuelve algún resultado?

Count(DISTINCT If(Año = 2011, [Nº Ticket]))


Aparte, e imagino que sobra la pregunta, pero el campo "Nº de Ticket" lleva la "º" en lugar de una "o" minúscula? Prueba de todas formas

Count(DISTINCT [Nº Ticket])


Sin ningún tipo de filtro a ver si devuelve el valor esperado.

Un saludo.

Not applicable
Author

Te cuento

En un obeto de texto y en el grafico, los resultados son los mismos

Count(DISTINCT [Nº Ticket])

Arroja 0

Count (distinct [Nº ticket])

Arroja la cantidad de ticket de 2010 y 2011 (segun la seleccion mes o semana...)

Es como la tengo en el grafico actual, no se muy bien, porque actua de forma diferente ante las mayusculas de DISTINCT



(Count(distinct If(Año = 2011, [Nº Ticket]))
-Count(distinct If(Año = 2010, [Nº Ticket])))
/Count(distinct If(Año = 2010, [Nº Ticket]))

Arroja un NULO expresado con -

Los Analisis de conjunto

Count({< Año = {2011} >} Distinct [Nº Ticket])

Arroja un NULO expresado con -

Count({< Año = {2010} >} Distinct [Nº Ticket])

Arroja un NULO expresado con -

(Count({< Año = {2010} >} Distinct [Nº Ticket])
- Count({< Año = {2010} >} Distinct [Nº Ticket]) )
/ Count({< Año = {2010} >} Distinct [Nº Ticket])

Arroja un NULO expresado con -

Seguro, estoy metiendo la pata en lo mas tonto, pero no encuentro donde

¿Se te ocurre algo?

A el campo [Nº Ticket], esta bien escrito, ya que para no meter la pata, no lo pongo a mano, dejo al asistente que lo haga por mi

Gracias por tu tiempo

Miguel_Angel_Baeyens

Luis,

La única diferencia que veo en lo que escribes es que en un caso [Nº Ticket] va con "T" mayúscula (cuando no funciona) y con "t" minúscula, cuando funciona. Podría tener que ver ya que para QlikView los nombres de campo son sensible a mayúsculas. Poner distinct o DISTINCT debería dar igual, de hecho tengo gráficos en un mismo fichero con distinct en mayúsculas y minúsculas y el resultado es el esperado.

Lo mismo con "Año" o "año".

Por lo demás la sintaxis me parece correcta. Imagino que si de una forma obtienes resultados, poner el año sólo afectaría en el caso de que, tal como tengas montado el modelo de datos, el campo "Año" no tuviese relación con los Tickets.

Un saludo.

Not applicable
Author

Disculpame Miguel Angel por mi tropeza, se nota que no soy informatico, ni minucioso

Tenias razon en lo de la "T" es minusculas

Ahora el DISTINCT funciona en los dos casos, perdona por la perdida de tiempo en este apartado que nos te ha enredado mas de lo logico

Pero no asi el analisis de conjunto, ni la sentencia con los if, que arrojan solo resultados -1,0,-0,1 y 2

no se si tendra que ver con la forma en la que descompongo la fecha (esto siempre me ha funcionado, desde hace años), lo hago asi

date ("Fecha inicio",'DD/MM/YYYY') as Fecha,
Year("Fecha inicio") as Año,
Ceil(Month("Fecha inicio")/3) as Trimestre,
Month("Fecha inicio") as Mes,
Week("Fecha inicio") as Semana,
Weekday("Fecha inicio") as DiaSemana,
Day("Fecha inicio") as Dia,

Como puedes ver el campo Año lo pongo bien (o eso espero), salvo que la "Ñ" no sea del agrado de Qlik

En cuanto a la relacion de tablas, realmente es UNA SOLA, que contiene TODOS los TICKET con sus VENTAS

Gracias

Miguel_Angel_Baeyens

Luis,

El calendario me parece correcto. Si creas un cuadro de texto con

Count(Distinct [Nº ticket])


Y un cuadro de lista con el campo Año, ¿muestra los valores correctos sin año, y con cada uno de los años seleccionados?

Un saludo.

Not applicable
Author

Buenos dias Miguel Angel

La respuesta es SI, un cuadro de texto con Count(Distinct [Nº ticket]), muestra los valores REALES, seleccionando un solo año, ningunos es decri todos, solo 2010 y 2011....

Tambien muestra los datos reales si filtro por Mes, Semana, Dia de Semana....

Es decir que lo que realmente sigue dando problemas es el analisis de conjunto o los IF, cuando aplico la formula, donde sigue mostrando solo MENOS UNOS, CEROS, MENOS CEROS, DOS...

No consigo ver donde esta el problema y en este caso, si estoy siendo minucioso "creo"

Gracias

Miguel_Angel_Baeyens

Hola Luis,

¿Estás representando los valores con decimales? Es decir, en un cuadro de texto (es la forma en la que valido la información)

Num(( Count({< Año = {2010} >} Distinct [Nº ticket])- Count({< Año = {2009} >} Distinct [Nº ticket]) )/ Count({< Año = {2009} >} Distinct [Nº ticket]), '#.##0,##%')


Prueba lo mismo con la condición. Pudiera ser que la representación en enteros se redondease y no mostrase decimales, de ahí resultados tan raros como "-0" (que podría ser -5% o -0,05).

Si fallase bien el análisis de conjuntos bien la condicional pero no los dos, pensaría que se nos escapa algo. Pero con lo que me dices, devolviendo ambos los mismos resultados, me planteo que pueda ser un bug (no debería suceder si utilizas la versión 9 SR6 o la 10).

No obstante, a ver si alguien más ve lo que yo no.

Intentaré crear un fichero sencillo con información de ejemplo para comprobar el comportamiento del Count() con análisis de conjuntos.

Un saludo.