Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik and ServiceNow Partner to Bring Trusted Enterprise Context into AI-Powered Workflows. Learn More!
cancel
Showing results for 
Search instead for 
Did you mean: 
walterlh
Creator II
Creator II

VENTAS DEL SEMESTRE ANTERIOR

Hola amigos de Qlik! Estoy intentando hacer un informe donde se califican a los clientes dependiendo de ciertos parámetros establecidos. Uno de ellos es el importe que han comprado en el mes actual, comparado con un importe que se obtiene del promedio de las ventas del semestre anterior.
Para ello debo hacer un promedio de todas las ventas del semestre anterior al seleccionado, respecto de la cantidad de ventas que hubo. Por ejemplo:

JUN:    10000

JUL:    15000

AGO:    13000

SEP:    14000

OCT:    15000

NOV:    18000

Total de las ventas del semestre = 85000

En éste semestre se hicieron un total de 1500 facturas que lo obtengo de Count(DISTINCT id_venta), por lo tanto el monto con el que se compara las compras de cada cliente va a ser 56,66.

Lo he logrado mediante Set Analisys utilizando:

(

Sum({$<MesVta={$(=Only(MesVta)-1)}>}Ventas) +

Sum({$<MesVta={$(=Only(MesVta)-2)}>}Ventas) +

Sum({$<MesVta={$(=Only(MesVta)-3)}>}Ventas) +

Sum({$<MesVta={$(=Only(MesVta)-4)}>}Ventas) +

Sum({$<MesVta={$(=Only(MesVta)-5)}>}Ventas) +

Sum({$<MesVta={$(=Only(MesVta)-6)}>}Ventas)

) /

(

Count(DISTINCT{$<MesVta={$(=Only(MesVta)-1)}>}id_venta) +

Count(DISTINCT{$<MesVta={$(=Only(MesVta)-2)}>}id_venta) +

Count(DISTINCT{$<MesVta={$(=Only(MesVta)-3)}>}id_venta) +

Count(DISTINCT{$<MesVta={$(=Only(MesVta)-4)}>}id_venta) +

Count(DISTINCT{$<MesVta={$(=Only(MesVta)-5)}>}id_venta) +

Count(DISTINCT{$<MesVta={$(=Only(MesVta)-6)}>}id_venta)

)

Pero al momento de utilizarlo para compararlo con la venta actual me da valores incorrectos.

En un objeto de texto muestra el resultado correcto, pero en una tabla simple o pivot no. He intentado hacer una variable con éste cálculo pero no funciona, y utilizando SET desde el Script también me  da error.

Lo que quiero es saber si puedo calcularlo de otra manera desde el Script para que me quede un numero fijo (56,66) y pueda compararlo con cada total de venta por cliente, del mes actual.

Imagen1.png

20 Replies
walterlh
Creator II
Creator II
Author

Lo probé, pero al elegir el mes me queda en 0. Ya lo había probado con Sum( {<MesVta={">=$(=only(MesVta)-6)"}>*<FechaComprobante={"<=$(=max(MesVta))"}> }   Ventas)

Incluso intenté con crear dos variables Max(MesVta) y Max(MesVta)-6 y tampoco me arroja valores.

bertinabel
Creator
Creator

Walter,

     El Set Analysis va a depender mucho de el formato que tenga tu campo de "MesVta" si esta como texto y no como fecha va a ser muy difícil lograr lo que comentas.

Agregue un ejemplo donde un campo que trae la fecha de venta en formato texto la convierto en formato fecha desde el script y despues hago una tabla simple como la que quieres obtener.

Espero te funcione.

Saludos

walterlh
Creator II
Creator II
Author

Bertin voy a probar, mi campo VtaMes es numérico. Se obtiene de Year(Fecha)* 12 + Month(Fecha). Igualmente probé con tipo fecha, en mi campo Mes.

Ejemplo de MesVta:

Enero = 2016 * 12 + 1 = 24193

Febrero = 2016 * 12 + 2 = 24194

Marzo = 2016 * 12 +3 = 24195

bertinabel
Creator
Creator

Walter,

     Si tu campo ya es numerico, entonces no deberias de tener mucho problema, el Set Analysis quedaria de la siguiente forma:

=Sum({$<MesVta=, MesVta={">=$(=Floor(AddMonths(Max(MesVta),-6)))<=$(=Floor(Max(AddMonths(MesVta,-1))))"}>} Sales)

Saludos.

jvitantonio
Specialist III
Specialist III

Bertin, no puedes usar una function de tipo fecha "Addmonths" con un campo de tipo numerico. MesVta es del tipo Integer.

El set analysis deberia quedar de la siguiente forma:

=Sum({$< MesVta={">=$(=max(MesVta)-6)<=$(=max(MesVta)-1)} >} Sales)

Saludos

Juan

walterlh
Creator II
Creator II
Author

Intento con esa y me da valores 0 en todos los registros seleccionando MesVta. Hice unas modificaciones y funcionó el set Analysis.

Sum({$<MesVta= ,MesVta={">=$(=MesVta -6)<=$(=MesVta -1)"}>} Ventas)


De igual manera, cuando quiero totalizarlo en un cuadro de texto con Aggr(), me muestra un resultado diferente:

Sum( Total

Aggr(

Sum({$<MesVta= ,MesVta={">=$(=MesVta -6)<=$(=MesVta -1)"}>} NetoComprobante)

, Clientes))

Coloco el Set Analysis en la tabla simple (Sin el Total) y veo que no suma la venta semestral de los clientes que no tienen ventas en el MesVta actual, o el MesVta que se haya seleccionado.

walterlh
Creator II
Creator II
Author

Hola Juan, tu Set Analysis también me funcionó a la perfección pero sigo teniendo el inconveniente de que al totalizarlo con Aggr() no muestra el mismo total de la tabla simple, porque no suma los registro de los clientes que no tienen compra en el MesVta actual, o el MesVta seleccionado.

ayuda.png

bertinabel
Creator
Creator

Walter,

     Intenta cambiar el signo $ del Set Analysis por 1 para que te considere todos los Clientes existentes, quedando de la siguiente forma:

    

aggr (

Sum ({1 <= MesVta, MesVta = { "> = $ (= MesVta -6) <= $ (= MesVta -1)"}>} NetoComprobante)

, Clientes))

Saludos.

bertinabel
Creator
Creator

Juan,

     Tienes razón lo que pasa es que yo uso para las fechas un valor numérico pero este valor numérico lo obtengo con la función Floor(), es totalmente diferente al valor entero de la forma en que lo esta obteniendo walter.

Saludos y gracias por la observación

walterlh
Creator II
Creator II
Author

Arroja el acumulado de las ventas sin tener en cuenta la restricción del semestre. Y solamente en los clientes que tuvieron ventas en el MesVta seleccionado.