同一个维度有不同的值,根据具体的标准,如何实现维度表设计?

问题描述

如果我有这样的 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

解决方法

在以下情况下将日期维度作为一致表是有利的:

  • 一个由 ETL 作业更新的中心位置
  • 易于实施“单一事实来源”,因为相同的副本 数据在整个组织中可见。
  • 由于删除了不必要的副本,从而减少了数据占用 数据。

在您的情况下,您不需要所有列,因此您可以在数据库中拥有 DimDate 表,但使用简单视图指向它以仅获取您需要的列。 此外,您可以在 DimDate 视图和 DimDepartment 之间创建一个桥接表,如下所示:

enter image description here

一个逻辑数据模型可能包含一个或多个多对多关系。物理数据建模技术通过添加附加表将多对多关系转换为一对多关系。这些被称为桥接表。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...