10 de enero de 2014

Generic Keys para comparar Ventas

Una empresa quiere comparar las ventas de productos con promoción Vs sin promoción.
Se tienen estas promociones:
Promoción 100 =  Empanada+Café
Promoción 200 = Empanada+Jugo

Las tablas serian las siguientes:














Al cargar estas tablas tendríamos el siguiente modelo:



Si se quiere comparar las ventas de Empanadas y Café realizadas con la Promoción 100 Vs las ventas de Empana y Café pero sin promoción, este modelo no lo permitiría, ya que al seleccionar la promoción Empanada+Café, excluye las ventas sin promoción.

Para lograr esto, se crea una tabla Link_Dimensional (usando teoría de GenericKey. Ver pdf de Referencia), que contenga las promociones asociadas a los artículos que la componen, y ademas la asociación de cada promoción con sus artículos sin promoción.

El nuevo modelo quedaría así:










El script de este modelo seria el siguiente:

Fact_Ventas:
LOAD IdPromocion_Ventas&'-'&Articulo as Key_Link,
INLINE [
     Articulo, Venta, IdPromocion_Ventas
     Empanada, 25,        100
     Café,     10,        100
     Empanada, 25,        200
     Jugo,     10,        200
     Empanada, 25,        SinPromo
     Café,     10,        SinPromo
     Jugo,     10,        SinPromo]
;

Promociones:

LOAD * INLINE [
    IdPromocion,     NombrePromocion,     IdArticuloPromo
    100,             Empanada+Café,       Empanada
    100,             Empanada+Café,       Café
    200,             Empanada+Jugo,       Empanada
    200,             Empanada+Jugo,       Jugo]
;

Link_Dimensional:

LOAD
IdPromocion,
IdPromocion&'-'&IdArticuloPromo   as Key_Link
Resident Promociones;
Concatenate (Link_Dimensional)
LOAD
IdPromocion,
'SinPromo'&'-'&
IdArticuloPromo    as Key_Link
Resident Promociones;
 

Referencia: http://community.qlikview.com/docs/DOC-3451