SCD Type 2 Dimension -> 对于存在此类数据的 type 2 scd,这是正确的布局吗?

Use*_*ith 3 ssas slowly-changing-dimension

这是我的布局的示例图片。

在此处输入图片说明

如您所见,我有我的 SCD 类型(状态/开始日期/结束日期/businesskey)。

我的密钥是标识每条记录的代理密钥。

我的问题是我的层次结构似乎出错了,这可能是由于布局不正确。这是我当前的关键列结构。

等级制度

LineOfBusinessId(关键列:LineOfBusinessId)(名称列:LineOfBusinessName)

WorkerDivisionId(关键列:LineOfBusinessId、WorkerDivisionId)(名称列:WorkerDivisionName)

WorkerId(关键列:LineOfBusinessId、WorkerDivisionId、WorkerId)(名称列:WorkerName)

此维度出错是因为工作人员名称发生更改,并且在完整处理期间发生 select distinct 时,它会发现重复项。我只是想知道针对这种特定情况设置键列的最佳方法是什么。名称是否需要成为关键列的一部分,或者我的层次结构完全不正确。我确信我的设置是正确的,但我现在显然在质疑自己。

我收到了一些建议,在这种情况下最好的做法是使用代理键作为我的键列的一部分,但后来发现这会导致问题,因为我只希望在查询我的 SCD 时显示一条记录。后来,我收到了更多建议,说我不应该在 id 键列中使用代理,而应该在名称键列中使用代理,特别是在 Worker 级别。

在没有听到建立这种类型层次结构的人的意见的情况下,我对使用此设置更新所有多维数据集感到相当不安。当我看到这个设置时,我不得不认为其他人已经建立了这种类型的层次结构,因为它相当简单。非常感谢任何关于此的建议/方向。

谢谢。

Con*_*lls 5

在缓慢变化的维度上制作 SSAS 层次结构有点麻烦。您需要为层次结构的每个级别的每个历史版本制作代理键。然后该键具有实际面向业务的名称,用户可以通过该名称选择或报告。

例如,假设在 LineOfBusiness1 中的 Division1 中工作人员 BloggsJ。现在 Division1 被转移到 LineOfBusiness2。从逻辑上讲,您现在拥有具有两行的 Division 实体:

DivisionKey     Division     LineOfBusinessKey
          1     Division1                   11 
          2     Division2                   12
          3     Division1                   12
Run Code Online (Sandbox Code Playgroud)

LineOfBusinessKey    LineOfBusiness
               11    LineOfBusiness1
               12    LineOfBusiness2
Run Code Online (Sandbox Code Playgroud)

现在,我们有工人 BloggsJ,他被分配到第 1 分部,该分部随后被转移

WorkerKey  WorkerName   DivisionKey   Division   LineOfBusinessKey   LineOfBusiness
      101     BloggsJ             1   Division1                 11  LineOfBusiness1
      102     BloggsJ             3   Division1                 12  LineOfBusiness2
      103     SmithF              2   Division2                 12  LineOfBusiness2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,键保持严格的等级顺序:

  • LineOfBusiness2 (Key=12) 有两个孩子: Division2 (Key=2) 和 Division1 (Key=3)。Division1 (Key=3) 有一个孩子:BloggsJ (Key=102) 和 Division2 (Key=2) 有一个孩子:SmithF (Key=103)。

  • LineOfBusiness1 (Key=11) 有一个孩子:Division1 (Key=1),它有一个孩子:BloggsJ (Key=101)

在多维数据集中显示名称允许您构建可以支持向下钻取操作的层次结构。您可能还想隐藏此层次结构的基本属性并仅显示名称的另一个集合,因此维度中的某些内容将在每个级别生成干净、唯一的成员列表,而不会出现不透明、混淆的重复名称。

*****更新 05012012 下午 3:22 CST

这是我的数据示例的图像。

在此处输入图片说明