MDX для расчета меры при условии равенства двух атрибутов члена из двух разных измерений - PullRequest
1 голос
/ 10 августа 2011

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

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

id_dim1 id_dim2 id_dim ... measure1

1 2 ... 120

2 1 ... 101

1 1 ... 95

3 3 ... 12

Dim1:

id_dim1 member1value

1 Value1

2 Value2

3 Value3

Dim2:

id_dim2 member2value

1 Value1

2 Value2

3 Value3

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

С уважением Soeren

1 Ответ

0 голосов
/ 18 августа 2011

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

case 
when id_dim1 = id_dim2 then measure1
else 0
end

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

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

...