SSAS-维度和事实表历史数据-将事实表与维度表映射

SSAS-维度和事实表历史数据-将事实表与维度表映射,ssas,data-warehouse,dimension,fact,Ssas,Data Warehouse,Dimension,Fact,我设计了与地点相关的仓库表格-DimPlaces、FactPlaces、DimGeography。这是一个简单的设计,如果你看到。所有位置都位于DimPlaces中(Addrline1、Addrline2、placename等),地理层次结构位于DimGeography中(城市、州、国家、邮政编码)。FactPlaces是一个表,它有DimPlaces和DimGeography的外键 我希望保留历史数据,因为地名或其属性可能会发生变化,同时,如果某个地点的位置发生变化,则地理层次键也会发生变化

我设计了与地点相关的仓库表格-DimPlaces、FactPlaces、DimGeography。这是一个简单的设计,如果你看到。所有位置都位于DimPlaces中(Addrline1、Addrline2、placename等),地理层次结构位于DimGeography中(城市、州、国家、邮政编码)。FactPlaces是一个表,它有DimPlaces和DimGeography的外键

我希望保留历史数据,因为地名或其属性可能会发生变化,同时,如果某个地点的位置发生变化,则地理层次键也会发生变化

我发现设计模式-

另一个有用的设计模式是,除了维度的代理项键之外,还将持久帐户键添加到事实表中。这将连接回维度中的当前行,以便于按当前维度属性报告所有历史记录

您能建议按照这个解决方案来做吗?如果是,是否需要为唯一值使用UNIQUEIDENTIFIER类型的键


关于这一点的另一个问题——我有员工数据(DimeEmployee和FactEmployee)。每个员工都与他工作的地方有关联。如何将这些EMPLOYEE表与PLACES表连接。我需要将FACTEMPLOYEE与FACTPLACES联系起来吗?

我认为首先,他们指的是业务密钥?因此,如果维度表有两行,代理键1和2,但它们都引用相同的内容,因此都有AccountId/ProductId/WhateverId为1,那么您将有一些事实表行,其中代理键1和业务键1,后面的事实表行中有代理键2和业务键1

UniqueIdentifier非常广泛,如果可能的话,尽量避免在事实表和联接中使用它们


关于你的最后一个问题,这更像是一个报道。你需要这样做吗?这就是人们需要看到的,他们需要从中切分吗?您可以考虑引用的维度——其中位置表通过雇员维度上的PANIDID链接到事实表。或者,您可以有一个带有开始和停止日期的factemployees表。这取决于您需要实现什么。

谢谢Meff,我同意UniqueIdentifier非常广泛,请您建议除了identity列之外,在businesskey列中获取唯一id的其他方法。我正在努力解决这个问题。@ChrisChris,维度有一个代理键,这是维度表上的一个标识。业务键是源表中的标识,因此如果表是DimProduct,则业务键可能是源数据库中产品表的标识列。维度表源是否没有主键?