MDX Query для извлечения даты и использования ее в качестве строки для фильтрации данных - PullRequest
0 голосов
/ 16 октября 2019

У меня есть поле с именем прогнозная версия , в котором хранится версия в формате «Прогноз на январь 2009 г.» и поле времени продаж, в котором хранится дата. Я хочу, чтобы мой запрос MDX отфильтровал данные для последних двух версий прогноза на основе текущей даты. Например. если текущая дата - октябрь 2019 г., она должна показать мне данные для прогноза на сентябрь 2015 г. и прогноза на октябрь 2009 г. .

Я хочу использовать его так же, как условие where в SQL.

1 Ответ

0 голосов
/ 17 октября 2019

Взгляните на пример ниже. В моем первом запросе я перезапускаю «Сумму интернет-продаж» за май 2013 года.

select 
{
[Measures].[Internet Sales Amount]
}
on columns,
[Date].[Calendar].[Month].&[2013]&[5]
on rows 
from 
[Adventure Works]

Затем мы изменим его, чтобы он возвращался за два месяца до «мая 2013 года»

select 
{
[Measures].[Internet Sales Amount]
}
on columns,
([Date].[Calendar].[Month].&[2013]&[5]).lag(2):([Date].[Calendar].[Month].&[2013]&[5]).lag(1)
on rows 
from 
[Adventure Works]

Редактировать:Сделать запрос динамическим

select 
{
[Measures].[Internet Sales Amount]
}
on columns,
strtoset('[Date].[Calendar].[Month].&['+cstr(datepart("yyyy",Now()))+ ']&['+cstr(datepart("m",Now()))+'].lag(2):[Date].[Calendar].[Month].&['+cstr(datepart("yyyy",Now()))+ ']&['+cstr(datepart("m",Now()))+'].lag(1)')
--Output of the above expression is 
--[Date].[Calendar].[Month].&[2019]&[10].lag(2):[Date].[Calendar].[Month].&[2019]&[10].lag(1)
on rows 
from 
[Adventure Works]
...