Skip to content

The best date dimension build/refresh script you've ever seen! Written in T-SQL.

License

Notifications You must be signed in to change notification settings

elliott-with-the-longest-name-on-github/awesome-date-dimension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

awesome-date-dimension

A few months back, I had to create a date dimension. All of the scripts I could find publicly were missing a lot of the flags and other features I needed (especially around fiscal month handling) -- so I created one myself. This is written in T-SQL, but shouldn't be too hard to port to another dialect of SQL.

This template also provides tables and refresh scripts for a DimFiscalMonth and a DimCalendarMonth. These roll up details from DimDate into a dimension you can use to join pre-aggregated tables together. This can be useful when trying to join fact tables that are at different date granularities or when trying to create a pre-aggregated model in Power BI.

If you're a corporation and want me to translate this to another dialect, send me a message. I'd be happy to do so inexpensively.

Instructions

One of the few assumptions I made is around table names. I assume your table is called dbo.DimDate. If it's not, just do a find-and-replace across the whole project for whatever your table name is.

Two tables are also required for the holiday mapping: integration.manual_HolidayTypes and integration.manual_Holidays. HolidayTypes just holds different type definitions for holidays (for example, "Company Holiday", "US Public Holiday", "Canadian Public Holiday"). The template script creates flags for CompanyHoliday and USPublicHoliday by default. You can add to or subtract from this by adding or removing columns and logic (see Custom Holidays).

All customizations should be performed before executing the below steps. If you need to customize something, come back to this section after reading through the customization subheaders below. As a general rule, if you want to customize a behavior, I have provided easily-searchable comments in the code. For example, to customize holidays, perform a folder-wide search for "customize-holidays". Sections are delimited with a starting comment of -- customize-holidays START and an ending comment of --customize-holidays END. Specific comments are listed in their sections.

  1. Choose a language. These are represented by the top-level folders. Currently, only T-SQL is supported.
  2. Start from the top. The folders are ordered. Run all of the scripts from each folder before moving to the next.
  3. Run the following scriptlet to make sure the refresh procs are working:
EXEC dbo.sp_build_DimDate;
EXEC dbo.sp_build_DimCalendarMonth;
EXEC dbo.sp_build_DimFiscalMonth;
  1. Set the stored procedures to run daily with your chosen ETL software. The proc for DimDate should run prior to the procs for DimFiscalMonth and DimCalendarMonth, as they depend upon DimDate being up-to-date.

Customization

See below for instructions around customizing specific behaviors.

Generated Date Range

Comment name: -- customize-daterange

The date range generated is defined in /{language}/02-initial-build/03-InsertDimDateRecords.sql. Specifically, you're looking for the following two lines:

SET @FirstDate='2000-01-01';
SET @NumberOfYearsToGenerate=100;

By default, it will start on 2021-01-01 and run through 100 years.

Fiscal Periods

Comment name: -- customize-fiscalperiods

I built this around having a very flexible set of fiscal periods. That being said, there are a few assumptions:

  1. Your fiscal month runs from a constant numerical day to a numerical day. For example, a fiscal month of the 24th through the 23rd is valid; a fiscal month of "the first Sunday of the calendar month to the first Saturday of the next calendar month" is not.
  2. Your fiscal month does not start after the 28th. Because February, the shortest month, has 28 days, anything over this causes all sorts of horrifying edge cases.

The fiscal period settings are defined in /{language}/02-initial-build/03-InsertDimDateRecords.sql. They are also defined in /{language}/03-refresh-procs/01-sp_build_DimDate.sql. (The first file controls the initial build behavior; the second file controls the daily update behavior.)

There are five available settings:

  1. FiscalMonthStartDay - This controls the first day of your fiscal month. For example, if your month ran from the 15th through the 14th, you'd set this to 15.
  2. FiscalYearStartMonth - This controls the first month of your fiscal year. For example, if your fiscal year starts in November, you'd set this to 11.
  3. FiscalMonthPeriodEndMatchesCalendar - This controls the behavior of fields like FiscalMonthName by allowing you to set which "end" of your fiscal month determines its name. For example, say your fiscal month starts on the 15th and runs through the 14th. For the dates of December 15-January 14, is that the fiscal month of December or January? Setting this flag to 1 indicates that the month presented in the example is called "January" (because the fiscal month end falls in the calendar month of January). Setting it to 0 indicates that it's called "December".
  4. FiscalQuarterPeriodEndMatchesCalendar - Same as above, but for the quarter. If the quarter starts in December and runs through February, is that Q1 or Q4? FiscalQuarterPeriodEndMatchesCalendar = 1 indicates that it's Q1, whereas 0 indicates it's Q4.
  5. FiscalYearPeriodEndMatchesCalendar - Same as above, but for year. If your year runs from June 2020 through June 2021, is it the fiscal year of 2020 or 2021? FiscalYearPeriodEndMatchesCalendar = 1 indicates that it's 2021, whereas 0 indicates it's 2020.

