首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 数据库开发 >

同比查询 MDX如何写

2012-03-18 
同比查询 MDX怎么写?现在有这样一个需求:按照客户名称、产品名称、销售月份 来查询销售金额,同比销售金额Wit

同比查询 MDX怎么写?
现在有这样一个需求:
按照客户名称、产品名称、销售月份 来查询销售金额,同比销售金额
With Member TB AS
([Measures].[Amount],ParallelPeriod([Date].[Date].[Calendar Year],1,[Date].[Date].currentmember))

SELECT NON EMPTY {TB,[Measures].[Amount]} ON 0,
NON EMPTY 
[Customer].[Customer].ALLMEMBERS
*
[Product].[Product].ALLMEMBERS
*
[Date].[Date].[Month].ALLMEMBERS
ON 1
FROM [DW]

就这么一个简单的查询,要几分钟,去掉计算,3秒钟
why?
分不多,望各位大大指教下

[解决办法]
我在自己的DW上试了一下,100多万条数据,计算了一下,没有你说的那么慢啊,仅用了25秒,去掉计算同比,只保留“[Measures].[Amount]”,用了11秒。

是不是你的时间维度设计有问题呢?时间维度要适当优化一下,例如在定义级别的时候,让年度数据从月上汇总,月度数据从日上汇总等等。
还有,个人觉得尽量不要写.allmembers!!!
你可以枚举,也可以用 {[Date].[Date].[Month].[199001]:[Date].[Date].[Month].[200911]}

另提一下,sql2005在sp2之后,还有个补丁,最好打上!
[解决办法]
[Customer].[Customer].ALLMEMBERS 

[Product].[Product].ALLMEMBERS 

[Date].[Date].[Month].ALLMEMBERS 这个有点慢啊 

[解决办法]
估计是日期维度的层级有问题,最好是日聚合到月、月聚合到季、季聚合到年,需要在属性了设置

热点排行