在数据仓库上工作,这个问题的一个合适的类比是我们有医疗保健从业者。医疗保健从业者具有许多专业属性,并在开放数量的团队和开放数量的临床领域工作。

例如,您可能有一名护士作为救济/承包商/银行工作人员在多个团队中从事 child 服务工作。或者,您可能有一位新的合格医生,他从事普通医学工作,正在某个特殊领域工作,等待获得该特殊领域顾问的资格。

因此,我们的工作领域和团队数量都是开放的,我们的维度中不能有团队 1、团队 2 等。其他属性也可能随着时间的推移而改变,例如基地位置(他们工作的地方)、主要团队和他们工作的区域。

因此,在 Kimble 之后,我选择了支腿:

表 DimHealthProfessionals:

Key (primary key, identity)
Name
Main Team
Main Area of Work
Base Location
Other Attribute 1
Other Attribute 2
Start Date
End Date

Table OutriggerHealth专业团队:
HPKey (foreign key to DimHealthPRofessionals.Key)
Team Name
Team Type
Other Team Attribute 1
Other Team Attribute 2

Table OutriggerHealthProfessionalAreaOfWork:
HPKey (as above)
Area of Work
Other AoW attribute 1

如果 HP 的任何属性发生变化,或者他们工作的团队或工作领域的组合发生变化,我们需要在 SCD 中创建一个新条目,并使用它的支腿表来封装它。

我们正在 SSIS 中执行此操作。

源数据基本上是一个具有主要属性的 HP 表、一个工作领域表、一个团队表和一对映射表,用于将当前的一组工作领域映射到一个 HP。

我有三个数据源,一个是 HCP 信息,一个是所有 HCP 的工作领域,一个是团队成员。

问题是如何遍历所有三个数据集以确定 HP 是否更改了属性,如果他们更改了属性,我们如何适本地更新 DIM 和两个支腿。

任何人都可以指出我对此的最佳做法吗?或者建议另一种建模这个维度的方法?

最佳答案

诚然,我可能无法理解这里的所有内容,但在我看来,这个例子中的关系应该颠倒过来。将 TeamKeyWorkAreaKey 放在 dimHealthProfessionals 中——这应该可以简化事情。

有了这个,您只需确保在 dimHealthProfessionals 之前交付支腿。

将支腿本身视为尺寸。您可能希望将 dimHealthProfessionals 视为类型 2 维度,以正确捕获历史记录。

编辑

考虑到团队对人是多对多的,一个事实更合适。
只有当一个人一次只能属于一个团队时,维度表中的列才合适。与工作区相同。

关于sql - 带有支腿的缓慢变化维度的 SSIS 种群,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4098098/

10-08 20:43