我有一套桌子看起来有点像这样:
Key 1 | Key 2 | Key 3 | Var 1 | Var 2 | Var 3 | ... | Var 200
-------------------------------------------------------------
X | Y | Z | 2 | 3 | 5 | ... | 8前三列构成一个复合键。其余的列由一系列计算填充,如:
Var 3 = Var 1 + Var 2
Var 4 = Var 3 + Var 2
Var 5 = Var 3 + Var 4
....(这是对公式的极大简化。但是,本质上,有一个基于先前计算的项目的计算链。)
因此,在考虑如何建立维度模型时,我可以将键的组成部分识别为一个维度(或两个),变量似乎是度量,但我很难确定事实是什么。我不知道是否有一个关键的洞察力的维度建模过程,我错过了,或它是不是只是不适合我的情况。
编辑:我不确定我会实现什么通过维度建模也!上下文是一个处理3NF表、进行计算和输出3NF表的现有应用程序。建议将这些表迁移到一个数据仓库中,该数据仓库正在使用量纲建模方法构建。我很难理解这会有什么好处,因为计算是抽象的数学和统计计算,而维度建模似乎是围绕着确定产生事实的“业务过程”。
发布于 2012-01-14 12:43:27
如果您可以通过key1、key2或key3对数据进行有意义的切片,那么您就可以利用它们生成维度。在这种情况下,您将有单独的维度表,其中包含每个键的所有值,以及任何相关属性(甚至只是对值所代表的内容的可读的描述)或分组(键值的滚动)。
每个维度表都有键值及其属性,并链接到其键上的事实表。
如果您的值(Var X)跨行是相加的(即键1=‘Foo’的所有值加在一起意味着什么),那么您可以使用键对数据进行切片。
我不认为Var列之间的关系真的与维度建模相关,除非您想要解除它们的枢轴,并通过“可变类型”维度而不是单独的列来识别它们。
除此之外,这个问题有点模糊,想要真正清楚地了解你想要达到的目标,以及为什么首先要对你的数据建立一个维度模型。也许如果你能澄清一下你的目标,我们可以给你一个更有意义的答案。
编辑:维度建模仅仅是识别想要对数据进行聚合切片的轴。有时候,一个维度可能非常简单--只是一个代码。有时,它可能很复杂,有很多子属性--比如保险单。维度允许您按键或按维度的某些属性对数据进行滚动,从而对数据进行聚合。
如果VarX列在行之间是相加的--也就是说,对两个或更多行聚合(例如) var2是有意义的--那么维度结构可能对报告有意义。维度模型的一个关键点是,它倾向于在集合中方便高效的查询,并且很好地使用OLAP工具。
因此,如果我的值为'Foo‘、'Bar’、'Wibble‘、'Blarg’( key1 ),值'A‘、'B’、'C‘,则可能有几行看起来有点像:
Key1 Key2 Var1 [. . .]
--------- ---------- ---------- ----------
Foo A 10 . . .
Bar A 20 . . .
Foo B 50 . . .如果我想查看所有Key2='A‘的Var1总数,那么报告工具将允许我在Key2上切片并将所有行加起来。如果我想看到Key1='Foo‘的Var1总数,那么我可以做一些类似的事情。在这种情况下,用于Var1 = 'A‘的Key2总数为30。
如果这是您想要为数据做的事情,那么维度模型可能会有所帮助,并允许您使用现成的报告工具(如reporting )建立统计报告工具。
用于Key1的维度表可能如下所示
Key1 Key1Desc Key1Grouping
------- ------------------------ -------------
Foo Description of 'Foo' Group A
Bar Description of 'Bar' Group A
Wibble Description of 'Wibble' Group A
Blarg Description of 'Blarg' Group B通过将此维度表加入事实表,您可以通过Key1Grouping卷起并查看(例如)“组A”的统计数据。您可以在基本累加度量值被聚合后计算Vars的比率。
再说一次-我还是有点不确定你想知道什么。
https://dba.stackexchange.com/questions/10668
复制相似问题