Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
How to create a fiscal calendar on a specific column
Hi,
Try this..
QuartersMap:
MAPPING LOAD
rowno() as Month,
'Q' & Ceil (rowno()/3) as Quarter
AUTOGENERATE (12);
Temp:
Load
min(OrderDate) as minDate,
max(OrderDate) as maxDate
Resident Orders;
Let varMinDate = Num(Peek('minDate', 0, 'Temp'));
Let varMaxDate = Num(Peek('maxDate', 0, 'Temp'));
DROP Table Temp;
TempCalendar:
LOAD
$(varMinDate) + Iterno()-1 As Num,
Date($(varMinDate) + IterNo() - 1) as TempDate
AutoGenerate 1 While $(varMinDate) + IterNo() -1 <= $(varMaxDate);
MasterCalendar:
Load
TempDate AS OrderDate,
week(TempDate) As Week,
Year(TempDate) As Year,
Month(TempDate) As Month,
Day(TempDate) As Day,
YeartoDate(TempDate)*-1 as CurYTDFlag,
YeartoDate(TempDate,-1)*-1 as LastYTDFlag,
inyear(TempDate, Monthstart($(varMaxDate)),-1) as RC12,
date(monthstart(TempDate), 'MMM-YYYY') as MonthYear,
ApplyMap('QuartersMap', month(TempDate), Null()) as Quarter,
Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as WeekYear,
WeekDay(TempDate) as WeekDay
Resident TempCalendar
Order By TempDate ASC;
Drop Table TempCalendar;
Regards
KC
Thanks, however, even if i reload the above script, i don't see my calendar.
Or you can try this code
MapQuarter:
Mapping Load * Inline
[
Quarter,ChangeValue
Q1,Q4
Q2,Q1
Q3,Q2
Q4,Q3
];
LET vDateMin = Num(MakeDate(2012,1,1));
LET vDateMax = Floor(MonthEnd(Today()));
LET vDateToday = Num(Today());
TempCalendar:
LOAD
$(vDateMin) + RowNo() - 1 AS DateNumber,
Date($(vDateMin) + RowNo() - 1) AS TempDate
AUTOGENERATE 1
WHILE $(vDateMin)+IterNo()-1<= $(vDateMax);
Calendar:
LOAD
Date(TempDate) AS CalendarDate,
yearname(TempDate, 0, 4) as FinancialYear,
Year(yearname(TempDate, 0, 4)) as FYear,
if(Month(TempDate)<4,9+Month(TempDate),Month(TempDate)-3) as FinancialMonth,
ApplyMap('MapQuarter', 'Q' &''& ceil(Month(TempDate)/3)) as Quarter,
Month(TempDate) as Month
RESIDENT TempCalendar ORDER BY TempDate ASC;
DROP TABLE TempCalendar;
Regards
Anand
Hi,
Replace this part with your field.
Temp:
Load
min(OrderDate) as minDate,
max(OrderDate) as maxDate
Resident Orders;
in place of order date put your field name and resident your table.
Regards
kc