Получить параметр месяц от даты в MDX - PullRequest
0 голосов
/ 24 мая 2011

В настоящее время я создаю отчеты с использованием служб Reporting Services (и языка MDX). Я получаю дату благодаря параметру:

MEMBER [Measures].[retail sales amount] AS (
STRTOMEMBER(@TimecalendarTimecalendarmonthhierarchy)
, [Measures].[Retail sales amount invoiced including tax])

STRTOMEMBER (@TimecalendarTimecalendarmonthhierarchy) может выглядеть примерно так [Календарь времени]. [Иерархия месяцев календарного месяца]. [Дата календарного времени]. & [2011-03-18T00: 00: 00]

Я бы хотел получить только месяц этого параметра. Когда я использую:

MTD([Time calendar].[Time calendar month hierarchy].[Time calendar date].&[2011-03-18T00:00:00]
, [Measures].[Retail sales amount invoiced including tax])

работает нормально, но это не относится к

MTD(STRTOMEMBER(@TimecalendarTimecalendarmonthhierarchy)
, [Measures].[Retail sales amount invoiced including tax])

Ответы [ 2 ]

0 голосов
/ 27 мая 2011

MTD даст вам набор дат от первой даты месяца до указанной даты.Если вы хотите получить месяц, вы можете использовать ANCESTOR или PARENT .Родитель будет работать, если в вашей иерархии месяц находится прямо над датой.Разница между SUM (MTD (дата), мера) и (date.parent, мера) очевидна, когда вы думаете о предыдущих месяцах - если вы переходите на месяц, который находится вПрошлый MTD даст вам частичные результаты в отличие от самого члена месяца (для дат, отличных от последней даты месяца).

StrToMember по существу переводитстрока для выражения члена в MDX.Нет никакой разницы (функционально) между записью:

([Time].[Month].&[201001], [Measures].[SomeMeasure])

и

(StrToMember("[Time].[Month].&[201001]"), [Measures].[SomeMeasure])

Было бы интересно услышать, в чем именно заключается ошибка, когда вы выполняете свое нерабочее выражение по порядкудля отладки.

Если вы просто хотите получить месячную сумму для меры, вы должны написать:

(StrToMember(@param).Parent, [Measures].[Retail sales amount...])

или (если у вас больше уровней между ними):

(Ancestor(StrToMember(@param), 
          [Time calendar].[<hierarchy>].[<month level>]), 
 [Measures].[Retail sales amount...])

Кроме того, при использовании MTD вы хотите написать:

SUM(MTD(<date member>), [Measure].[Some Measure])

вместо

MTD(<date member>, [Measure].[Some Measure])

взглянуть на определение BOLМПД

0 голосов
/ 25 мая 2011

Попробуйте:

MTD( STRTOMEMBER(@TimecalendarTimecalendarmonthhierarchy) ) * {[Measures].[Retail sales amount invoiced including tax]}

Если это не работает, каков результат:

STRTOMEMBER(@TimecalendarTimecalendarmonthhierarchy).name
...