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

标签 ssas mdx date-range mdx-query

MDX 的新手并继承了一个使用以下方法检索最近 7 个工作日的应用程序。

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

WHERE  ( [DimCalendar].[WorkDayHierarchy].[WorkDate].&[2016-03-25T00:00:00]
: [DimCalendar].[WorkDayHierarchy].[WorkDate].&[2016-03-26T00:00:00].lag(6)
)

我预计它会使用之前 7 个工作日:

  • 2016-03-172016-03-25

但是,它使用 future 日期

  • 2016-03-25 DimCalendar 中的最新日期

根据我的阅读,这是因为 2016-03-26层次结构中不存在,因此结束范围变为 NULL,这解释了 future 的日期...

[WorkDate].&[2016-03-25T00:00:00] : NULL

问题是日期值是动态生成的,我事先不知道层次结构中存在哪些值。我不确定如何构建 MDX 日期范围以获得所需的结果。

我试过使用 <=FILTER但不断收到转换错误。使用纯 SQL 这会很容易。我可以写:

WHERE [WorkDate] >= '2016-03-17' 
AND   [WorkDate] <= '2016-03-25'

知道 MDX 中的等效过滤器是什么吗?

最佳答案

快速修复可能是

WHERE ( [DimCalendar].[WorkDayHierarchy].[WorkDate].&[2016-03-25T00:00:00].lag(7) : [DimCalendar].[WorkDayHierarchy].[WorkDate].&[2016-03-25T00:00:00] ) 但这仅在过去日期位于层次结构中时才有效,在本例中为 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) 

关于ssas - 当层次结构中不存在所有日期时,如何构造日期范围查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53448002/

相关文章:

ssas - MDX 计算成员并设置减法

ssas - 如何抑制 MDX 查询中的单个单元格值?

php - 在 PHP 中组合日期范围的算法

c# - 将每个日期范围内的金额拆分为每月/每年的金额

sql-server - SQL Server : fetching records between two dates?

sql-server - 有什么方法可以在浏览 SSAS 立方体时控制小数位数吗?

ssas - 按度量值过滤

sql-server - SSAS 测量与范围值相关的平均值

SSAS Cube 设计 - MDX 非常慢

SSAS 维度层次结构 : A duplicate attribute key has been found when processing