Многомерные выражения для вычисления показателя при равенстве двух атрибутов элементов из двух разных измерений.

У меня есть следующая структура мер и измерений и некоторые примеры данных

Таблица фактов:

id_dim1 id_dim2 id_dim ...мера1

1 2 ...120

2 1 ...101

1 1 ...95

3 3 ...12

Dim1:

id_dim1 элемент1значение

1 Значение1

2 Значение2

3 Значение3

Dim2:

id_dim2 значение_члена2

1 Значение1

2 Значение2

3 Значение3

Dim1 и Dim2 на самом деле являются ролевыми измерениями и основаны на одной и той же таблице измерений.

Я хочу рассчитать меру, которая суммирует меру1 только тогда, когда:

[Dim1].[Hierarchy1].[Level based on member2value]=[Dim2].[Hierarchy1].[Level based on member2value]

В приведенном выше примере мера будет рассчитываться как: 95+12=107.

Загвоздка в том, что я хочу, чтобы мера вычислялась правильно, даже если Dim1 и Dim2 не используются в более позднем запросе mdx.

Пока у меня есть следующее, которое работает только тогда, когда Dim1 и Dim2 используются в более позднем запросе:

Member [Measures].[CondMeasure] AS 'IIF(
[Dim1].[Hierarcy1].[All].[Level].CurrentMember.Name =
[Dim2].[Hierarchy1].[All].[Level].CurrentMember.Name
,
([Measures].[Measure1],
[DimXX].[Hxx].[LevelXX].[MemberXX],
[DimYY].[Hyy].[LevelYY].[MemberYY])
),
0
)
'

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

Кстати. Я пытаюсь это сделать в SSAS

С уважением Серен


person envsdl    schedule 10.08.2011    source источник


Ответы (1)


Что вы думаете о создании дополнительного поля в таблице фактов или выражении в DSV?

case 
when id_dim1 = id_dim2 then measure1
else 0
end

после этого вы можете создать новую метрику...

В некоторых ситуациях это проще, чем писать сложные mdx-выражения.

person Max    schedule 17.08.2011