同比查询 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 这个有点慢啊
[解决办法]
估计是日期维度的层级有问题,最好是日聚合到月、月聚合到季、季聚合到年,需要在属性了设置