首先,我的立方体的时间维度是由我从两个独立的维度创建的。
时间维度:小时,半小时,十分钟和分钟字段。
日期维度:日,月和年字段
我的问题是,当我想要探索并过滤整整几天而不是整天时,结果就好像我只是在探索整天。
让我告诉你我使用的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来做。
如果有人能帮助我,我将非常感激!
问候。
答案 0 :(得分: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子句中的行之前指定列。