0% found this document useful (0 votes)
50 views7 pages

Qlikview Calendar

The document defines tables and logic to generate calendar tables from date data. It includes: 1) Creating calendar tables prefixed with entity names (Created, Closed) to associate dates with facts. 2) Defining date selections like "year to date", "last full month" to group date ranges for analysis. 3) Generating predefined date ranges for the current and last year to allow comparisons over time.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views7 pages

Qlikview Calendar

The document defines tables and logic to generate calendar tables from date data. It includes: 1) Creating calendar tables prefixed with entity names (Created, Closed) to associate dates with facts. 2) Defining date selections like "year to date", "last full month" to group date ranges for analysis. 3) Generating predefined date ranges for the current and last year to allow comparisons over time.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

//============= 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)));

DROP TABLE TimestampReference;

//====================================================================================
=========================
// 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

QUALIFY *; UNQUALIFY [$(vFactTableKeyField)], [$(vCalendarKeyField)]; //,


[$(vCalendarKeyField2)];
[$(vCalendarPrefix)]:
LOAD
Timestamp as [$(vFactTableKeyField)],
Timestamp as [$(vCalendarKeyField)],
*
Resident Cal;
UNQUALIFY *;

RENAME Table [$(vCalendarPrefix)] TO [$(vCalendarPrefix)_Calendar];

//====================================================================================
=========================
// 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 *;

RENAME Table [$(vCalendarPrefix)] TO [$(vCalendarPrefix)_Calendar];

//====================================================================================
=========================
// 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 *;

RENAME Table [$(vCalendarPrefix)] TO [$(vCalendarPrefix)_Calendar];

//====================================================================================
=========================
// Predefined Date Selections
//====================================================================================
=========================
LET vTableName = 'DateSelections';

//Values to display for the date range


LET vRange1 = 'This Year'; //Current, This Year, TY, etc...
LET vRange2 = 'Last Year'; //Prior, Last Year, LY, etc...

// 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);

// Last Full Month


[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Last Full Month' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal
WHERE InMonth (Date,AddMonths($(#vDateReference),-1),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);

// Rolling 12 months (from last full month)


[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Rolling 12 months (from last full month)' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal
WHERE
IF($(#vDateReference) = Date(Floor(MonthEnd($(#vDateReference)))),
Date > AddYears($(#vDateReference),-1),
Date > AddYears(MonthStart($(#vDateReference))-1,-1) AND Date <=
MonthStart($(#vDateReference))-1
);
[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Rolling 12 months (from last full month)' as DateSelection,
'$(vRange2)' as DateRange
Resident Cal
WHERE
IF($(#vDateReference) = Date(Floor(MonthEnd($(#vDateReference)))),
AddYears(Date,1) > AddYears($(#vDateReference),-1) AND AddYears(Date,1) <=
$(#vDateReference),
AddYears(Date,1) > AddYears(MonthStart($(#vDateReference))-1,-1) AND AddYears(Date,1)
<= MonthStart($(#vDateReference))-1
);

// Today same week and day


[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Today' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal
WHERE Date = $(#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)) ;

// Yesterday same day of week


[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Yesterday' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal
WHERE Date +1 = $(#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)) ;

// 24 Hours based on same week and day


[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'24 Hours' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal
WHERE Timestamp > Timestamp(floor($(#vTimestampReference))-1 +
MakeTime(hour($(#vTimestampReference)),1)) AND Timestamp <=
Timestamp(floor($(#vTimestampReference)) + MakeTime(hour($(#vTimestampReference)),1));

[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))
;

LET v24HourLY = Peek('Date',0,'24HourLY_Temp');

DROP TABLE [24HourLY_Temp];

[$(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 - does not contain a Prior DateRange


[$(vTableName)]:
LOAD
Timestamp as [$(vCalendarKeyField)],
'Custom' as DateSelection,
'$(vRange1)' as DateRange
Resident Cal;

//====================================================================================
========================
//Custom Date Filter
//====================================================================================
========================

NoConcatenate
DateFrom:
LOAD Date as [%Dt_From] Resident Cal;
NoConcatenate
DateTo:
LOAD Date as [%Dt_To] Resident Cal;

//====================================================================================
=========================
// Cleanup
//====================================================================================
=========================

DROP TABLE Cal;


LET vTimestampReference =;
LET vDateReference =;
LET vCalendarPrefix =;
LET vFactTableKeyField =;
LET vCalendarKeyField =;
LET vTableName =;
LET vRange1 =;
LET vRange2 =;
LET v24HourLY =;

//EXIT SCRIPT;

You might also like