ITPUB數據倉庫與數據挖掘論壇用戶Damon__Li問:
統計各種產品在本年每個季度的銷售排名,(現在有日期、產品維度和銷售額度量)大體顯示如下
Q1 Q2 Q3 Q4
銷售額 排名 銷售額 排名 銷售額 排名 銷售額 排名
產品1 3000 2 2000 3 5000 1 4000 1
產品2 4000 1 3000 2 4000 2 2000 3
產品3 2000 3 4000 1 3000 3 3000 2
…….
請熟悉MDX的前輩指點,提供思路。
10多年前就搞MDX,儘管現在不從事這方面工作了,但這種問題看到就手癢。
以下是在SSAS 2008 R2 及SQL Server [Adventure Works]示例數據庫(在Codeplex有下載)給出的求解(示例中,季度位於時間維度第2層級):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
WITH MEMBER
[Measures].[SalesRank] AS RANK( [Product].[Product
Categories].currentmember, [Product].[Product
Categories].[ All Products].children
, [Measures].[Sales
Amount] ) SELECT {DESCENDANTS([ Date ].[Calendar].[Calendar Year ].&[2007],2)} *{[Measures].[Sales
Amount],[Measures].[SalesRank]} ON 0, [Product].[Product
Categories].[ All Products].children ON 1 FROM [Adventure
Works] |
以下是在SSAS中執行的情況,可以將[Date].[Calendar].[Calendar Year].&[2007]用[Date].[Calendar].CurrentMember替換,改爲在WHERE語句裏指定年度[Date].[Calendar].[Calendar Year].&[2007],放在查詢切片中後,利於在切片中指定查詢條件。