首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多维模型SSAS Cube

多维模型SSAS Cube
EN

Stack Overflow用户
提问于 2015-09-01 17:01:43
回答 1查看 254关注 0票数 0

最近开始在SSAS中实现多维模型。OLTP有一个表,其中存储了基于属性和实体列的多个度量。属性列具有不同的维名称。如果在一行中属性值为Dim1,则Entity列将具有Dim1值。类似地,属性列可以具有任何维度名称,其值将在实体列中。我们还有一些表,其中有多个属性和实体列。例如Attribute1和Attribute2。这两个都是维度名称,entity1和entity2存储它们各自的值。度量还取决于维度的顺序。具体地说,表存储在不同压缩下计算的风险值(VAR)值。在基金和行业压缩时计算的VAR与在行业和基金压缩时计算的VAR不同。OLTP将其存储为attribute1 (基金)、Attribute2(行业)、Entity1 (基金价值)和Entity2(行业价值)。使用where caluse where attribute1 =‘基金’和attribute2 =‘行业’或where attribute1 =‘行业’和attribute2 =‘基金’也很容易查询

如何在多维数据集中有效地对此进行建模?

我目前的方法是创建一个事实表,每个维度都有一个单独的not null外键列。如果我需要保存dimension1的数据,那么它的外键值将保存在dimension1中(这是Dimension1表的外键),其他维键(dimension2,dimension3..)将指向相应维度的N/A值。

如何改进这种方法?赞成和反对?如何在多维数据集设计中实现维度的排序

EN

回答 1

Stack Overflow用户

发布于 2015-09-01 18:16:04

我不确定你这么说到底是什么意思:

使用所有维度作为指向实际维度表的外键创建事实表

但这听起来像是错误的方法。

对于对事实表进行切片的每个维度,事实行都应该有一个单独的非空外键列。(即使其中一些偶尔指向特定维度中的特定“未知”成员)。换句话说,每个事实行都应该表示来自每个(相关)维度的特定成员的交集。

听起来你的问题是你的源系统受到了数据库反模式的困扰:通过简单地用(AttributeName,ObjectThisIsAnAttributeOfID,AttributeValue)创建行,而不是将这种关系定义为具有到主表的FK的表结构,通过允许即席添加属性来使属性“灵活”。

从这个数据结构中生成一个多维数据集设计结果需要进行大量的数据分析和转换:

  1. 有多少个不同的属性值?每个不同的值都是多维数据集中一个维度的候选值。对于每个属性,
  2. 有多少个不同的实体值?它们是否共享共同的数据类型?你知道未来的价值是什么吗?这将需要为每个具有属性值的“事物”(
  3. )的每个维度和事实执行此操作:它们是否一致地具有所有属性的值?或用于属性的子集?

您可能会发现(考虑到所涉及的工作量和时间),您只能对现有属性的一小部分进行建模。

请随时评论或回复更多细节,以防我误解了。

但从听起来,基本的问题是你的源系统没有断言任何关于“事物”和它们的属性之间的关系的规则。OLAP多维数据集设计涉及在初始设计时强烈断言这些类型的规则。

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

https://stackoverflow.com/questions/32327528

复制
相关文章

相似问题

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