SSAS :: MDX :: Scope function :: Курсы валют - PullRequest
1 голос
/ 21 февраля 2011

Привет всем, Моя проблема: Я пытаюсь создать функцию объема, которая вычисляет обменные курсы на основе даты, валюты и указанного курса.

У меня это работает нормально, но в рамках моей функции объема я хочу сказать - если Dimension.Attribute.member = "Latest", тогда используйте FXRate 1, в противном случае используйте FXRate 2.

Теперь у меня даже есть это "рабочее" ... НО, которое работает, только если член находится в моем наборе данных ... т.е. я не могу использовать его в качестве параметра \ фильтра. Я не хочу говорить пользователям: «Вы всегда должны иметь LatestFlag в каждом отчете ... просто скрыть колонку» Я хочу дать пользователю возможность установить параметры отчета, прежде чем он начнет анализировать данные.

Итак, вот фрагмент моего кода: Область ({Измерения. [Сумма]});
Область (Листья ([ExchangeDate]), [Валюта отчетности]. [USD], Листья ([Валюта]));
Область ({Измерения. [Сумма]});

Это = IIF ( [Последний флаг]. [Флаг] .CURRENTMEMBER.name = "Да", [Валюта отчетности]. [Местные] / Показатели. [Курс2], [Валюта отчетности]. [Местные] / Меры. [Курс] );

End Scope;
Конец области; Конец области;

Я подозреваю, что мне нужно использовать другой Scope вместо iif - но я не уверен, как реализовать. Есть идеи?

О, это, наверное, важно отметить. Таблица FXRate имеет две ставки. Курс обновляется ежедневно. Rate2 повторяется для каждой валюты каждый день. Таким образом, независимо от даты, Rate2 всегда будет самым последним курсом для этой валюты. Измерение LatestFlag - это просто таблица с да и нет и не имеет никакого отношения к какой-либо другой таблице. Я просто использую его как фильтр.

В таблице FX также есть флаг - но я не использую его, так как мне нужно учитывать дату, если это не последняя ставка.

1 Ответ

1 голос
/ 21 февраля 2011

Мое решение было решено по следующей ссылке.

http://social.msdn.microsoft.com/Forums/en/sqlanalysisservices/thread/cb5ec22b-65c0-4b86-9879-40e42c039808

...