Monday, January 30, 2017
Tuesday, January 24, 2017
Generate your own calendar table in Qlikview?
- We need start date of calendar, in my case I have taken minimum date from fact table.
- We need End Date of calendar, I have taken today's date.
To get min. date from Fact:-
Min:
LOAD min (Date_field) as Min_Date
resident Fact;
let vMin_Date=num(floor(Peek('Min_Date')));
let vMax_Date=num(floor(today()));
To Generate Calendar between min and max date:-
Calendar:
load date(RowNo()+ $(vMin_Date)-1) as Calendar_Date
AutoGenerate ($(vMax_Date)-$(vMin_Date)) ;
This will populate all the dates between min date to max date. Now we can create other date Matrix using Calendar_Date.
Calendar_Table:
load *,
Month(Calendar_Date) as Month,
Hour(Calendar_Date) as Hour_Calendar,
Day(Calendar_Date) as Day,
Date(floor(Calendar_Date)) as Date,
Date((floor(Calendar_Date)), 'DD/MM/YYYY') As DateField,
WeekDay(floor(Calendar_Date)) as WeekDay,
Year(date(floor(Calendar_Date))) as Year,
dual(Month(Calendar_Date)&'-'&Year(Calendar_Date),Year(Calendar_Date)&num(month(Calendar_Date),00)) as YearMonthDis,
(date(WeekStart(date(Calendar_Date,'DD/MM/YYYY')),'DD/MM') & '-' & date(WeekEnd(date(Calendar_Date,'DD/MM/YYYY')),'DD/MM')) as WeekPeriod,
MonthStart(floor(Calendar_Date)) as MonthStart,
Year(Calendar_Date)&num(Month(Calendar_Date),00) as YearMonth,
Year(Calendar_Date)&num(Week(Calendar_Date),00) as YearWeek,
'Q'&(FLOOR(NUM(MONTH(Calendar_Date)-1)/3)+1) AS Quarter,
Date(monthstart(Calendar_Date), 'MMM-YYYY') AS MonthYear,
Week(Calendar_Date)&'-'&Year(Calendar_Date) AS WeekYear
Resident Calendar;
Drop table Calendar;
Now we have Calendar_Table ready in model to be used.
Date time stamp handling with incremental load using Oracle DB.
- Take Max date from existing QVD file.
maxDate:
load
max(date) as maxDate
FROM
..\1_QVD\your-qvd-file.qvd (qvd);
let vSERVICE_MONITORINGMaxDate = date(peek('maxDate',0,'maxDate'),'DD-MM-YY hh:mm:ss'); // max date parameter
Final_Table:
SQL SELECT *
FROM DB_Table
where to_date(to_char(REQUEST_TIMESTAMP,'DD-MM-RR HH24:MI:SS')) >to_date('$(vSERVICE_MONITORINGMaxDate)','DD-MM-RR HH24:MI:SS');
Concatenate
LOAD *
FROM
[..\1_QVD\your-qvd-file.qvd] (qvd);
store Final_Table into ..\\1_QVD\your-qvd-file..qvd;
drop table Final_Table;
drop table maxDate;
We can also check whether QVD file is empty or not with below Code.
File:
LOAD
QvdNoOfRecords('..\\1_QVD\our-qvd-file.qvd') AS FileNumberOfRecords
autogenerate 1;
let vFileNumberOfRecords = peek('FileNumberOfRecords');
//If file doesn't exist run a full load else run incremental
if '$(vFileNumberOfRecords)' = '' then
//full load
Final_Table:
SQL SELECT *
FROM DB_Table;
store Final_Table into ..\\1_QVD\your-qvd-file.qvd;
drop table Final_Table;
ENFIF
Subscribe to:
Posts (Atom)