我已经创建了一个在结构上类似于AdventureworksDW环境中的财务报告设计的维度模型,其中每个帐户的值作为事实表中的单个值列保存,维度为数据赋予其语义含义。
此模型中有超过1000列,因此它可以很好地添加或删除额外的列。这里有一个关于这种设计的很好的博客:http://garrettedmondson.wordpress.com/2011/10/26/dimensional-modeling-financial-data-in-ssas/
虽然这个模型可以很好地查询维度模型,并且有支持该模型进行维度分析的示例,但我担心该模型不是多维数据集开发或数据挖掘的标准,后者似乎更喜欢更宽表。
问题:此设计是否被归类为实体-属性-值(EAV)?
使用多个事实表的设计会更好吗?如此多的宽事实表(最多10个),每个表最多200-300列,但行数较少。
我应该期待更多的性能问题与更大的表吗?
发布于 2013-09-02 21:51:32
你说得对,具体的设计被认为是EAV模型。
通过使用这样的设计,您可以轻松地添加新的帐户,层次结构等。您不需要更新您的模型。
我不建议每个度量方法都有一列。在大多数行中,大多数帐户将为null。同样,使用这样的设计,即使只需要检索其中一个度量,也需要读取所有度量。
我们在多维数据集中大量使用帐户维度。不幸的是,像共享成员这样的东西在SSAS中并不容易处理,就像在Essbase中一样。
您需要创建一个Account维度,它是父子维度,并且您还需要像往常一样将此account维度的键放在事实表中。通过使用帐户维度,您可以很好地支持时间平衡功能。使用SSAS的时间平衡功能应该比自定义MDX代码更快。
目前,我们正在将一元运算符和父子关系转换为公式。所以基本上我们有普通的公式,层次结构中的父代也是作为公式工作的。最后,我们将使层次结构变得扁平。因此无法在帐户维度中向下钻取。我们仅使用帐户维度作为计算引擎。也可以有适当的层次结构,但我们决定不同时混合自定义汇总成员和一元运算符。
共享成员和我们作为自定义汇总成员实现的所有公式。
https://stackoverflow.com/questions/18496456
复制相似问题