Ssas 当层次结构中不存在所有日期时,如何构造日期范围查询?

Ssas 当层次结构中不存在所有日期时,如何构造日期范围查询?,ssas,mdx,date-range,mdx-query,Ssas,Mdx,Date Range,Mdx Query,MDX新手,继承了一个应用程序,使用以下命令检索过去7个工作日 注意,实际日期是动态生成的 我希望它使用前7个工作日: 2016-03-17至2016-03-25 但是,它使用的是未来的日期 2016-03-25至日历中的最新日期 据我所知,这是因为层次结构中不存在2016-03-26,因此结束范围变为空,这解释了未来的日期 [WorkDate].&[2016-03-25T00:00:00] : NULL 问题在于日期值是动态生成的,并且不知道层次结构中存在哪些值。我不确定如何

MDX新手,继承了一个应用程序,使用以下命令检索过去7个工作日

注意,实际日期是动态生成的

我希望它使用前7个工作日:

  • 2016-03-17
    2016-03-25
但是,它使用的是未来的日期

  • 2016-03-25
    至日历中的最新日期
据我所知,这是因为层次结构中不存在
2016-03-26
,因此结束范围变为空,这解释了未来的日期

[WorkDate].&[2016-03-25T00:00:00] : NULL
问题在于日期值是动态生成的,并且不知道层次结构中存在哪些值。我不确定如何构造MDX日期范围以获得所需的结果

我试过使用
=“2016-03-17”
[WorkDate]一个快速解决方案可能是

其中([DimCalendar].[WorkDayHierarchy].[WorkDate].&[2016-03-25T00:00:00]。滞后(7) :[DimCalendar]。[WorkDayHierarchy]。[WorkDate]。&[2016-03-25T00:00:00] ) 但只有当过去的日期在层次结构中时,这才有效,在本例中是2016-03-25

编辑:基于以下问题

///不使用强名称的查询。(否&)

//此查询通过将维度成员值作为度量值进行筛选

WITH 
MEMBER [Measures].[Data Type] AS 
[Date].[Day of Year].CurrentMember.Properties ("Member_Value",TYPED) 
select {[Measures].[Internet Order Count] }
on columns,    
filter ([Date].[Day of Year].[Day of Year],[Measures].[Data Type]<12)
 on rows 
from [Adventure Works]
与
成员[度量][数据类型]为
[Date][Day of Year].CurrentMember.Properties(“成员值”,键入)
选择{[Measures].[Internet订单计数]}
在专栏上,

筛选器([Date].[Day of Year].[Day of Year],[Measures].[Data Type]12和[Date].[Day of Year].currentmember.Properties(“Member_Value”,键入)12和[Date].[Day of Year]。currentmember.Properties(“Member_Value”,键入)不幸的是,我们事先不知道日期是否在层次结构中,所以这仍然是一个相同的问题:-/有没有办法让它像一个普通的SQL范围一样工作,比如
…其中DateCol>='startDate',而DateCol在转换为MDX时,SQL范围中1到10之间的值将与度量值一起工作。对于Hierarchy成员创建范围运算符的方法是使用“:”。您的查询的问题是您使用的是强名称“&[2016-03-25T00:00:00]运算符指示它。当层次结构中没有该强名称的值时,它将转换为null。这是您面临的原始问题。有两种前进方向。1)首先列出层次结构的成员,然后进行上述查询。2) 测量维度成员名称值并对其进行筛选。谢谢。当我明天回到办公室时,我会尝试一下。我已经在原始答案中添加了一些解决方案。他们可能会帮助上一个例子。谢谢你的帮助!
WHERE [WorkDate] >= '2016-03-17' 
AND   [WorkDate] <= '2016-03-25'
select {[Measures].[Internet Order Count] }
on columns,
[Date].[Day of Year].[1]:[Date].[Day of Year].[10]
on rows 
from [Adventure Works]
WITH 
MEMBER [Measures].[Data Type] AS 
[Date].[Day of Year].CurrentMember.Properties ("Member_Value",TYPED) 
select {[Measures].[Internet Order Count] }
on columns,    
filter ([Date].[Day of Year].[Day of Year],[Measures].[Data Type]<12)
 on rows 
from [Adventure Works]
select 
{[Measures].[Internet Sales Amount],[Measures].[Reseller Sales Amount]} 
on columns, 
filter([Date].[Day of Year].[Day of Year], 
[Date].[Day of Year].currentmember.Properties ("Member_Value",TYPED)
>12 and [Date].[Day of Year].currentmember.Properties ("Member_Value",TYPED)<20) 
on rows 
from 
[Adventure Works]
select 
{[Measures].[Internet Sales Amount],[Measures].[Reseller Sales Amount]} 
on columns, 
([Geography].[Country].&[United States]
)
on rows 
from 
[Adventure Works]
where 
filter([Date].[Day of Year].[Day of Year], 
[Date].[Day of Year].currentmember.Properties ("Member_Value",TYPED)
>12 and [Date].[Day of Year].currentmember.Properties ("Member_Value",TYPED)<20)