11 de octubre de 2014

Flags para idenficar Fechas

Si se tienen Ventas por cliente y se quiere identificar:
    1. Ultimo Consumo de cada  Cliente
    2. Primer Consumo de cada Cliente
    3. Si el Cliente consume en ultimo día del mes
    4. Si el Cliente consume en primer día de la semana
    5. Si el Cliente consume en ultimo día de semana

Una técnica podría ser crear campos tipo Flag, quedando como resultado:











Para lograr esto el scrip seria:



Ventas:
LOAD * INLINE [
    Fecha,      Cliente, Cantidad
    1/31/2014,   Juan,     80
    1/26/2014,   Juan,    100
    1/13/2014,   Juan,    300
    1/2/2014,    Pedro,   500
    1/31/2014,   Pedro,   500
     1/5/2014,   Pedro,   500
    1/13/2014,   Pedro,   200]

// 1. Flag para identificar ultimo consumo de cada cliente
Left Join (Ventas)
LOAD       Cliente           ,
          
max(Fecha)        as Fecha,
           1                 
as Flag_UltimoConsumo
Resident Ventas Group By Cliente;

// 2. Flag para identificar primer consumo del cliente
Left Join (Ventas)
LOAD       Cliente           ,
          
min(Fecha)        as Fecha,
           1                
as Flag_PrimerConsumo
Resident Ventas Group By Cliente;

//3. Flag_UltimoDiaMes para idenficar si el cliente consume ultimo dia del mes
//4. Flag_1erDiaSemana para idenficar si el cliente consume primer dia de la semana
//5. Flag_UltimoDiaSemana para idenficar si el cliente consume ultimo dia de la semana
Left Join (Ventas)
LOAD Distinct
    
Fecha                                       ,
   
if(Fecha=Floor(MonthEnd(Fecha)),1)           As Flag_UltimoDiaMes,   
    
if(Fecha=Floor(WeekStart(Fecha)),1)          As Flag_1erDiaSemana,
    
if(Fecha=Floor(WeekEnd(Fecha)),1)            As Flag_UltimoDiaSemana
Resident Ventas; 








 

No hay comentarios: