# Advise - scripting

**Joris Lansdaal**Jun 4, 2016 5:21 PM

Hi,

I would like some advise and would like to know if I my below script is written efficient.Do I need to reload the tables as much as I do to create the new variables?

Thanks.

Temp_Demand_2:

Load

BQS_ind,

BQS_oms,

Weekday_Flag,

Demand_Datum,

Demand_Datum_Month,

BQS_Dat_ID,

If(isnull(Demand_Aantal)=-1,0,Demand_Aantal) as Demand_Aantal,

Datum,

Flag_uit,

Leverancier_Naam,

Lopend_Crediteurnr,

Lopend_Crediteuroms,

Lopend_Invoerdat,

Lopend_Afldat,

Lopend_Orderbak,

Lopend_Order_interval,

Lopend_Overdue,

Lopend_confirmatie,

Lopend_Open,

Lopend_Order,

If(isnull(Lopend_Aantal_B)=-1,0,Lopend_Aantal_B) as Lopend_Aantal_B,

If(isnull(Lopend_Aantal_O)=-1,0,Lopend_Aantal_O) as Lopend_Aantal_O,

If(isnull(Lopend_Aantal_T)=-1,0,Lopend_Aantal_T) as Lopend_Aantal_T,

Artnr,

Lopend_Artnr,

Lopend_Artoms,

Joris,

1 as Flag,

If(isnull(Voorraad)=-1,0,Voorraad) as Voorraad,

//---------------------------------------Projectie Fact-------------------------------------------------------

If(isnull(Demand_Aantal)=-1,0,Demand_Aantal)*-1+

If(isnull(Lopend_Aantal_B)=-1,0,Lopend_Aantal_B) +

If(isnull(Voorraad)=-1,0,Voorraad) as Projectie_step

resident Temp_Demand

where Flag_uit=0 and isnum(BQS_ind)

Order by BQS_ind asc, Datum asc, Demand_Aantal desc;

//-------------------------Nu maken we een rangesum van Projectie_Step-----------------------------------------

Temp_Projectie_1:

Load *,

BQS_ind&Datum as %BQS_Datum_Key,

ApplyMap('Voorraadprijs_max',BQS_ind,0)as Voorraadprijs_max,

ApplyMap('Voorraadprijs_min',BQS_ind,0)as Voorraadprijs_min,

if(BQS_ind=Peek(BQS_ind),RangeSum(Projectie_step,Peek(Projectie2)),RangeSum(Projectie_step)) as Projectie2

Resident Temp_Demand_2;

//-------------------------Omdat er meerdere lijnen op 1 dag kunnen zijn moeten we de max bepalen---------------

Projectie:

Mapping

Load

BQS_ind&Datum as %BQS_Datum_Key,

Max(Projectie2) as Projectie

resident Temp_Projectie_1

Group by BQS_ind&Datum ;

// ------------------------- Met Peek plaatsen we de max waarde op de eerste lijn en een 0 op de andere-------------------

Demand:

Load *,

if(if(%BQS_Datum_Key=Peek(%BQS_Datum_Key),0,ApplyMap('Projectie',%BQS_Datum_Key,0))<0,0,if(%BQS_Datum_Key=Peek(%BQS_Datum_Key),0,ApplyMap('Projectie',%BQS_Datum_Key,0)))as Projectie

resident Temp_Projectie_1;

//------------------------- nu hebben we de juiste dagprojecties op de weekdagen --------------------------------------

Drop table Temp_DagVoorraad, Temp_Demand, Temp_Demand_2, Temp_Projectie_1;

Store Demand into $(vStorePath)\Datamodel_Projection.CSV (txt);