Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.

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.
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
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
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.
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
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.
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.

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.
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
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.