Родители множества в MDX - PullRequest
       5

Родители множества в MDX

1 голос
/ 18 октября 2011

У меня есть фильтр, который выбирает конкретную дату в моем измерении даты. Она будет передана в качестве параметра в запрос MDX.

Filter([Date Dimension].[Calendar Year Hierarchy].[Actual Date].members,
        [Date Dimension].[Actual Date].CurrentMember.Properties( "Name" ) = '2011-09-01 00:00:00.000')

Теперь я хотел бы выбрать недели и / или месяцы в иерархии выше.

[Измерение даты]. [Иерархия календарных лет]. [Месяц] [Измерение даты]. [Иерархия календарных лет]. [Календарная неделя]

Я попробовал несколько функций без особой удачи, таких как .Parent и DrillupLevel

Я могу использовать их неправильно или не в том месте,

спасибо за помощь

Ответы [ 4 ]

2 голосов
/ 18 октября 2011

Вы можете использовать функцию GENERATE, чтобы получить все восходящие:

Generate
 (
   {Filter([Date Dimension].[Calendar Year Hierarchy].[Actual Date].members,
        [Date Dimension].[Actual Date].CurrentMember.Properties( "Name" ) = 
'2011-09-01 00:00:00.000')},
{Ascendants([Date Dimension].[Calendar Year Hierarchy].CurrentMember)}
 )

Запрос с использованием Adventure Works:

Select 
{[Measures].[Internet Sales Amount]} On Columns,
{Generate(
{Filter([Date].[Calendar].[Date].members,[Date].[Calendar].CurrentMember.Properties("Name") = 'April 1, 2004')}, 
{Ascendants([Date].[Calendar].CurrentMember)})} On Rows
From    [Adventure Works]    
1 голос
/ 18 октября 2011

Если вы знаете, какой уровень вы ищете, вы можете использовать Функция предка MDX вместо родительского:

Ancestor([Date Dimension].[Calendar Year Hierarchy].currentmember, 
         [Date Dimension].[Calendar Year Hierarchy].[Month]) 

Если нет, все в порядке с родительской функцией.Обратите внимание, что использование свойств - не самый быстрый способ фильтрации (для очень больших наборов).

Почему бы не использовать функцию StrToMember MDX ?

StrToMember( ... here build your member with a string ... ) 

или если вы можете редактировать mdx, непосредственно создавая оператор непосредственно с помощью строителя строк?

0 голосов
/ 13 октября 2012

Вы можете использовать STRTOSET и для каждого входного параметра заменить ] на ].Parent, таким образом, у вас будет множество родителей.

0 голосов
/ 18 октября 2011

поэтому ответ, который у меня есть на данный момент,

Фильтр ([Измерение даты]. [Иерархия календарных лет]. [Фактический Date] .members, [Date Dimension]. [Actual Дата] .CurrentMember.Properties ("Имя") = '2011-09-01 00: 00: 00.000') .item (0) .parent

используя .item[0], чтобы получить предмет в наборе и .parent, чтобы получить родительский элемент (в моем случае я на самом деле вызываю его 3 раза)

если у кого-то есть идеи получше, они бы с удовольствием их здесь.

...