温馨提示:本文翻译自stackoverflow.com,查看原文请点击:sql - Return data between two dates from a MDX Query SSAS
cube mdx sql sql-server ssas

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

发布于 2020-05-15 23:55:02

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

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

在此处输入图片说明

度量值组和维度的样本图像:

在此处输入图片说明

我使用过的样本过滤器:

在此处输入图片说明

生成的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范围过滤数据都没有给出任何错误。

如果我仅使用“过滤器-状态”的特定值而不给出全部说明,则一切正常。

查看更多

提问者
SelakaN
被浏览
19
SelakaN 2020-02-28 15:06

通过对作为日期传递的参数进行少量更改,可以按照@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