需要在MDX中产生特定的输出,我正在努力产生所需的结果。我正在尝试使用ADW Cube构建示例。
我需要制作一个有三列的表:
- 某些类别(此示例中的城市,但本专栏将最终根据SSR中的选定参数动态更改),
- 针对特定月份的类别(本示例中的互联网销售)的某种措施
- 与第二列相同的度量,但在上个月
该表应仅根据第二列中的度量将表滤光到前三名。
下面是我到目前为止得到的一个简单的静态示例,但是这个想法基本上是这样:用户选择了参数中的一些值,这些值将对表进行过滤的数据(由[Country](Canada)表示)在示例中)。然后,他将在某些层次结构中选择粒度级别,他希望得到自己的结果(示例中的[城市]代表)。他将选择所需的期间(具体[年]和[月])。运行查询时,他应该得到与下面相似的表(在第二列中他拥有前三名的结果):
Category Internet Sales Amount (CurrentPeriod) Internet Sales Amount (PreviousPeriod)
Langford $13,468.39 null
Vancouver $12,291.48 $7,447.26
Sooke $11,563.01 null
第一列代表所选的粒度。第二列代表给定项目选定的年度组合的互联网销售,第三列代表在选择组合前的一个月内互联网销售。
这是我到目前为止得到的。我能够制作表的前两列,但我也很难包括第三列。我来自SQL,是MDX的新手,所以请忍受我的要求,如果我的要求很简单,或者我的方法到目前为止的方法还很遥不可及。
SELECT [Measures].[Internet Sales Amount] ON 0,
TopCount
({[Customer].[City].[City].Members}
, 3
, [Measures].[Internet Sales Amount]
) ON 1
FROM [Adventure Works]
WHERE ( [Customer].[Country].&[Canada],
[Date].[Calendar Year].&[2007],
[Date].[Month of Year].&[12] )
好吧,我设法解决了这个简化的示例。
WITH
MEMBER [Measures].[SalesPrevMth] AS
(
[Measures].[Internet Sales Amount]
,[Date].[Calendar].CurrentMember.PrevMember
)
SELECT
NON EMPTY
{
[Measures].[Internet Sales Amount]
,[Measures].[SalesPrevMth]
} ON COLUMNS
,NON EMPTY
TopCount
({
[Customer].[City].[City].Members
*
[Date].[Calendar].[Month].ALLMEMBERS
}, 3, [Measures].[Internet Sales Amount]) ON ROWS
FROM
(
SELECT
[Date].[Calendar].[Month].&[2007]&[12] ON COLUMNS
FROM [Adventure Works]
)
WHERE [Customer].[Country].&[Canada];