从MDX查询SSAS返回两个日期之间的数据

时间:2020-02-26 05:59:55

标签: sql sql-server ssas mdx cube

我正在尝试过滤两个日期范围之间的数据。其数据类型为datetime。 我已经通过SSAS中的查询设计器生成了查询。

以下是我拥有的数据集的示例:

enter image description here

度量值组和维度的示例图像:

enter image description here

我使用过的样本过滤器:

enter image description here

生成的MDX查询:

`SELECT NON EMPTY { [Measures].[Status] } ON COLUMNS, NON EMPTY { ([Lobby].[Added Local Time].[Added Local Time].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_VALUE, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( [Lobby].[Added Local Time].&[2020-01-02T10:32:37.806667] : [Lobby].[Added Local Time].&[2020-02-19T13:43:13.833333] ) ON COLUMNS FROM ( SELECT ( { [Lobby].[Status].[All] } ) ON COLUMNS FROM [LTS KROI DEMO])) WHERE ( [Lobby].[Status].[All] ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS`

问题:

问题是它没有根据给定的datetime范围过滤数据。都不会给出任何错误。

如果我仅使用“过滤器-状态”一个特定的值,而又不给出全部效果就可以了。

2 个答案:

答案 0 :(得分:1)

请尝试过滤器功能。这样会比较慢,但应该可以,因为您采用的方法仅在确切的日期时间存在的情况下才有效

SELECT { [Measures].[Status] } ON COLUMNS, NON EMPTY { 
Filter(
 [Lobby].[Added Local Time].[Added Local Time].ALLMEMBERS,
 [Lobby].[Added Local Time].CurrentMember.MemberValue >=  CDate("2020-01-02 10:32:37.806667") 
 and [Lobby].[Added Local Time].CurrentMember.MemberValue <= CDate("2020-02-19 13:43:13.833333")
) 
} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_VALUE, MEMBER_UNIQUE_NAME ON ROWS 
FROM [LTS KROI DEMO]
CELL PROPERTIES VALUE

答案 1 :(得分:0)

我按照以下答案获得了预期的结果 @GregGalloway通过对我作为参数传递的参数进行少量更改 日期。当我删除将日期传递给Cdate函数的时间时 它工作正常。

SELECT { [Measures].[Status] } ON COLUMNS, NON EMPTY { 
Filter(
 [Lobby].[Added Local Time].[Added Local Time].ALLMEMBERS,
 [Lobby].[Added Local Time].CurrentMember.MemberValue >=  CDate("2020-01-02") 
 and [Lobby].[Added Local Time].CurrentMember.MemberValue <= CDate("2020-02-19")
) 
} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_VALUE, MEMBER_UNIQUE_NAME ON ROWS 
FROM [LTS KROI DEMO]
CELL PROPERTIES VALUE