微软BI开拓者多维分析专区多维建模 当涉及到事实表的每条记录时...

1  /  4  页   1234 跳转 查看:9736

当涉及到事实表的每条记录时...

当涉及到事实表的每条记录时...

:(
问题想了好一阵子了
请大家帮忙.

(1).
假设事实表factSale有四个字段(id,time,passport,product),
其中id是自增的主键,time是该笔交易的发生时间,prduct是该笔交易涉及的产品,总共十种产品.
重点在passport这个字段,该字段为11位的数字,介于00000000000与999999999之间,且没有严谨的规律.
(2).
该表存有4000万条记录.
(3).
现在客户需要"某天与某产品相关的且passport介于N1和N2的交易记录共有多少",
其中N1和N2由客户随意指定.
 

回复: 当涉及到事实表的每条记录时...

自己先顶.
 

回复: 当涉及到事实表的每条记录时...

建议一种办法:
1.创建正常的Cube,其中将passport作为一个正常的维度。
2.在制作报表时,将N1和N2作为两个参数,筛选数据集1,数据集1是对事实表的查询(SQL),这样将可以获得满足条件的passport。
3.将满足条件的passport(即数据集1的结果)传递到数据集2,数据集2是对多维数据集的查询(MDX),这样就可以获得想要的结果了。
4.这其中会涉及一些性能优化的问题,例如不对passport维度进行聚集等等,这需要根据查询状况另行分析。
 

回复: 当涉及到事实表的每条记录时...



引用:
原帖由 jinligang 于 2007-9-21 16:13:00 发表
建议一种办法:
1.创建正常的Cube,其中将passport作为一个正常的维度。
2.在制作报表时,将N1和N2作为两个参数,筛选数据集1,数据集1是对事实表的查询(SQL),这样将可以获得满足条件的passport。
3.将满足条件的......


实际情况中,passport出现没有规律,比较分散,重复率不高.
cube里的数据将接近于详细数据.
如果做成维度,passport的成员数太多了.
 

回复: 当涉及到事实表的每条记录时...

这个性能会出现哪些问题?
在以前的项目中,有个表是1亿6千万行,类似的查询效果还可以,不会出现太大的性能问题
 

回复: 当涉及到事实表的每条记录时...

报告The兄, 俺整个周末都在想你的问题, 已经绞尽脑汁了,还是想不出什么好办法.
俺的理解, 要扫描每一条记录, 必须要有相应的维度(组合),时间和产品的粒度都不够细,看来只能在id和passport择优选一个作维度,然后在计算成员中用N1,N2两个参数控制选择范围.

把cube按时间,产品分一下区,或许对性能有些帮助.

另外, 把事实表按 时间,产品和passport先聚合一下,看看能否使事实表紧凑些.
最后编辑www2002 最后编辑于 2007-09-24 21:22:36
 

回复: 当涉及到事实表的每条记录时...

虽然passport的重复率不高,但只能这样做,其实即使成员很多,但并不影响使用,因为你不会将这个维度放到行或列上。
 

回复: 当涉及到事实表的每条记录时...

俺又看不明白了。为什么好好的度量值要设计成维度呢。难道只是为了过滤? 那直接加个where条件不行吗?
 

回复: 当涉及到事实表的每条记录时...



引用:
原帖由 一笑不倾城 于 2007-9-24 14:47:00 发表
俺又看不明白了。为什么好好的度量值要设计成维度呢。难道只是为了过滤? 那直接加个where条件不行吗?


设置成度量值...?
但是需要就单个事实记录过滤啊
 

回复: 当涉及到事实表的每条记录时...



引用:
原帖由 www2002 于 2007-9-24 9:47:00 发表
报告The兄, 俺整个周末都在想你的问题, 已经绞尽脑汁了,还是想不出什么好办法.
俺的理解, 要扫描每一条记录, 必须要有相应的维度(组合),时间和产品的粒度都不够细,看来只能在id和passport择优选一个作维度,然后在计......


谢谢.

有更好的想法,还请赐教啊
 
1  /  4  页   1234 跳转

版权所有 微软BI开拓者 

Powered by Discuz!NT 2.1.202    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.03125 second(s) , 3 queries.
返顶部