需要在MDX中生成特定输出,我正在努力产生所需的结果。我正在尝试使用ADW Cube构建一个示例。
我需要制作一个表格,其中有三列:
根据第二列中的度量,表格应仅过滤到前三个最高项目。
下面是我到目前为止所获得的一些简单的静态示例,但其基本原理是:用户在参数中选择一些值,这些值将对要过滤的表的数据进行子集化(由[Country](Canada)表示在示例中)。然后,他将在某个层次结构中选择他想要其结果的粒度级别(在示例中由[City]表示)。他会选择所需的期间(具体[年]和[月])。运行查询后, 他应该得到一个类似的表格,如下所示(根据第二栏他有三个结果):
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] )
答案 0 :(得分:0)
好的,我设法解决了这个简化的例子。
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];