Mdx 当我想探索时,如何按日期和时间维度进行过滤?

Mdx 当我想探索时,如何按日期和时间维度进行过滤?,mdx,olap,dimension,Mdx,Olap,Dimension,首先,我的多维数据集的时间维度是由我从两个分离的维度创建的 时间维度:小时、半小时、十分钟和分钟字段 日期维度,包含:日、月和年字段 我的问题是,当我想探索和过滤几个完整的日子而不是完整的日子时,结果就像我只探索完整的日子一样 让我向您展示我使用的mdx: select non empty ([Client].[Client].[Client],[Product].[Product].[Product]) on rows, {[Measures].[Example]} on column

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

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

日期维度,包含:日、月和年字段

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

让我向您展示我使用的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来做

如果有人能帮助我,我将非常感激


问候。

您可以尝试使用子选择:

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子句中的行之前指定列。

您可以尝试使用subselect:

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子句中的行之前指定列。

非常感谢!因此,mdx工作完美,我的语法中的更正非常感谢您!所以mdx工作得很好,纠正了我的语法