AdventureWorksDW中DimTime或DimDate的替代方案?
AdventureWorksDW数据库中的DimTime或DimDate表是否有其他免费下载选项? 我只想要这张桌子。此外,在未来的50年或100年里,这将是一件很棒的事情 谢谢,AdventureWorksDW中DimTime或DimDate的替代方案?,date,calendar,Date,Calendar,AdventureWorksDW数据库中的DimTime或DimDate表是否有其他免费下载选项? 我只想要这张桌子。此外,在未来的50年或100年里,这将是一件很棒的事情 谢谢, Sim您可以使用ETL软件,自己生成此类表格,例如,在创建时间维度的“应为示例转换”中。使用这种软件可以选择输出格式。使用这种软件可以选择输出格式。您可以使用ETL软件自己生成这种表,例如,在创建时间维度的示例转换中。使用这种软件可以选择输出格式。使用这种软件可以选择输出格式。我不知道您对收到的回复是否满意, 但您也
Sim您可以使用ETL软件,自己生成此类表格,例如,在创建时间维度的“应为示例转换”中。使用这种软件可以选择输出格式。使用这种软件可以选择输出格式。您可以使用ETL软件自己生成这种表,例如,在创建时间维度的示例转换中。使用这种软件可以选择输出格式。使用这种软件可以选择输出格式。我不知道您对收到的回复是否满意, 但您也可以根据业务需求创建自己的DimDate表。 我基于AdventureWorksDW212 DimDate表结构编写了以下代码
--change [YourDatabase] to your database's name
USE [YourDatabase]
GO
--First Create the Table (dbo.DimDate)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('dbo.DimDate') IS NOT NULL
DROP TABLE dbo.DimDate;
CREATE TABLE [dbo].[DimDate](
[DateKey] [int] NOT NULL,
[FullDateAlternateKey] [date] NOT NULL,
[DayNumberOfWeek] [tinyint] NOT NULL,
[EnglishDayNameOfWeek] [nvarchar](10) NOT NULL,
[SpanishDayNameOfWeek] [nvarchar](10) NOT NULL,
[FrenchDayNameOfWeek] [nvarchar](10) NOT NULL,
[DayNumberOfMonth] [tinyint] NOT NULL,
[DayNumberOfYear] [smallint] NOT NULL,
[WeekNumberOfYear] [tinyint] NOT NULL,
[EnglishMonthName] [nvarchar](10) NOT NULL,
[SpanishMonthName] [nvarchar](10) NOT NULL,
[FrenchMonthName] [nvarchar](10) NOT NULL,
[MonthNumberOfYear] [tinyint] NOT NULL,
[CalendarQuarter] [tinyint] NOT NULL,
[CalendarYear] [smallint] NOT NULL,
[CalendarSemester] [tinyint] NOT NULL,
[FiscalQuarter] [tinyint] NOT NULL,
[FiscalYear] [smallint] NOT NULL,
[FiscalSemester] [tinyint] NOT NULL,
CONSTRAINT [PK_DimDate_DateKey] PRIMARY KEY CLUSTERED
(
[DateKey] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY],
CONSTRAINT [AK_DimDate_FullDateAlternateKey] UNIQUE NONCLUSTERED
(
[FullDateAlternateKey] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
) ON [PRIMARY]
GO
--I have used the table structure to resemble the DimDate table
--in the AdventureWorksDW2012 DB but you can modify to meet your needs
--After the table is created, use the following code to populate the table:
--Create a DATE type variable (@StartDate) to hold the start date
DECLARE @StartDate AS DATE;
--Create another DATE Type variable (@EndDate) to hold the end date
DECLARE @EndDate AS DATE;
--Initialize @StartDate
SET @StartDate = '2015-01-01';
--Initialize @EndDate
SET @EndDate = '2020-12-31';
WHILE (@StartDate <= @EndDate)
BEGIN
--When populating the DimDate table,
--Use a set operation because it is much faster than the regular "INSERT INTO" operation!
INSERT dbo.DimDate
SELECT
CONVERT(char(8), @StartDate, 112) AS DateKey,
CONVERT(char(10), @StartDate, 126) AS FullDateAlternateKey,
DATEPART(DW, @StartDate) AS DayNumberOfWeek,
DATENAME(DW, @StartDate) AS EnglishDayNameOfWeek,
CASE
WHEN DATENAME(DW, @StartDate) = 'Saturday' THEN 'Sábado'
WHEN DATENAME(DW, @StartDate) = 'Sunday' THEN 'Domingo'
WHEN DATENAME(DW, @StartDate) = 'Monday' THEN 'Lunes'
WHEN DATENAME(DW, @StartDate) = 'Tuesday' THEN 'Martes'
WHEN DATENAME(DW, @StartDate) = 'Wednesday' THEN 'Miércoles'
WHEN DATENAME(DW, @StartDate) = 'Thursday' THEN 'Jueves'
WHEN DATENAME(DW, @StartDate) = 'Friday' THEN 'Viernes'
END AS SpanishDayNameOfWeek,
CASE
WHEN DATENAME(DW, @StartDate) = 'Saturday' THEN 'Samedi'
WHEN DATENAME(DW, @StartDate) = 'Sunday' THEN 'Dimanche'
WHEN DATENAME(DW, @StartDate) = 'Monday' THEN 'Lundi'
WHEN DATENAME(DW, @StartDate) = 'Tuesday' THEN 'Mardi'
WHEN DATENAME(DW, @StartDate) = 'Wednesday' THEN 'Mercredi'
WHEN DATENAME(DW, @StartDate) = 'Thursday' THEN 'Jeudi'
WHEN DATENAME(DW, @StartDate) = 'Friday' THEN 'Vendredi'
END AS FrenchDayNameOfWeek,
DATEPART(DD, @StartDate) AS DayNumberOfMonth,
DATEPART(dayofyear, @StartDate) AS DayNumberOfYear,
DATEPART(WK, @StartDate) AS WeekNumberOfYear,
DATENAME(MONTH, @StartDate) AS EnglishMonthName,
CASE
WHEN DATENAME(MONTH, @StartDate) = 'January' THEN'Enero'
WHEN DATENAME(MONTH, @StartDate) = 'February' THEN 'Febrero'
WHEN DATENAME(MONTH, @StartDate) = 'March' THEN 'Marzo'
WHEN DATENAME(MONTH, @StartDate) = 'April' THEN 'Abril'
WHEN DATENAME(MONTH, @StartDate) = 'May' THEN 'Mayo'
WHEN DATENAME(MONTH, @StartDate) = 'June' THEN 'Junio'
WHEN DATENAME(MONTH, @StartDate) = 'July' THEN 'Julio'
WHEN DATENAME(MONTH, @StartDate) = 'August' THEN 'Agosto'
WHEN DATENAME(MONTH, @StartDate) = 'September' THEN 'Septiembre'
WHEN DATENAME(MONTH, @StartDate) = 'October' THEN 'Octubre'
WHEN DATENAME(MONTH, @StartDate) = 'November' THEN 'Noviembre'
WHEN DATENAME(MONTH, @StartDate) = 'December' THEN 'Diciembre'
END AS SpanishMonthName,
CASE
WHEN DATENAME(MONTH, @StartDate) = 'January' THEN 'Janvier'
WHEN DATENAME(MONTH, @StartDate) = 'February' THEN 'Février'
WHEN DATENAME(MONTH, @StartDate) = 'March' THEN 'Mars'
WHEN DATENAME(MONTH, @StartDate) = 'April' THEN 'Avril'
WHEN DATENAME(MONTH, @StartDate) = 'May' THEN 'Mai'
WHEN DATENAME(MONTH, @StartDate) = 'June' THEN 'Juin'
WHEN DATENAME(MONTH, @StartDate) = 'July' THEN 'Juillet'
WHEN DATENAME(MONTH, @StartDate) = 'August' THEN 'Août'
WHEN DATENAME(MONTH, @StartDate) = 'September' THEN 'Septembre'
WHEN DATENAME(MONTH, @StartDate) = 'October' THEN 'Octobre'
WHEN DATENAME(MONTH, @StartDate) = 'November' THEN 'Novembre'
WHEN DATENAME(MONTH, @StartDate) = 'December' THEN 'Décembre'
END AS FrenchMonthName,
DATEPART(MONTH, @StartDate) AS MonthNumberOfyear,
DATEPART(Quarter, @StartDate) AS CalendarQuarter,
YEAR(@StartDate) AS CalendarYear,
CASE
WHEN DATEPART(MONTH, @StartDate) IN (1,2,3,4,5,6)
THEN 1
WHEN DATEPART(MONTH, @StartDate) IN (7,8,9,10,11,12)
THEN 2
END AS CalendarSemester,
CASE
WHEN DATEPART(MONTH, GetDATE()) IN (7, 8, 9) THEN 1
WHEN DATEPART(MONtH, GetDATE()) IN (10, 11, 12) THEN 2
WHEN DATEPART(MONtH, GetDATE()) IN (1, 2, 3) THEN 3
WHEN DATEPART(MONtH, GetDATE()) IN (4, 5, 6) THEN 4
END AS FiscalQuarter,
CASE
WHEN MONTH(@StartDate) < 7 THEN YEAR(@StartDate) --Assuming the fiscal year beings on the first of July
ELSE YEAR(@StartDate) + 1 --if the date is less than July, then the Fiscal Year is equal to the Calendar Year
END AS FiscalYear,
CASE
WHEN DATEPART(MONTH, @StartDate) IN (7,8,9,10,11,12) THEN 1
WHEN DATEPART(MONTH, @StartDate) IN (1,2,3,4,5,6) THEN 2
END AS FiscalSemester
--Increment the @StartDate by 1 here:
SET @StartDate = DATEADD(DAY, 1, @StartDate);
END
--You can now test your code by selecting from the table:
SELECT * FROM DimDate;
——将[YourDatabase]更改为数据库名称
使用[你的数据库]
去
--首先创建表(dbo.DimDate)
将ANSI_空值设置为ON
去
在上设置带引号的\u标识符
去
如果对象ID('dbo.DimDate')不为空
删除表dbo.DimDate;
创建表[dbo]。[DimDate](
[DateKey][int]不为空,
[FullDateAlternateKey][date]不为空,
[DayNumberOfWeek][tinyint]不为空,
[EnglishDayNameOfWeek][nvarchar](10)不为空,
[SpanishDayNameOfWeek][nvarchar](10)不为空,
[FrenchDayNameOfWeek][nvarchar](10)不为空,
[DayNumberOfMonth][tinyint]不为空,
[DayNumberOfYear][smallint]不为空,
[WeekNumberOfYear][tinyint]不为空,
[EnglishMonthName][nvarchar](10)不为空,
[SpanishMonthName][nvarchar](10)不为空,
[FrenchMonthName][nvarchar](10)不为空,
[MonthNumber of Year][tinyint]不为空,
[CalendarQuarter][tinyint]不为空,
[CalendarYear][smallint]不为空,
[日历学期][tinyint]不为空,
[FiscalQuarter][tinyint]不为空,
[FiscalYear][smallint]不为空,
[财政学期][tinyint]不为空,
约束[PK_DimDate_DateKey]主键群集
(
[日期键]ASC
)
当(PAD_INDEX=OFF,STATISTICS_norecomputer=OFF,
忽略重复键=关闭,允许行锁定=打开,允许页锁定=打开)
关于[主要],
约束[AK_DimDate_FullDateAlternateKey]唯一非聚集
(
[FullDateAlternateKey]ASC
)
当(PAD_INDEX=OFF,STATISTICS_norecomputer=OFF,
忽略重复键=关闭,允许行锁定=打开,允许页锁定=打开)
在[小学]
)在[小学]
去
--我使用了表结构来类似于DimDate表
--在AdventureWorksDW2012数据库中,但您可以根据需要进行修改
--创建表后,使用以下代码填充表:
--创建日期类型变量(@StartDate)以保存开始日期
宣布@StartDate为日期;
--创建另一个日期类型变量(@EndDate)以保存结束日期
宣布@EndDate为日期;
--初始化@StartDate
SET@StartDate='2015-01-01';
--初始化@EndDate
设置@EndDate='2020-12-31';
而(@StartDate我不知道你对你得到的回复是否满意,
但您也可以根据业务需求创建自己的DimDate表。
我基于AdventureWorksDW212 DimDate表结构编写了以下代码
--change [YourDatabase] to your database's name
USE [YourDatabase]
GO
--First Create the Table (dbo.DimDate)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('dbo.DimDate') IS NOT NULL
DROP TABLE dbo.DimDate;
CREATE TABLE [dbo].[DimDate](
[DateKey] [int] NOT NULL,
[FullDateAlternateKey] [date] NOT NULL,
[DayNumberOfWeek] [tinyint] NOT NULL,
[EnglishDayNameOfWeek] [nvarchar](10) NOT NULL,
[SpanishDayNameOfWeek] [nvarchar](10) NOT NULL,
[FrenchDayNameOfWeek] [nvarchar](10) NOT NULL,
[DayNumberOfMonth] [tinyint] NOT NULL,
[DayNumberOfYear] [smallint] NOT NULL,
[WeekNumberOfYear] [tinyint] NOT NULL,
[EnglishMonthName] [nvarchar](10) NOT NULL,
[SpanishMonthName] [nvarchar](10) NOT NULL,
[FrenchMonthName] [nvarchar](10) NOT NULL,
[MonthNumberOfYear] [tinyint] NOT NULL,
[CalendarQuarter] [tinyint] NOT NULL,
[CalendarYear] [smallint] NOT NULL,
[CalendarSemester] [tinyint] NOT NULL,
[FiscalQuarter] [tinyint] NOT NULL,
[FiscalYear] [smallint] NOT NULL,
[FiscalSemester] [tinyint] NOT NULL,
CONSTRAINT [PK_DimDate_DateKey] PRIMARY KEY CLUSTERED
(
[DateKey] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY],
CONSTRAINT [AK_DimDate_FullDateAlternateKey] UNIQUE NONCLUSTERED
(
[FullDateAlternateKey] ASC
)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
) ON [PRIMARY]
GO
--I have used the table structure to resemble the DimDate table
--in the AdventureWorksDW2012 DB but you can modify to meet your needs
--After the table is created, use the following code to populate the table:
--Create a DATE type variable (@StartDate) to hold the start date
DECLARE @StartDate AS DATE;
--Create another DATE Type variable (@EndDate) to hold the end date
DECLARE @EndDate AS DATE;
--Initialize @StartDate
SET @StartDate = '2015-01-01';
--Initialize @EndDate
SET @EndDate = '2020-12-31';
WHILE (@StartDate <= @EndDate)
BEGIN
--When populating the DimDate table,
--Use a set operation because it is much faster than the regular "INSERT INTO" operation!
INSERT dbo.DimDate
SELECT
CONVERT(char(8), @StartDate, 112) AS DateKey,
CONVERT(char(10), @StartDate, 126) AS FullDateAlternateKey,
DATEPART(DW, @StartDate) AS DayNumberOfWeek,
DATENAME(DW, @StartDate) AS EnglishDayNameOfWeek,
CASE
WHEN DATENAME(DW, @StartDate) = 'Saturday' THEN 'Sábado'
WHEN DATENAME(DW, @StartDate) = 'Sunday' THEN 'Domingo'
WHEN DATENAME(DW, @StartDate) = 'Monday' THEN 'Lunes'
WHEN DATENAME(DW, @StartDate) = 'Tuesday' THEN 'Martes'
WHEN DATENAME(DW, @StartDate) = 'Wednesday' THEN 'Miércoles'
WHEN DATENAME(DW, @StartDate) = 'Thursday' THEN 'Jueves'
WHEN DATENAME(DW, @StartDate) = 'Friday' THEN 'Viernes'
END AS SpanishDayNameOfWeek,
CASE
WHEN DATENAME(DW, @StartDate) = 'Saturday' THEN 'Samedi'
WHEN DATENAME(DW, @StartDate) = 'Sunday' THEN 'Dimanche'
WHEN DATENAME(DW, @StartDate) = 'Monday' THEN 'Lundi'
WHEN DATENAME(DW, @StartDate) = 'Tuesday' THEN 'Mardi'
WHEN DATENAME(DW, @StartDate) = 'Wednesday' THEN 'Mercredi'
WHEN DATENAME(DW, @StartDate) = 'Thursday' THEN 'Jeudi'
WHEN DATENAME(DW, @StartDate) = 'Friday' THEN 'Vendredi'
END AS FrenchDayNameOfWeek,
DATEPART(DD, @StartDate) AS DayNumberOfMonth,
DATEPART(dayofyear, @StartDate) AS DayNumberOfYear,
DATEPART(WK, @StartDate) AS WeekNumberOfYear,
DATENAME(MONTH, @StartDate) AS EnglishMonthName,
CASE
WHEN DATENAME(MONTH, @StartDate) = 'January' THEN'Enero'
WHEN DATENAME(MONTH, @StartDate) = 'February' THEN 'Febrero'
WHEN DATENAME(MONTH, @StartDate) = 'March' THEN 'Marzo'
WHEN DATENAME(MONTH, @StartDate) = 'April' THEN 'Abril'
WHEN DATENAME(MONTH, @StartDate) = 'May' THEN 'Mayo'
WHEN DATENAME(MONTH, @StartDate) = 'June' THEN 'Junio'
WHEN DATENAME(MONTH, @StartDate) = 'July' THEN 'Julio'
WHEN DATENAME(MONTH, @StartDate) = 'August' THEN 'Agosto'
WHEN DATENAME(MONTH, @StartDate) = 'September' THEN 'Septiembre'
WHEN DATENAME(MONTH, @StartDate) = 'October' THEN 'Octubre'
WHEN DATENAME(MONTH, @StartDate) = 'November' THEN 'Noviembre'
WHEN DATENAME(MONTH, @StartDate) = 'December' THEN 'Diciembre'
END AS SpanishMonthName,
CASE
WHEN DATENAME(MONTH, @StartDate) = 'January' THEN 'Janvier'
WHEN DATENAME(MONTH, @StartDate) = 'February' THEN 'Février'
WHEN DATENAME(MONTH, @StartDate) = 'March' THEN 'Mars'
WHEN DATENAME(MONTH, @StartDate) = 'April' THEN 'Avril'
WHEN DATENAME(MONTH, @StartDate) = 'May' THEN 'Mai'
WHEN DATENAME(MONTH, @StartDate) = 'June' THEN 'Juin'
WHEN DATENAME(MONTH, @StartDate) = 'July' THEN 'Juillet'
WHEN DATENAME(MONTH, @StartDate) = 'August' THEN 'Août'
WHEN DATENAME(MONTH, @StartDate) = 'September' THEN 'Septembre'
WHEN DATENAME(MONTH, @StartDate) = 'October' THEN 'Octobre'
WHEN DATENAME(MONTH, @StartDate) = 'November' THEN 'Novembre'
WHEN DATENAME(MONTH, @StartDate) = 'December' THEN 'Décembre'
END AS FrenchMonthName,
DATEPART(MONTH, @StartDate) AS MonthNumberOfyear,
DATEPART(Quarter, @StartDate) AS CalendarQuarter,
YEAR(@StartDate) AS CalendarYear,
CASE
WHEN DATEPART(MONTH, @StartDate) IN (1,2,3,4,5,6)
THEN 1
WHEN DATEPART(MONTH, @StartDate) IN (7,8,9,10,11,12)
THEN 2
END AS CalendarSemester,
CASE
WHEN DATEPART(MONTH, GetDATE()) IN (7, 8, 9) THEN 1
WHEN DATEPART(MONtH, GetDATE()) IN (10, 11, 12) THEN 2
WHEN DATEPART(MONtH, GetDATE()) IN (1, 2, 3) THEN 3
WHEN DATEPART(MONtH, GetDATE()) IN (4, 5, 6) THEN 4
END AS FiscalQuarter,
CASE
WHEN MONTH(@StartDate) < 7 THEN YEAR(@StartDate) --Assuming the fiscal year beings on the first of July
ELSE YEAR(@StartDate) + 1 --if the date is less than July, then the Fiscal Year is equal to the Calendar Year
END AS FiscalYear,
CASE
WHEN DATEPART(MONTH, @StartDate) IN (7,8,9,10,11,12) THEN 1
WHEN DATEPART(MONTH, @StartDate) IN (1,2,3,4,5,6) THEN 2
END AS FiscalSemester
--Increment the @StartDate by 1 here:
SET @StartDate = DATEADD(DAY, 1, @StartDate);
END
--You can now test your code by selecting from the table:
SELECT * FROM DimDate;
——将[YourDatabase]更改为数据库名称
使用[你的数据库]
去
--首先创建表(dbo.DimDate)
将ANSI_空值设置为ON
去
在上设置带引号的\u标识符
去
如果对象ID('dbo.DimDate')不为空
删除表dbo.DimDate;
创建表[dbo]。[DimDate](
[DateKey][int]不为空,
[FullDateAlternateKey][date]不为空,
[DayNumberOfWeek][tinyint]不为空,
[EnglishDayNameOfWeek][nvarchar](10)不为空,
[SpanishDayNameOfWeek][nvarchar](10)不为空,
[FrenchDayNameOfWeek][nvarchar](10)不为空,
[DayNumberOfMonth][tinyint]不为空,
[DayNumberOfYear][smallint]不为空,
[WeekNumberOfYear][tinyint]不为空,
[EnglishMonthName][nvarchar](10)不为空,
[SpanishMonthName][nvarchar](10)不为空,
[FrenchMonthName][nvarchar](10)不为空,
[MonthNumber of Year][tinyint]不为空,
[CalendarQuarter][tinyint]不为空,
[CalendarYear][smallint]不为空,
[日历学期][tinyint]不为空,
[FiscalQuarter][tinyint]不为空,
[FiscalYear][smallint]不为空,
[财政学期][tinyint]不为空,
约束[PK_DimDate_DateKey]主键群集
(
[日期键]ASC
)
当(PAD_INDEX=OFF,STATISTICS_norecomputer=OFF,
忽略重复键=关闭,允许行锁定=打开,允许页锁定=打开)
关于[主要],
约束[AK_DimDate_FullDateAlternateKey]唯一非聚集
(
[FullDateAlternateKey]ASC
)
当(PAD_INDEX=OFF,STATISTICS_norecomputer=OFF,
忽略重复键=关闭,允许行锁定=打开,允许页锁定=打开)
在[小学]
)在[小学]
去
--我使用了表结构来类似于DimDate表
--在AdventureWorksDW2012数据库中,但您可以根据需要进行修改
--创建表后,使用以下代码填充表:
--创建日期类型变量(@StartDate)以保存开始日期
宣布@StartDate为日期;
--创建另一个日期类型变量(@EndDate)以保存结束日期
宣布@EndDate为日期;
--初始化@StartDate
SET@StartDate='2015-01-01';
--初始化@EndDate
s