Be sure to set the variables in both files!

TodayInLocal Behavior

Comment name: -- customize-todayinlocal

One of the variables central to the load scripts is called TodayInLocal. At runtime, it determines what the date is in your local timezone. By default, it's set to Mountain Standard Time. You can change this by searching for the comment and adjusting the timezone. Be careful -- timezones may be named different things on different operating systems. Make sure the name you use is correct for your runtime environment!

Business Days

Comment name: -- customize-businessdays

Business days are based off of company holidays. The logic is pretty simple: If the date is a company holiday or a weekend, the BusinessDayFlag will be 0. If it's not, it's a 1. I didn't build much specific customization in for this behavior; If you'd like to change it, you can replace the logic (just search for the comment).

Custom Holidays

Comment name: -- customize-holidays

Holidays are pretty easy to customize as long as you only need US Public Holidays and Company Holidays. If you need to add more categories, you'll have to start adding more columns. I'll cover as many use cases here as possible, but you're going to have to get your hands a little dirty for each of them.

Holiday Branding

Many companies may want to have their company holiday columns less generically-named. Currently, company holidays are just called "Company Holidays" everywhere. If you want to change this, you can pretty safely do a project-wide find and replace of "Company" to your company's name. (Just make sure whatever you replace "Company" with is a valid SQL identifier.)

Holiday Types

The default two holiday types are "Company Holiday" and "US Public Holiday". They're loaded to integration.manual_HolidayTypes. If you need to change one of these or add another, just adjust or add the record to /{language}/02-initial-build/01-InsertHolidayTypes.sql.

Holiday Days and Names

Holidays are loaded to the integration.manual_Holidays table. To add or remove, or update holidays at initial load time, adjust the rows in /{language}/02-initial-build/01-InsertHolidays.sql. Be sure that the keys you provide for HolidayTypes are present in integration.manual_HolidayTypes.

If you need to make updates after the initial build, just add, remove, or update the records in integration.manual_Holidays.

Holiday Columns

Here's where it gets tricky. There are a few holiday-related columns:

  1. CompanyHolidayFlag
  2. USPublicHolidayFlag
  3. CompanyHolidayName
  4. USPublicHolidayName
  5. BusinessDayFlag
  6. A couple of other derived columns in the month-aggregated tables

Company-holiday-related information is pulled from integration.manual_Holidays where HolidayTypeKey = 1. The same is true for US Public Holidays, except that HolidayTypeKey = 2. If you've added or removed holiday types, or if you need to add more holiday types, you're going to have to perform a few steps.

Removing Columns
  1. Remove the holiday type (see above).
  2. Remove the holidays (see above).
  3. Track down the locations where the scripts join into the integration.manual_Holidays table. Search for the comment -- customize-holidays JOIN START. Remove the join you don't want.
  4. Remove columns. I haven't commented where all of these columns are because it's relatively easy to remove references to them. For example, if you don't want US Public Holidays, just search for the US-public-holiday-related column names and remove them.
Adding Columns
  1. Add a new holiday type (see above).
  2. Add new holidays (see above).
  3. Track down the locations where the scripts join into the integration.manual_Holidays table. Search for the comment -- customize-holidays JOIN START. Add a join (you can copy an existing one), substituting in your HolidayTypeKey.
  4. Add column definitions to all of the tables' definitions.
  5. Add logic to the scripts to load data to the new columns. You can probably copy one of the existing columns and just sub in a reference to your new join.

Column Documentation

A decent level of documentation for each column by table. Note: Datatypes are accurate for T-SQL. For other dialects (if I ever end up adding them), the datatype will be the nearest match.

DimDate

