Как правильно свести эту вычисляемую меру в службах SSAS?

У меня есть расчетная мера в службах Analysis Services, которая возвращает средний дневной доход для местоположения на основе их последних трех периодов. Периоды — это промежутки времени, определяемые местоположением, поэтому одно местоположение может закрывать свои периоды ежемесячно, а другое — ежеквартально.

Чтобы вернуть средний дневной доход, у меня есть таблица factPeriods, которая возвращает доход за период и количество дней, входящих в этот период. Следующие многомерные выражения возвращают правильные значения на уровне местоположения ([Меры].[Дни в AR днях]) / ([Меры].[Дни в AR днях]).

Проблема заключается в том, что когда я перехожу к более высоким уровням, скажем, я хочу вернуть средний дневной доход по штатам, расчет будет неверным, поскольку он сначала суммирует дни, входящие в периоды, а затем делит. Я хочу, чтобы усреднение происходило сначала на самом низком уровне, а затем суммировало результаты среднесуточной выручки. Вот пример того, что происходит по сравнению с тем, что я хотел бы, чтобы произошло.

Скажем, у меня есть только два офиса, А и Б. А закрывается ежемесячно, Б закрывается ежеквартально. Результаты последнего закрытия:

Место/Доход/Дни, приносящие доход

Местоположение A / 3000 долларов США / 30 дней Место B / 1800 долларов США / 90 дней

Местоположение A приносит доход в размере 100 долларов США в день, а местоположение B — только 20 долларов США в день. Моя общая сумма должна быть 120 долларов в день. Вместо этого он будет возвращать 40 долларов в день. Вот что происходит на уровне вычислений.

Я хотел бы, чтобы формула была в псевдокоде SUM(([Measures].[Days In AR Charges]) / ([Measures].[Days In AR Days]))

но на самом деле это дает мне (СУММ([Показатели].[Дни в зарядах AR])) / (СУММ([Показатели].[Дни в днях AR]))

Может ли кто-нибудь помочь мне определить соответствующую формулу, чтобы сделать эту работу по желанию? В итоге должно получиться 100 долларов в день + 20 долларов в день, а не 4800 долларов за 120 дней. У меня есть подозрение, что мне может понадобиться использовать потомков, но я не совсем понимаю, как я буду их использовать, или если это даже правильное направление.


person Shane Delmore    schedule 03.02.2009    source источник


Ответы (6)


Не используйте вычисления SSAS, если вы можете получить нужное число в ETL или обработке, так как это будет работать лучше.

В этом случае я бы добавил вычисление DSV для выполнения деления, а затем разрешил SSAS суммировать как обычно.

person James    schedule 22.04.2009

Самый простой способ заставить вычисление происходить на конечном уровне, а затем свертываться, это переместить его перед CALCULATE; statment в сценарии MDX.

Обычно вы должны оставить CALCULATE; должен быть первым оператором в сценарии, но я думаю, что описанная вами ситуация является одним из исключений, когда оправдано наличие вычисляемого члена перед CALCULATE;

person Darren Gosbell    schedule 05.02.2009

Работа с пользовательскими формулами членов

http://msdn.microsoft.com/en-us/library/ms174474%28SQL.90%29.aspx

person adolf garlic    schedule 17.11.2009

Мое немедленное решение будет состоять в том, чтобы рассчитать средний дневной доход в процессе ETL, тогда SSAS просто суммирует значение. Я все равно хотел бы увидеть решение проблемы MDX, если кто-нибудь его знает.

person Shane Delmore    schedule 03.02.2009

Это просто вопрос указания правильного «порядка решения» в ваших вычислениях. Я не могу дать вам конкретный MDX для решения вашей проблемы, так как я не знаю, какова ваша структура куба, но поищите «порядок решения» в документах или через Google. Это именно то, что должен решать «порядок решения». По сути, вы указываете службам Analysis Services, что делать в первую очередь.

person Mitch Schroeter    schedule 04.02.2009
comment
Я пытался исправить это с помощью порядка решения, но это не сработало. Это не тот случай, когда одно вычисление зависит от другого вычисления, и они решают в неправильном порядке, это случай, когда в одном простом вычислении происходит суммирование, а затем деление, а не деление, а затем суммирование. - person Shane Delmore; 04.02.2009

Сократить одно уравнение до 3 отдельных уравнений? Вычислить числитель в одном, знаменатель в другом, а затем деление в третьем? Я не знаю инструментов, о которых вы говорите, поэтому я не знаю, можете ли вы выполнять несколько вычислений по порядку. Но это наверняка заставит вас сделать заказ.

person PPT    schedule 01.04.2012