Business Calendar Requirements
Learn more about the data requirements for your custom business calendar.
Areas impacted by the business calendar
The business calendar affects the overall user experience, visual elements, and how data is processed:
-
Calculations: Visier Formula Language (VFL) functions like
yearsBetweenorworkingDaysBetweenare based on your calendar boundaries. -
Extraction formulas: The business calendar can influence Visier Extraction Language (VEL) functions in the data load such as
lastDateInMonthWithCustomCalendar. -
The Time picker: The displayed date ranges are based on your uploaded CSV file.
Required columns
The business calendar CSV file must contain the specific columns described below to validate against the expected schema. It's defined at a daily granularity. This means every day must be explicitly accounted for as a row in the file, including a year before your tracked data, your entire historical period, and all future dates.
Note: The CSV file must contain a header line with the column names, and all rows must be sorted in ascending date order.
The business calendar must contain the following columns:
|
Column |
Description |
Required |
|---|---|---|
|
DateID |
The unique identifier of the date in yyyyMMdd, such as |
Required |
|
Date |
The Unix timestamp including milliseconds for the date, such as |
Required |
|
Year |
An integer representing the year in YYYY format, such as |
Required |
|
YearLabelM |
The long label that displays in the Time picker and chart axis for time in visualizations, such as |
Required |
|
YearLabelS |
The short label that displays in the Time picker and chart axis for time in visualizations, such as |
Required |
|
Quarter |
An integer representing the quarter that the date belongs to, such as |
Required |
|
QuarterLabelM |
The long label that displays in the Time picker and chart axis for time in visualizations, such as |
Required |
|
QuarterLabelS |
The short label that displays in the Time picker and chart axis for time in visualizations, such as |
Required |
|
Month |
An integer representing the month number, such as |
Required |
|
MonthLabelM |
The long label that displays in the Time picker and chart axis for time in visualizations, such as |
Required |
|
MonthLabelS |
The short label that displays in the Time picker and chart axis for time in visualizations, such as Note: Use short abbreviations. If you populate this column with full month names, the user interface may become crowded. |
Required |
|
Week |
An integer representing the week of the date, such as Note: Do not include text prefixes. The word "Week" is automatically added to the values in this column. For example, if you input |
Required |
|
WeekLabelM |
The long label that displays in the Time picker and chart axis for time in visualizations, such as |
Required |
|
WeekLabelS |
The short label that displays in the Time picker and chart axis for time in visualizations, such as |
Required |
|
FullTimeHours |
The number of full-time hours for this date, such as |
Required |
|
CustomerID |
The unique identifier of the customer, such as Note: The column and a value must be present, however, the value can be |
Required |
|
DataVersion |
The data version of the business calendar. This is for WFA legacy support. Note: The column and a value must be present, however, the value can be |
Required |
Note:
-
LabelMis used across most standard system views whileLabelSis used in the Time picker to select display day and year. -
We recommend keeping all calendar labels under 20 characters. Shorter labels allow the user interface to render more items clearly in elements like the Time picker.
Let’s say your organization’s financial calendar begins in February. The example business calendar below demonstrates correct formatting:
|
DateID |
Date |
Year |
YearLabelM |
YearLabelS |
Quarter |
QuarterLabelM |
QuarterLabelS |
Month |
MonthLabelM |
MonthLabelS |
Week |
WeekLabelM |
WeekLabelS |
FullTimeHours |
CustomerID |
DataVersion |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
20160131 |
1454198400000 |
2016 |
FY 2016 |
FY 16 |
1 |
Quarter 1 |
Q1 |
1 |
February |
FEB |
1 |
FEB-W01 |
W01 |
0 |
54 |
0 |
|
20160201 |
1454284800000 |
2016 |
FY 2016 |
FY 16 |
1 |
Quarter 1 |
Q1 |
1 |
February |
FEB |
1 |
FEB-W01 |
W01 |
7.5 |
54 |
0 |
|
20160202 |
1454371200000 |
2016 |
FY 2016 |
FY 16 |
1 |
Quarter 1 |
Q1 |
1 |
February |
FEB |
1 |
FEB-W01 |
W01 |
7.5 |
54 |
0 |
Best practices
Follow these best practices when uploading a business calendar to avoid unexpected issues.
Include every day in the business calendar file
Business calendars are defined at a daily granularity, meaning you must explicitly account for every day in the file. Your calendar dates must span the following ranges:
-
Start at least one year before your analytic tenant's start date.
-
Cover your entire historical data period.
-
Extend at least one year into the future.
-
Ensure your periods align with your year. Quarters, months, and weeks cannot cross over into a new business year—they must all restart fresh on the exact day the new year begins.
Include an extra decade of future dates so you don't have to constantly update the file. If the calendar approaches the end of its uploaded data, replace it with new future dates.
Update metric formulas for metrics that handle time
Metrics that handle time, such as time between calculations, use the uploaded business calendar unless gregorian is specified in the formula. Many of Visier's out-of-the-box metrics use gregorian in the formula. To use your business calendar instead, remove gregorian from the metric formula.
Populate FullTimeHours column correctly
Metrics such as Absence Ratio or Full-time Equivalents (FTE) rely directly on the FullTimeHours column to determine expected work days. It’s important to ensure this column is populated accurately for valid metric calculations when using your custom business calendar.
Do not change the required column names in the business calendar file
Do not change the column headers in your business calendar file because they are used to validate against the expected schema. To change the labels displayed in the Time picker, you must modify the row values in your file.
Review Visier Formula Language dependencies
Business calendars change how custom expressions calculate time gaps. Review the following dependencies to understand what VFL functions may be impacted:
-
VFL functions without Gregorian fallbacks: VFL calendar functions like
yearsBetween,monthsBetween,daysBetween,millisBetween, orworkingDaysBetweenare based on your uploaded business calendar data. If you do not define a Gregorian calendar fallback parameter. The formula may return an error if a date falls outside calendar boundaries. -
Past-date validation errors: Formulas that calculate expressions like
Agemay fail and return an error if an employee's birth date falls outside your business calendar's range.
To prevent historic data validation failures, we recommend that you include the Gregorian fallback parameter within your VFL time-calculation formulas. For more information, see Visier Formula Language (VFL).
