Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! 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

1 Solution

Accepted Solutions
walterlh
Creator II
Creator II
Author

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)

)

View solution in original post

20 Replies
alexis_garcia
Creator II
Creator II

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.

fkeuroglian
Partner - Master
Partner - Master

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.

walterlh
Creator II
Creator II
Author

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

walterlh
Creator II
Creator II
Author

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;

bertinabel
Creator
Creator

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.

walterlh
Creator II
Creator II
Author

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.

asdasadsa.png

bertinabel
Creator
Creator

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)

walterlh
Creator II
Creator II
Author

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

bertinabel
Creator
Creator

Walter,

     Ya probaste con el Set  Analysis que te puse en mi respuesta anterior?

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


Saludos