Column Name Data Type Format Example Description
DateKey int 20210101 The table key.
TheDate date Locale specific The unique calendar date for this row. All other columns are based off of this date.
ISODateName varchar(10) 2021-12-31 The ISO-formatted date as a string. (Ex: 2021-12-31)
AmericanDateName varchar(10) 12/31/2021 The American-formatted date as a string. (Ex: 12/31/2021)
DayOfWeekName varchar(9) Sunday The full day name. (Ex: Sunday)
DayOfWeekAbbrev varchar(3) Sun The abbreviated (three-character) day name. (Ex: Sun)
MonthName varchar(9) December The full month name. (Ex: December)
MonthAbbrev varchar(3) Dec The abbreviated (three-character) month name. (Ex: Dec)
YearWeekName varchar(8) 2021W51 The year-week as a string. (Ex: 2021W51)
YearMonthName varchar(7) 2021-12 The year-month as a string. (Ex: 2021-12)
MonthYearName varchar(8) Dec 2021 The abbreviated month name followed by the year. (Ex: Dec 2021)
YearQuarterName varchar(6) 2021Q4 The year followed by the quarter. (Ex: 2021Q4)
Year int 2021 The year as a number. (Ex: 2021)
YearWeek int 202151 The year-week as a number. (Ex: 202152)
ISOYearWeekCode int 202151 The year-week as a number, with the week calculated according to the ISO standard. (Ex: 202151)
YearMonth int 202101 The year-month as a number. (Ex: 202112)
YearQuarter int 202101 The year-quarter as a number. (Ex: 202104)
DayOfWeekStartingMonday int 1 The same as DayOfWeek, but with Monday=1.
DayOfWeek int 1 The numerical day of the week. Sunday is 1.
DayOfMonth int 1 The numerical day of the month.
DayOfQuarter int 1 The numerical day of the quarter.
DayOfYear int 1 The numerical day of the year.
WeekOfQuarter int 1 The numerical week of the quarter. Starts at 1 and counts up. Partial weeks do count.
WeekOfYear int 1 The numerical week of the year.
ISOWeekOfYear int 1 The numerical week of the year, calculated according to the ISO standard.
Month int 1 The numerical month. (Ex. Dec = 12)
MonthOfQuarter int 1 The numerical month of the quarter. For obvious reasons, 1-3.
Quarter int 1 The numerical quarter.
DaysInMonth int 31 The number of days in the month.
DaysInQuarter int 62 The number of days in the quarter.
DaysInYear int 365 The number of days in the year.
DayOffsetFromToday int -123 The number of days the day on this row is offset from the current date. For example, yesterday is -1, and tomorrow is 1.
MonthOffsetFromToday int -12 The number of months the day on this row is offset from the current date. For example, last month is -1, and next month is 1.
QuarterOffsetFromToday int -12 The number of quarters the day on this row is offset from the current quarter. For example, last quarter is -1, and next quarter is 1.
YearOffsetFromToday int -1 The number of years the day on this row is offset from the current date. For example, last year is -1, and next year is 1.
TodayFlag bit 1 Indicates this row's date is the current date.
CurrentWeekStartingMondayFlag bit 1 The same as CurrentWeekFlag, but with Monday=1.
CurrentWeekFlag bit 1 Indicates this row's date falls within the current week.
PriorWeekFlag bit 1 Indicates this row's date falls within the prior week.
NextWeekFlag bit 1 Indicates this row's date falls within the next week.
CurrentMonthFlag bit 1 Indicates this row's date falls within the current month.
PriorMonthFlag bit 1 Indicates this row's date falls within the prior month.
NextMonthFlag bit 1 Indicates this row's date falls within the next month.
CurrentQuarterFlag bit 1 Indicates this row's date falls within the current quarter.
PriorQuarterFlag bit 1 Indicates this row's date falls within the prior quarter.
NextQuarterFlag bit 1 Indicates this row's date falls within the next quarter.
CurrentYearFlag bit 1 Indicates this row's date falls within the current year.
PriorYearFlag bit 1 Indicates this row's date falls within the prior year.
NextYearFlag bit 1 Indicates this row's date falls within the next year.
WeekdayFlag bit 1 Indicates this row's date is a weekday (Monday-Friday).
BusinessDayFlag bit 1 Indicates this row's date is a business day. (In reality, this means it is both a weekday and not a holiday.)
CompanyHolidayFlag bit 1 Indicates this row's date is a Company holiday. See CompanyHolidayName for the holiday name.
USPublicHolidayFlag bit 1 Indicates this row's date is a US public holiday. See USPublicHolidayName for the holiday name.
FirstDayOfMonthFlag bit 1 Indicates this row's date falls on the first day of the month.
LastDayOfMonthFlag bit 1 Indicates this row's date falls on the last day of the month.
FirstDayOfQuarterFlag bit 1 Indicates this row's date falls on the first day of the quarter.
LastDayOfQuarterFlag bit 1 Indicates this row's date falls on the last day of the quarter.
FirstDayOfYearFlag bit 1 Indicates this row's date falls on the first day of the year.
LastDayOfYearFlag bit 1 Indicates this row's date falls on the last day of the year.
FractionOfWeek decimal(5,4) 0.1429 The decimal fraction of the week that has passed as of this row's date.
FractionOfMonth decimal(5,4) 0.323 The decimal fraction of the month that has passed as of this row's date.
FractionOfQuarter decimal(5,4) 0.0110 The decimal fraction of the quarter that has passed as of this row's date.
FractionOfYear decimal(5,4) 0.0027 The decimal fraction of the year that has passed as of this row's date.
PriorDay date Locale specific. The date one day before this row's date.
NextDay date Locale specific. The date one day after this row's date.
SameDayPriorWeek date Locale specific. The date one week before this row's date.
SameDayPriorMonth date Locale specific. The date one month before this row's date. If this row's date falls outside of the range of last month's date, this will be the greatest date in the last month. For example, the row for March 31st would show a value of February 28th in non-leap years, and it would show February 29th in leap years.
SameDayPriorQuarter date Locale specific. The date one quarter before this row's date. Behaves similarly to SameDayPriorMonth for overflow dates.
SameDayPriorYear date Locale specific. The date one year before this row's date. Behaves similarly to SameDayPriorMonth for overflow dates (which could only occur on the 366th day of a leap year).
SameDayNextWeek date Locale specific. The date one week after this row's date.
SameDayNextMonth date Locale specific. The date one month after this row's date. If this row's date falls outside of the range of next month's date, this will be the greatest date in the next month. For example, the row for January 31st would show a value of February 28th in non-leap years, and it would show February 29th in leap years.
SameDayNextQuarter date Locale specific. The date one quarter after this row's date. Behaves similarly to SameDayNextMonth for overflow dates.
SameDayNextYear date Locale specific. The date one year after this row's date. Behaves similarly to SameDayNextMonth for overflow dates (which could only occur on the 366th day of a leap year).
CurrentWeekStart date Locale specific. The date this row's week starts (always a Sunday).
CurrentWeekEnd date Locale specific. The date this row's week ends (always a Saturday).
CurrentMonthStart date Locale specific. The date this row's month starts.
CurrentMonthEnd date Locale specific. The date this row's month ends.
CurrentQuarterStart date Locale specific. The date this row's quarter starts.
CurrentQuarterEnd date Locale specific. The date this row's quarter ends.
CurrentYearStart date Locale specific. The date this row's year starts.
CurrentYearEnd date Locale specific. The date this row's year ends.
PriorWeekStart date Locale specific. The date week prior to this row's week starts.
PriorWeekEnd date Locale specific. The date week prior to this row's week ends.
PriorMonthStart date Locale specific. The date month prior to this row's month starts.
PriorMonthEnd date Locale specific. The date month prior to this row's month ends.
PriorQuarterStart date Locale specific. The date quarter prior to this row's quarter starts.
PriorQuarterEnd date Locale specific. The date quarter prior to this row's quarter ends.
PriorYearStart date Locale specific. The date year prior to this row's year starts.
PriorYearEnd date Locale specific. The date year prior to this row's year ends.
NextWeekStart date Locale specific. The date week after this row's week starts.
NextWeekEnd date Locale specific. The date week after this row's week ends.
NextMonthStart date Locale specific. The date month after this row's month starts.
NextMonthEnd date Locale specific. The date month after this row's month ends.
NextQuarterStart date Locale specific. The date quarter after this row's quarter starts.
NextQuarterEnd date Locale specific. The date quarter after this row's quarter ends.
NextYearStart date Locale specific. The year quarter after this row's year starts.
NextYearEnd date Locale specific. The year quarter after this row's year ends.
WeeklyBurnupStartingMonday bit 1 The same as WeeklyBurnup, but with Monday=1.
WeeklyBurnup bit 1 Indicates the day of the week of this row's date is equal to or greater to the day of the week today. For example, if today is a Monday and the day on this row is a Tuesday, this would be FALSE. If the day on this row were a Monday or a Sunday, it would be TRUE. Useful for creating weekly burnup charts.
MonthlyBurnup bit 1 Indicates the day of the month of this row's date is equal to or greater to the day of the month today. For example, if today is the 12th and the day of the month for this row is the 15th, this would be FALSE. If the day of the month on this row were the 12th or lower, it would be TRUE. Useful for creating monthly burnup charts.
QuarterlyBurnup bit 1 Indicates the day of the quarter of this row's date is equal to or greater to the day of the quarter today. For example, if today is the 42nd day of the quarter and the day of the quarter for this row is the 60th, this would be FALSE. If the day of the quarter on this row were the 42nd or lower, it would be TRUE. Useful for creating quarterly burnup charts.
YearlyBurnup bit 1 Indicates the day of the year of this row's date is equal to or greater to the day of the year today. For example, if today is the 42nd day of the year and the day of the year for this row is the 60th, this would be FALSE. If the day of the year on this row were the 42nd or lower, it would be TRUE. Useful for creating yearly burnup charts.
FiscalMonthName varchar(9) December The full fiscal month name. (Ex: December)
FiscalMonthAbbrev varchar(3) Dec The abbreviated (three-character) fiscal month name. (Ex: Dec)
FiscalYearWeekName varchar(8) 2021W51 The fiscal year-week as a string. (Ex: 2021W51)
FiscalYearMonthName varchar(7) 2021-12 The fiscal year-month as a string. (Ex: 2021-12)
FiscalMonthYearName varchar(8) Dec 2021 The abbreviated fiscal month name followed by the fiscal year. (Ex: Dec 2021)
FiscalYearQuarterName varchar(6) 2021Q4 The fiscal year followed by the fiscal quarter. (Ex: 2021Q4)
FiscalYear int 2021 The fiscal year as a number. (Ex: 2021)
FiscalYearWeek int 202152 The fiscal year-week as a number. (Ex: 202152)
FiscalYearMonth int 202101 The fiscal year-month as a number. (Ex: 202112)
FiscalYearQuarter int 202101 The fiscal year-quarter as a number. (Ex: 202104)
FiscalDayOfMonth int 31 The numerical day of the fiscal month.
FiscalDayOfQuarter int 31 The numerical day of the fiscal quarter.
FiscalDayOfYear int 31 The numerical day of the fiscal year.
FiscalWeekOfQuarter int 1 The numerical week of the fiscal quarter. Starts at 1 and counts up. Partial weeks do count.
FiscalWeekOfYear int 52 The numerical week of the fiscal year.
FiscalMonth int 10 The numerical fiscal month. (Ex. Dec = 12)
FiscalMonthOfQuarter int 1 The numerical fiscal month of the fiscal quarter. For obvious reasons, 1-3.
FiscalQuarter int 1 The numerical fiscal quarter.
FiscalDaysInMonth int 31 The number of days in the fiscal month.
FiscalDaysInQuarter int 62 The number of days in the fiscal quarter.
FiscalDaysInYear int 365 The number of days in the fiscal year.
FiscalCurrentMonthFlag bit 1 Indicates this row's date falls within the current fiscal month.
FiscalPriorMonthFlag bit 1 Indicates this row's date falls within the prior fiscal month.
FiscalNextMonthFlag bit 1 Indicates this row's date falls within the next fiscal month.
FiscalCurrentQuarterFlag bit 1 Indicates this row's date falls within the current fiscal quarter.
FiscalPriorQuarterFlag bit 1 Indicates this row's date falls within the prior fiscal quarter.
FiscalNextQuarterFlag bit 1 Indicates this row's date falls within the next fiscal quarter.
FiscalCurrentYearFlag bit 1 Indicates this row's date falls within the current fiscal year.
FiscalPriorYearFlag bit 1 Indicates this row's date falls within the prior fiscal year.
FiscalNextYearFlag bit 1 Indicates this row's date falls within the next fiscal year.
FiscalFirstDayOfMonthFlag bit 1 Indicates this row's date falls on the first day of the fiscal month.
FiscalLastDayOfMonthFlag bit 1 Indicates this row's date falls on the last day of the fiscal month.
FiscalFirstDayOfQuarterFlag bit 1 Indicates this row's date falls on the first day of the fiscal quarter.
FiscalLastDayOfQuarterFlag bit 1 Indicates this row's date falls on the last day of the fiscal quarter.
FiscalFirstDayOfYearFlag bit 1 Indicates this row's date falls on the first day of the fiscal year.
FiscalLastDayOfYearFlag bit 1 Indicates this row's date falls on the last day of the fiscal year.
FiscalFractionOfMonth decimal(5,4) 0.2258 The decimal fraction of the fiscal month that has passed as of this row's date.
FiscalFractionOfQuarter decimal(5,4) 0.0769 The decimal fraction of the fiscal quarter that has passed as of this row's date.
FiscalFractionOfYear decimal(5,4) 0.0191 The decimal fraction of the fiscal year that has passed as of this row's date.
FiscalCurrentMonthStart date Locale specific. The date this row's fiscal month starts.
FiscalCurrentMonthEnd date Locale specific. The date this row's fiscal month ends.
FiscalCurrentQuarterStart date Locale specific. The date this row's fiscal quarter starts.
FiscalCurrentQuarterEnd date Locale specific. The date this row's fiscal quarter ends.
FiscalCurrentYearStart date Locale specific. The date this row's fiscal year starts.
FiscalCurrentYearEnd date Locale specific. The date this row's fiscal year ends.
FiscalPriorMonthStart date Locale specific. The date fiscal month prior to this row's fiscal month starts.
FiscalPriorMonthEnd date Locale specific. The date fiscal month prior to this row's fiscal month ends.
FiscalPriorQuarterStart date Locale specific. The date fiscal quarter prior to this row's fiscal quarter starts.
FiscalPriorQuarterEnd date Locale specific. The date fiscal quarter prior to this row's fiscal quarter ends.
FiscalPriorYearStart date Locale specific. The date fiscal year prior to this row's fiscal year starts.
FiscalPriorYearEnd date Locale specific. The date fiscal year prior to this row's fiscal year ends.
FiscalNextMonthStart date Locale specific. The date fiscal month after this row's fiscal month starts.
FiscalNextMonthEnd date Locale specific. The date fiscal month after this row's fiscal month ends.
FiscalNextQuarterStart date Locale specific. The date fiscal quarter after this row's fiscal quarter starts.
FiscalNextQuarterEnd date Locale specific. The date fiscal quarter after this row's fiscal quarter ends.
FiscalNextYearStart date Locale specific. The fiscal year fiscal quarter after this row's fiscal year starts.
FiscalNextYearEnd date Locale specific. The fiscal year fiscal quarter after this row's fiscal year ends.
FiscalMonthlyBurnup bit 1 Indicates the day of the fiscal month of this row's date is equal to or greater to the day of the fiscal month today. For example, if today is the 12th of the fiscal month and the day of the fiscal month for this row is the 15th, this would be FALSE. If the day of the fiscal month on this row were the 12th or lower, it would be TRUE. Useful for creating fiscal monthly burnup charts.
FiscalQuarterlyBurnup bit 1 Indicates the day of the fiscal quarter of this row's date is equal to or greater to the day of the fiscal quarter today. For example, if today is the 42nd day of the fiscal quarter and the day of the fiscal quarter for this row is the 60th, this would be FALSE. If the day of the fiscal quarter on this row were the 42nd or lower, it would be TRUE. Useful for creating fiscal quarterly burnup charts.
FiscalYearlyBurnup bit 1 Indicates the day of the fiscal year of this row's date is equal to or greater to the day of the fiscal year today. For example, if today is the 42nd day of the fiscal year and the day of the fiscal year for this row is the 60th, this would be FALSE. If the day of the fiscal year on this row were the 42nd or lower, it would be TRUE. Useful for creating fiscal yearly burnup charts.
CompanyHolidayName varchar(255) Christmas The name of the Company holiday, if applicable.
USPublicHolidayName varchar(255) Christmas The name of the US public holiday, if applicable.

About

The best date dimension build/refresh script you've ever seen! Written in T-SQL.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages