如何根据特定标准对同一维度具有不同值时实现维度 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.