Qlikview Calendar
Qlikview Calendar
//====================================================================================
=========================
// Date Bridge
//====================================================================================
=========================
DateBridge:
LOAD Distinct
%DateBridge,
Timestamp(SubField(%DateBridge,'|',1)) as %Timestamp,
'Created' as DateBridgeType
Resident CASE;
Concatenate(DateBridge)
LOAD Distinct
%DateBridge,
Timestamp(SubField(%DateBridge,'|',2)) as %Timestamp,
'Closed' as DateBridgeType
Resident CASE
WHERE len(SubField(%DateBridge,'|',2)) > 0;
Concatenate(DateBridge)
LOAD Distinct
%DateBridge,
Timestamp(SubField(%DateBridge,'|',3)) as %Timestamp,
'Escalated' as DateBridgeType
Resident CASE
WHERE len(SubField(%DateBridge,'|',3)) > 0;
TimestampReference:
LOAD
Max(FieldValue('%Timestamp',RecNo())) as MaxTimestamp
AutoGenerate FieldValueCount('%Timestamp');
LET vTimestampReference =
TimeStamp(FieldValue('MaxTimestamp',NoOfRows('TimestampReference')));
LET vDateReference = Date(Floor($(#vTimestampReference)));
//====================================================================================
=========================
// Calendar table with date attributes as fields
//====================================================================================
=========================
Cal:
LOAD
TimeStamp(TempDate + MakeTime(IterNo()-1)) as Timestamp,
MakeTime(IterNo()-1) as [12 Hour],
Interval(MakeTime(IterNo()-1),'HH') as [24 Hour],
Date(TempDate) as Date,
Month(TempDate) as Month,
Dual(Left(Month(TempDate),1),Month(TempDate)) as MonthShort,
Num(Month(TempDate),'00') as MonthNo,
MonthName(TempDate) as MonthName,
Year(TempDate) as Year,
Num(Week(TempDate),'00') as Week,
Day(TempDate) as Day,
WeekDay(TempDate) as WeekDay,
Dual('Q' & Ceil(Month(TempDate)/3),Ceil(Month(TempDate)/3)) as Quarter,
DayNumberOfYear(TempDate) as DayofYear,
NetWorkDays(TempDate,TempDate) as WorkingDay
WHILE IterNo()<=24
;
LOAD
Date(MinDate + IterNo()) as TempDate
WHILE MinDate + IterNo() <= MaxDate
;
LOAD
Min(floor(FieldValue('%Timestamp',RecNo())))-1 as MinDate,
Max(floor(FieldValue('%Timestamp',RecNo()))) as MaxDate
AutoGenerate FieldValueCount('%Timestamp');
//====================================================================================
=========================
// Calendar prefixed with table name, unqualify the key field(s)
//====================================================================================
=========================
LET vCalendarPrefix = 'Master'; // all fields to be prefixed e.g. Prefix.DateField
LET vFactTableKeyField = '%Timestamp'; // to associcate to your fact table, must not
be same as a field in Cal
LET vCalendarKeyField = '%MasterTimestamp'; // must not be same as a field in Cal
//====================================================================================
=========================
// Created Date - Calendar prefixed with table name, unqualify the key field(s)
//====================================================================================
=========================
LET vCalendarPrefix = 'Created';
LET vFactTableKeyField = '%CreatedDate';
QUALIFY *; UNQUALIFY [$(vFactTableKeyField)]; ;
[$(vCalendarPrefix)]:
LOAD DISTINCT
Date as [$(vFactTableKeyField)],
Date,
MonthName,
Year
Resident Cal;
UNQUALIFY *;
//====================================================================================
=========================
// Created Date - Calendar prefixed with table name, unqualify the key field(s)
//====================================================================================
=========================
LET vCalendarPrefix = 'Closed';
LET vFactTableKeyField = '%ClosedDate';
QUALIFY *; UNQUALIFY [$(vFactTableKeyField)]; ;
[$(vCalendarPrefix)]:
LOAD DISTINCT
Date as [$(vFactTableKeyField)],
Date,
MonthName,
Year
Resident Cal;
UNQUALIFY *;
//====================================================================================
=========================
// Predefined Date Selections
//====================================================================================
=========================
LET vTableName = 'DateSelections';
// Year to Date
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Year to date' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal
WHERE InYearToDate(Date,$(#vDateReference),0);
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Year to date' as DateSelection,
'$(vRange2)' as DateRange
Resident Cal
WHERE InYearToDate(AddYears(Date,1),$(#vDateReference),0);
// Month to date
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Month to date' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal
WHERE InMonthToDate(Date,$(#vDateReference),0);
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Month to date' as DateSelection,
'$(vRange2)' as DateRange
Resident Cal
WHERE InMonthToDate(AddYears(Date,1),$(#vDateReference),0);
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Last Full Month' as DateSelection,
'$(vRange2)' as DateRange
Resident Cal
WHERE InMonth(AddYears(Date,1),AddMonths($(#vDateReference),-1),0);
// Rolling 30 days
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Rolling 30 days' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal
WHERE Date > $(#vDateReference) -30;
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Rolling 30 days' as DateSelection,
'$(vRange2)' as DateRange
Resident Cal
WHERE AddYears(Date,1) > $(#vDateReference) -30 AND AddYears(Date,1) <=
$(#vDateReference);
// Rolling 12 months
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Rolling 12 months' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal
WHERE Date > AddYears($(#vDateReference),-1);
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Rolling 12 months' as DateSelection,
'$(vRange2)' as DateRange
Resident Cal
WHERE AddYears(Date,1) > AddYears($(#vDateReference),-1) AND AddYears(Date,1) <=
$(#vDateReference);
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Today' as DateSelection,
'$(vRange2)' as DateRange
Resident Cal
WHERE WeekYear(Date)&'-'&Week(Date)&'-'& WeekDay(Date) = WeekYear($(#vDateReference))-
1&'-'&If(Week($(#vDateReference))=53,52,Week($(#vDateReference)))&'-'&
WeekDay($(#vDateReference)) ;
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Yesterday' as DateSelection,
'$(vRange2)' as DateRange
Resident Cal
WHERE WeekYear(Date +1)&'-'&Week(Date +1)&'-'& WeekDay(Date +1) =
WeekYear($(#vDateReference))-1&'-
'&If(Week($(#vDateReference))=53,52,Week($(#vDateReference)))&'-'&
WeekDay($(#vDateReference)) ;
[24HourLY_Temp]:
LOAD DISTINCT
Date
Resident Cal
WHERE
WeekYear(Date)&'-'&Week(Date)&'-'& WeekDay(Date) = WeekYear($(#vDateReference))-1&'-
'&If(Week($(#vDateReference))=53,52,Week($(#vDateReference)))&'-'&
WeekDay($(#vDateReference))
;
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'24 Hours' as DateSelection,
'$(vRange2)' as DateRange
Resident Cal
WHERE Timestamp > TimeStamp($(#v24HourLY)-1 +
MakeTime(hour($(#vTimestampReference)),1)) AND Timestamp <= TimeStamp($(#v24HourLY) +
MakeTime(hour($(#vTimestampReference)),1))
// Full Year
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Full Year' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal
WHERE InYear(Date,$(#vDateReference),0);
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Full Year' as DateSelection,
'$(vRange2)' as DateRange
Resident Cal
WHERE InYear(AddYears(Date,1),$(#vDateReference),0);
//====================================================================================
========================
//Custom Date Filter
//====================================================================================
========================
NoConcatenate
DateFrom:
LOAD Date as [%Dt_From] Resident Cal;
NoConcatenate
DateTo:
LOAD Date as [%Dt_To] Resident Cal;
//====================================================================================
=========================
// Cleanup
//====================================================================================
=========================
//EXIT SCRIPT;