首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >SCD类型2维->这是正确的布局类型2 scd与这种类型的数据存在吗?

SCD类型2维->这是正确的布局类型2 scd与这种类型的数据存在吗?
EN

Database Administration用户
提问于 2012-04-30 22:35:50
回答 1查看 4.3K关注 0票数 3

这里是我的布局的一个例子图片。

如您所见,我有我的SCD类型(status/startdate/enddate/businesskey)。

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

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

层次结构

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

WorkerDivisionId (键列: LineOfBusinessId,WorkerDivisionId) (名称列: WorkerDivisionName)

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

此维度错误是因为工作表名称发生了更改,并且在完全处理过程中发生选择不同时,它会发现重复项。我只是想知道,在这种特定情况下,设置关键列的最佳方法是什么。名称需要是键列的一部分还是我的层次结构完全不正确。我确信我的设置是正确的,但我现在显然是在质疑自己。

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

我很容易用这个设置来更新我的所有多维数据集,而没有听到有人做出这种类型的层次结构。当我查看这个设置时,我不得不认为其他人已经建立了这种类型的层次结构,因为它相当简单。对此,如有任何建议或指导,将不胜感激。

谢谢。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-05-01 08:53:18

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

例如,想象一下Division1中的worker BloggsJ,也就是LineOfBusiness1中的worker。现在,Division1被转移到LineOfBusiness2。从逻辑上讲,现在有了带两行的分区实体:

代码语言:javascript
代码运行次数:0
运行
复制
DivisionKey     Division     LineOfBusinessKey
          1     Division1                   11 
          2     Division2                   12
          3     Division1                   12

代码语言:javascript
代码运行次数:0
运行
复制
LineOfBusinessKey    LineOfBusiness
               11    LineOfBusiness1
               12    LineOfBusiness2

现在,我们有一个工作人员BloggsJ,他被分配到第1分部,该部门随后被移动。

代码语言:javascript
代码运行次数:0
运行
复制
WorkerKey  WorkerName   DivisionKey   Division   LineOfBusinessKey   LineOfBusiness
      101     BloggsJ             1   Division1                 11  LineOfBusiness1
      102     BloggsJ             3   Division1                 12  LineOfBusiness2
      103     SmithF              2   Division2                 12  LineOfBusiness2

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

  • 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科技委

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

票数 5
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/17272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档