Возврат данных между двумя датами из MDX Query SSAS - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь фильтровать данные между двумя диапазонами дат. Тип данных 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. Ни одна из них не выдает никакой ошибки.

Если я использую только значение Filter - Status, то указывается значение c без предоставления всего, все работает нормально.

Ответы [ 2 ]

1 голос
/ 27 февраля 2020

Пожалуйста, попробуйте функцию фильтра. Это будет медленнее, но должно работать, так как выбранный вами подход работает, только если существует точное время даты

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

0 голосов
/ 28 февраля 2020

Я смог получить желаемый результат, следуя ответу @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
...