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 he solucionado (con la ayuda de Bertin, Juan y Alexis). Si bien no lo hice por script como era la idea desde el principio de ésta publicación, pensando con Bertin y Juan llegamos a un Set Analysis que funciona muy bien.
Sum({1} total
Aggr(
Sum({$<MesVta={">=$(=max(MesVta)-6)<=$(=max(MesVta)-1)"}>} NetoComprobante)
, Clientes)
)
Hola Walter,
Inténtalo de la siguiente forma:
Sum(Aggr( TU_FÓRMULA, DIMENSIONES ))
Entiendo que tu única dimensión en la pivot es clientes, no?
Si añades más dimensiones, deberás de añadirlas en el AGGR().
Saludos.
Walter como estas?
Puede ser mas perfomante hacer estas mismas agrupaciones pero en el script, utlizando la sentencia Group by
https://community.qlikview.com/thread/23003
Saludos
Fernando K.
Hola Alexis, gracias por tu respuesta. Habría probado eso, porque siempre resolví este tipo de cuestiones con Aggr(). Pero en éste caso en particular me da null(). Yo creo que debe ser por $ la selección actual.
Ésto uso:
Sum(Aggr(
(
(
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)
),Clientes))
Fernando .. éste script uso y de entrada me remarca que no es una sintaxis válida
LOAD
id_venta,
id_cliente,
(
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)
) as venta_semestre
Resident ventas_detalle
Group By id_cliente;
Buen Día,
En tu Script el Group By debe de ir por los campos : id_cliente, id_venta
LOAD
id_venta,
id_cliente,
(
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)
) as venta_semestre
Resident ventas_detalle
Group By id_cliente,id_venta;
Como regla en el Group By debes de agregar los campos que no estas calculando sobre el mismo Script en tu caso el campo venta_semestre si es un campo calculado, mientras que id_venta y id_cliente solo los estas leyendo.
Saludos.
Hola Bertin, agradezco que se tome el tiempo de leer mi pregunta. Probé su sugerencia y parece que el editor no lo admite. Desde el primer "Sum()" me remarca el código en rojo advirtiendo que la sintaxis no es correcta.
Que tal Walter,
No me había percatado de que tenias Set Analysis en tu Script, esto no se puede hacer en el Script no puedes meter Set Analysis.
La verdad no logro entender completamente que es lo que deseas obtener. Hay posibilidad de que puedas subir tu qvd o qvw para tener una idea más clara de cual es tu problema.
De inicio creo que tu set analysis que indicas al inicio se puede reducir a lo siguiente:
Sum ({$ <MesVta = {">=$ (= AddMonths (MesVta, -6) <= $ (= AddMonths (MesVta, -1) "}>} Sales)
/
Count ({$ <MesVta = {">=$ (= AddMonths (MesVta, -6) <= $ (= AddMonths (MesVta, -1) "}>} DISTINCT id_venta)
Intento obtener la suma de las ventas del semestre anterior al actual. Si estamos en Diciembre, quiero obtener el total de las ventas de Junio + Julio + Agosto + Septiembre + octubre + Noviembre
Walter,
Ya probaste con el Set Analysis que te puse en mi respuesta anterior?
Sum ({$ <MesVta = {">=$ (= AddMonths (MesVta, -6) <= $ (= AddMonths (MesVta, -1) "}>} Sales)
Saludos