MDX如果查询1月销售前5商品2月份销售情况

0
微软cube虽然强大,但用户评价方式总是用能不能满足他们的需求来打分,最近经常遇到很多人问,能不能做到交叉查询。
他们的交叉查询是指某时间的内特定的商品或者会员后续在指定时间内的销售情况
 
用MDX怎么查询1月份销售前5名的商品,2月份的销售情况?
我用MDX该怎么写?
 
已邀请:
0

152379981 - 一句话介绍 2015-03-23 回答

select
[Measures].[净订购数量] on columns,
non empty([商品资料].[ITEM CODE].children) on rows
from
(
select
(
TOPCOUNT([商品资料].[ITEM CODE].children ,5,([Measures].[净订购数量],[商品分类].[LGROUP].CurrentMember ))
)
 on columns
from [Eachome DW]
where
([日期].[年月日].[Month Number Of Year].&[2015]&[1],[赠品主品].[ITEM GB].&[10])
)
where
([日期].[年月日].[Month Number Of Year].&[2015]&[2],[赠品主品].[ITEM GB].&[10])
 
0

xpivot - SSAS & Excel &Cube架构师、产品经理 课程地址:http://www.hellobi.com/course/34 2015-03-23 回答

总算看到有人提出类似问题了,至少说明你有认真思考过molap的局限性,没有一味的盲目崇拜或抵制,很不错。
这个问题如果具体化的话就很简单,用topcount做个dynamic set就可以搞定,如果只是固定限制为1月份销售前5名的话,就把这个时间维度hard code在mdx里,现实中往往不是这样,这个时间可能是动态的,这个月你想观察的是1月份前5名,下个月可能想观察的是2月份的前5名,如此有规律的倒也还好说,也可以用strtomember搞定,而如果毫无规律可循的情况下,比如说用户在交互的过程中任意指定一个时间段来观察期间销售前5名的商品,那么就相对比较棘手了,完全依赖ssas恐怕是不可行的,需要自定义扩展些功能来实现这个目的

要回复问题请先登录注册