1

首先,我的多维数据集的时间维度是我从两个分离的维度创建的。

时间维度:小时、半小时、十分钟和分钟字段。

日期维度:日、月和年字段

我的问题是,当我想探索和过滤几天而不是一整天时,结果就像我只探索一整天一样。

让我向您展示我使用的 mdx:

select non empty  ([Client].[Client].[Client],[Product].[Product].[Product]) on rows,
  {[Measures].[Example]}  on columns 
from [Cube] 
where ( {([Date].[Id].&[20131002] ) *([Time].[Time Field].&[0] : [Time].[Time Field].&[2059]) } +{([Date].[Id].&[20130930] : [Date].[Id].&[20131001]) *([Time].[Time Field].&[0] : [Time].[Time Field].&[2359]) }  )

该 mdx 有效,因为没有日期或时间维度。

这个不行:

select non empty  ([Date].[Date Field].[Date Field]) on rows,
  {[Measures].[Example]}  on columns 
from [Cube] 
where ( {([Date].[Id].&[20131002] ) *([Time].[Time Field].&[0] : [Time].[Time Field].&[2059]) } + {([Date].[Id].&[20130930] : [Date].[Id].&[20131001]) *([Time].[Time Field].&[0] : [Time].[Time Field].&[2359]) }  )

我注意到,如果我像这样划分 mdx:

select non empty  ([Date].[Date Field].[Date Field]) on rows,
  {[Measures].[Example]}  on columns 
from [Cube] 
where ( {([Date].[Id].&[20131002] ) *([Time].[Time Field].&[0] : [Time].[Time Field].&[2059]) }  }  

select non empty  ([Date].[Date Field].[Date Field]) on rows,
  {[Measures].[Example]}  on columns 
from [Cube] 
where ( {{([Date].[Id].&[20130930] : [Date].[Id].&[20131001]) *([Time].[Time Field].&[0] : [Time].[Time Field].&[2359]) }  

有用!但我想用一个 mdx 来做。

如果有人可以帮助我,我将不胜感激!!

问候。

4

1 回答 1

1

您可以尝试使用子选择:

select non empty  (EXISTING [Date].[Date Field].[Date Field]) on rows,
  {[Measures].[Example]}  on columns 
from (select 
     ( {([Date].[Id].&[20131002] ) *([Time].[Time Field].&[0] : [Time].[Time Field].&[2059]) } 
     + {([Date].[Id].&[20130930] : [Date].[Id].&[20131001]) *([Time].[Time Field].&[0] : [Time].[Time Field].&[2359]) }  )
      on columns
      from [Cube]
     )

顺便说一句,您的 MDX 是非法的(但 Analysis Services 是可以容忍的):根据 MDX 规范,必须在 select 子句中的行之前指定列。

于 2013-10-11T16:10:00.453 回答