Ssas 当层次结构中不存在所有日期时,如何构造日期范围查询?
MDX新手,继承了一个应用程序,使用以下命令检索过去7个工作日 注意,实际日期是动态生成的 我希望它使用前7个工作日: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 问题在于日期值是动态生成的,并且不知道层次结构中存在哪些值。我不确定如何
至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)