У меня проблема с запросом MDX, и я думаю, что он сводится к порядку приоритета между вычислением агрегата и вычисляемого члена.
Позвольте мне начать с базовых данных, которые вращаются вокругоценка (которая имеет дату и некоторые другие данные, такие как тип элемента, схема - и, что особенно важно, для этого вопроса; коэффициент загрузки) и соответствующее значение.
Данные
Таблица оценки
Id | Valuation Date | Member Type | Scheme | Loading Factor
=============================================================
1 | 2010-01-01 | TypeA | Scheme X | 0.02
2 | 2010-01-01 | TypeB | Scheme X | 0.02
3 | 2010-01-01 | TypeA | Scheme Y | 0.02
4 | 2010-01-01 | TypeB | Scheme Y | 0.02
Таблица ValuationValue
ValuationId | Value
====================
1 | 1000.0
2 | 2000.0
3 | 3000.0
4 | 4000.0
При загрузке в куб имеет измерение Valuation с атрибутами MemberTypeСхема и дата.И куб с группой мер ValuationValue, содержащей меру значения, и группой мер оценки, содержащей коэффициент загрузки, например:
Cube
-Measure Groups
- Valuation
|_Loading Factor
- ValuationValue
|_Value
- Dimensions
- Valuation
|_MemberType
|_Scheme
|_Date
Вопрос
Коэффициент загрузки используется для загрузки значения, представьте себеэто как налог, поэтому 0,02 означает «сумма загрузки составляет 2% от стоимости».При возврате значения из запроса мне нужно также рассчитать сумму, на которую можно загрузить это значение.Типичный запрос может выглядеть следующим образом:
SELECT
{
[Measures].[Value]
} ON 0,
[Valuation].[Scheme] ON 1
FROM Cube
Это вернет 2 строки, и, как вы можете видеть, сравнивая с данными выше, он корректно суммирует через memberType:
Scheme | Value
=================
Scheme X | 3000.0
Scheme Y | 7000.0
Теперь, еслиЯ пытаюсь рассчитать коэффициент загрузки в этом запросе, все идет не так - я покажу.Учитывая следующий запрос:
WITH MEMBER [Measures].[Loading Value]
AS
(
[Measures].[Value] * [Measures].[Loading Factor]
)
SELECT
{
[Measures].[Value] ,
[Measures].[Loading Value]
} ON 0,
[Valuation].[Scheme] ON 1
FROM Cube
Я получаю результат
Scheme | Value | Loading Value
=================================
Scheme X | 3000.0 | 120.0
Scheme Y | 7000.0 | 280.0
По сути, происходит то, что он суммирует мой коэффициент загрузки, а затем умножает его на сумму моих значений(Первая строка выше должна быть 1000 * 0.02 + 2000 * 0.02 = 60
. Вместо этого она вычисляет 3000 * 0.04 = 120
).
Это, конечно, надуманный пример, моя фактическая структура немного сложнее - но я думаю, что это демонстрирует проблему.У меня сложилось впечатление, что вычисляемый элемент в приведенном выше примере должен появляться построчно, а не в конце агрегации моего показателя Value.
Спасибо за любые ответы.