MDX 函数 CURRENTMEMBER 失败,因为 'Date' 属性的坐标包含一个集合

The MDX function CURRENTMEMBER failed because the coordinate for the 'Date' attribute contains a set

我正在尝试 运行 这个查询:

select [Dim Date].[Date] on ROWS,
{[Measures].[Available Time Net],[Measures].[Logged On Time Net]} on columns 
from [OTS Agent Time Net Data]
where {[Dim Date].[Date].&[08/01/2014]:[Dim Date].[Date].&[12/31/2014]}

我想获取 where 子句中存在的度量值,但我还想在行中显示日期。我一直收到错误消息。

您不能在一个轴上和切片器中使用相同的层次结构 ([Dim Date].[Date]) (MDX tutorial);我想使用子查询对你的例子来说没问题:

select 
  [Dim Date].[Date] on ROWS,
  {[Measures].[Available Time Net],[Measures].[Logged On Time Net]} on columns 

from ( 
  select {[Dim Date].[Date].&[08/01/2014]:[Dim Date].[Date].&[12/31/2014]} on 0 
  from [OTS Agent Time Net Data] 
)

希望对您有所帮助。

(编辑:使用命名集或使用轴中的切片器内容 - 查看其他响应 - 有点不同,因为请求在一定天数范围内过滤,但 select [Dim Date ].[Date] 不一定显示日期;例如可以是 [Dim Date].[Date])

层次结构的 'All'

我同意 Marc 的回答,这可能是最好的回答方式。但是还有另一种方法可以做到这一点,它不需要子选择,就是使用命名集。

with set DateRange AS
{[Dim Date].[Date].&[08/01/2014]:[Dim Date].[Date].&[12/31/2014]}

select NON EMPTY  DateRange on ROWS,
{[Measures].[Available Time Net],[Measures].[Logged On Time Net]} on COLUMNS 
from [OTS Agent Time Net Data]

编辑

根据您的要求,如果您还想按时间进行过滤,可以采用以下一种方法。将集合 DateRange 的定义替换为以下内容:

with set DateRange AS
EXISTS({[Dim Date].[Date].&[08/01/2014]:[Dim Date].[Date].&[12/31/2014]}
       ,[Dim Time].[Time].&[1930]
       , "Time Net"
      )

您需要在此处填写一些内容..

假设时间维度的层次结构为[Dim Time].[Time]。请替换为真实姓名和会员格式(假设为&[1930]

另外,Time Net是度量[Measures].[Available Time Net][Measures].[Logged On Time Net]所属的度量组名。再次,替换为原始名称。

为什么不直接将集合添加到 ROWS

SELECT 
  NON EMPTY 
    {
      [Dim Date].[Date].&[08/01/2014] : [Dim Date].[Date].&[12/31/2014]
    } ON ROWS
 ,{
    [Measures].[Available Time Net]
   ,[Measures].[Logged On Time Net]
  } ON COLUMNS
FROM [OTS Agent Time Net Data];