Ssas MDX函数CURRENTMEMBER失败,因为“日期”属性的坐标包含一个集合

Ssas MDX函数CURRENTMEMBER失败,因为“日期”属性的坐标包含一个集合,ssas,mdx,Ssas,Mdx,我正在尝试运行此查询: 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子句中存在

我正在尝试运行此查询:

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];我想对于您的示例来说,使用子查询是很好的:

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] 
)
希望有帮助


编辑:使用命名集或使用轴中的切片器内容(请参阅其他响应)有点不同,因为请求在天数范围内过滤,但选择[Dim Date]。[Date]不一定显示天数;例如,这可能是[Dim Date].[Date].

层次结构的“全部”,我同意Marc的答案,这可能是最好的方法。但是还有一种方法可以做到这一点,它不需要subselect,通过使用命名集

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]
编辑

根据您的请求,如果您想按时间进行额外筛选,这里有一种方法可以继续。将set 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]所属的度量值组名称。同样,替换为原始名称。

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


@Basil-您可能需要将行上的[Dim Date].[Date]替换为[Dim Date].[Date]。行上的成员,以获取行轴上的日期。否则,您只会在那里看到所有成员。@Sourav_Agasti-如果这是级别名称,那么。成员不是必需的。@whytheq-嘿!长时间。对不起,我没听清楚。@Sourav_Agasti嗨-希望你身体好。我要说的是从[Adventure Works]Marc中选择0上的{}、[Date].[Date].[Date]在1上,其他答案都不使用[Din Date]。[日期]独自一人。请重新检查,我想知道,如果我现在想添加一个时间维度:既然我有我的日期范围,我可以添加一个额外的范围吗?或者我应该交叉加入?相同的层次结构还是不同的层次结构?怎么做?不,这是一个不同的维度和层次结构。我指的是一套不同的名字。查询返回以同时具有时间和日期维度summ。如果只想按时间维度进行筛选,则不需要交叉联接。那么您可以使用EXISTS子句。但是如果你想显示它,你可以在时间和日期维度或交叉连接之外创建元组。我实际上想显示2013年10月13日和2014年1月13日之间19:30提供的每个调用的结果
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];