如何根据特定标准对同一维度具有不同值时实现维度 table 设计?
How to implement dimension table design when having different values for the same dimension according to specific criteria?
如果我有这样的Dimension Date table
:
CREATE TABLE [Dimension].[Date](
[Date Key] [int] IDENTITY(1,1) NOT NULL,
[Date] [date] NOT NULL,
[Day] [tinyint] NOT NULL,
[Day Suffix] [char](2) NOT NULL,
[Weekday] [tinyint] NOT NULL,
[Weekday English Name] [varchar](10) NOT NULL,
[Weekday English Name Short] [char](3) NOT NULL,
[Weekday English Name FirstLetter] [char](1) NOT NULL,
[Weekday Arabic Name] [nvarchar](15) NOT NULL,
[Weekday Arabic Name FirstLetter] [nchar](1) NOT NULL,
[Day Of Year] [smallint] NOT NULL,
[Week Of Month] [tinyint] NOT NULL,
[Week Of Year] [tinyint] NOT NULL,
[Month] [tinyint] NOT NULL,
[Month English Name] [varchar](10) NOT NULL,
[Month English Name Short] [char](3) NOT NULL,
[Month English Name FirstLetter] [char](1) NOT NULL,
[Month Arabic Name] [nvarchar](15) NOT NULL,
[Month Arabic Name FirstLetter] [nchar](1) NOT NULL,
[Quarter] [tinyint] NOT NULL,
[Quarter Name] [varchar](6) NOT NULL,
[Year] [int] NOT NULL,
[MMYYYY] [char](6) NOT NULL,
[Month Year] [char](7) NOT NULL,
[Is Weekend] [bit] NOT NULL,
[Is Holiday] [bit] NOT NULL,
[Holiday Name] [nvarchar](50) NOT NULL,
[Special Day] [nvarchar](50) NOT NULL,
[First Date Of Year] [date] NULL,
[Last Date Of Year] [date] NULL,
[First Date Of Quater] [date] NULL,
[Last Date Of Quater] [date] NULL,
[First Date Of Month] [date] NULL,
[Last Date Of Month] [date] NULL,
[First Date Of Week] [date] NULL,
[Last Date Of Week] [date] NULL,
[Lineage Key] [int] NULL,
CONSTRAINT [PK__Date__B7A341C5SWWC2006D] PRIMARY KEY CLUSTERED
(
[Date Key] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
我面临以下问题:
并非所有组织部门的所有 weekends and holidays
都相同,例如有默认的周末(Fri,Sat
),但有些部门有不同的时间表,因此他们有不同的周末。当我根据特定标准对同一维度有不同的值时,如何处理这种情况?我应该为同一个 Dim 创建多个版本吗?在这种情况下,如何在企业数据仓库中将 Date Dim 用作 conformed dimension
?
将日期维度作为符合的 table 在以下情况下非常有用:
- 通过 ETL 作业更新的一个中心位置
- 易于实施“单一事实来源”,因为同一副本
数据在整个组织中都是可见的。
- 由于删除了不必要的副本,减少了数据占用空间
数据。
在您的情况下,您不需要所有列,因此您可以在数据库中拥有 DimDate table,但使用简单视图指向它以仅获取您需要的列。
此外,您可以在 DimDate 视图和 DimDepartment 之间建立桥梁 table,如下所示:
一个逻辑数据模型可能包含一个或多个多对多关系。物理数据建模技术通过添加额外的 table 将多对多多关系转换为一对多关系。这些被称为桥 tables.
如果我有这样的Dimension Date table
:
CREATE TABLE [Dimension].[Date](
[Date Key] [int] IDENTITY(1,1) NOT NULL,
[Date] [date] NOT NULL,
[Day] [tinyint] NOT NULL,
[Day Suffix] [char](2) NOT NULL,
[Weekday] [tinyint] NOT NULL,
[Weekday English Name] [varchar](10) NOT NULL,
[Weekday English Name Short] [char](3) NOT NULL,
[Weekday English Name FirstLetter] [char](1) NOT NULL,
[Weekday Arabic Name] [nvarchar](15) NOT NULL,
[Weekday Arabic Name FirstLetter] [nchar](1) NOT NULL,
[Day Of Year] [smallint] NOT NULL,
[Week Of Month] [tinyint] NOT NULL,
[Week Of Year] [tinyint] NOT NULL,
[Month] [tinyint] NOT NULL,
[Month English Name] [varchar](10) NOT NULL,
[Month English Name Short] [char](3) NOT NULL,
[Month English Name FirstLetter] [char](1) NOT NULL,
[Month Arabic Name] [nvarchar](15) NOT NULL,
[Month Arabic Name FirstLetter] [nchar](1) NOT NULL,
[Quarter] [tinyint] NOT NULL,
[Quarter Name] [varchar](6) NOT NULL,
[Year] [int] NOT NULL,
[MMYYYY] [char](6) NOT NULL,
[Month Year] [char](7) NOT NULL,
[Is Weekend] [bit] NOT NULL,
[Is Holiday] [bit] NOT NULL,
[Holiday Name] [nvarchar](50) NOT NULL,
[Special Day] [nvarchar](50) NOT NULL,
[First Date Of Year] [date] NULL,
[Last Date Of Year] [date] NULL,
[First Date Of Quater] [date] NULL,
[Last Date Of Quater] [date] NULL,
[First Date Of Month] [date] NULL,
[Last Date Of Month] [date] NULL,
[First Date Of Week] [date] NULL,
[Last Date Of Week] [date] NULL,
[Lineage Key] [int] NULL,
CONSTRAINT [PK__Date__B7A341C5SWWC2006D] PRIMARY KEY CLUSTERED
(
[Date Key] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
我面临以下问题:
并非所有组织部门的所有 weekends and holidays
都相同,例如有默认的周末(Fri,Sat
),但有些部门有不同的时间表,因此他们有不同的周末。当我根据特定标准对同一维度有不同的值时,如何处理这种情况?我应该为同一个 Dim 创建多个版本吗?在这种情况下,如何在企业数据仓库中将 Date Dim 用作 conformed dimension
?
将日期维度作为符合的 table 在以下情况下非常有用:
- 通过 ETL 作业更新的一个中心位置
- 易于实施“单一事实来源”,因为同一副本 数据在整个组织中都是可见的。
- 由于删除了不必要的副本,减少了数据占用空间 数据。
在您的情况下,您不需要所有列,因此您可以在数据库中拥有 DimDate table,但使用简单视图指向它以仅获取您需要的列。 此外,您可以在 DimDate 视图和 DimDepartment 之间建立桥梁 table,如下所示:
一个逻辑数据模型可能包含一个或多个多对多关系。物理数据建模技术通过添加额外的 table 将多对多多关系转换为一对多关系。这些被称为桥 tables.