CURRENTMEMBER函数在MDX中出错

时间:2016-06-15 06:15:02

标签: mdx members

我的维度如下:

Market Base Dimension

我希望一次获得一个市场。

当我使用此查询时,我正在获取所有成员的列表,因为我正在使用.MEMBERS函数:

SELECT [MARKET BASE].[Market Base].[Market Base].MEMBERS ON 1,
[Measures].[% OTC Sales] ON 0
FROM [PharmaTrend Monthly Ext];

但是当我使用以下查询来获取当前成员时,我得到一个错误: CURRENTMEMBER函数需要1参数的层次结构表达式。使用了成员表达式。

SELECT [MARKET BASE].[Market Base].[Market Base].CURRENTMEMBER ON 1,
[Measures].[% OTC Sales] ON 0
FROM [PharmaTrend Monthly Ext]; 

更新

当我使用以下查询时,我会得到All member的结果:

WITH 
MEMBER [Market] AS
    [MARKET BASE].[Market Base].[Market Base].CURRENTMEMBER

SELECT [Measures].[% OTC Sales] ON 0,
        [Market] ON 1
FROM [PharmaTrend Monthly Ext];

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

如果您在范围中的层次结构中有任何成员并且在轴上布局,则会隐式选择

CURRENTMEMBER。默认情况下,它是ALL成员。

WITH MEMBER [Measures].[Market] AS
[MARKET BASE].[Market Base].CURRENTMEMBER.NAME

SELECT [MARKET BASE].[Market Base].[Market Base].MEMBERS ON 1,
{[Measures].[% OTC Sales], [Measures].[Market]} ON 0
FROM [PharmaTrend Monthly Ext];

这将返回所选当前市场的名称或轴(在范围内)。

答案 1 :(得分:1)

准确地说 - currentmember不会迭代mdx中的任何内容。我在原帖中看到的mdx都没有使用任何迭代。

此函数与mdx

中的循环一样接近
GENERATE

也可以将Filter视为迭代器。

CURRENTMEMBER通常在WITH子句中用于计算。它的作用是为上下文中的每个成员选择当前成员 - 这基本上意味着你在结果表中看到的内容。