Как сделать так, чтобы рассчитанная мера правильно свернулась в SSAS? - PullRequest
2 голосов
/ 03 февраля 2009

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

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

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

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

Местоположение / Доход / Дни, влияющие на доход

Местоположение A / $ 3000/30 дней Местоположение B / $ 1800/90 дней

Местоположение А приносит доход в 100 долларов в день, Местоположение Б приносит доход всего в 20 долларов в день. Моя общая сумма должна составлять 120 долларов в день. Вместо этого он вернул бы 40 долларов в день. Вот что происходит на уровне расчета.

Я бы хотел, чтобы формула была в псевдокоде SUM (([Измерения]. [Дни в AR-сборах]) / ([Измерения]. [Дни в AR-днях]))

но это на самом деле дает мне (СУММА ([Измерения]. [Дни в AR сборов])) / (СУММ ([Измерения]. [Дни в AR дней]))

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

Ответы [ 6 ]

3 голосов
/ 05 февраля 2009

Самый простой способ заставить вычисление произойти на листовом уровне и затем развернуться - переместить его до РАСЧЕТА; statment в вашем MDX-скрипте.

Обычно вы должны оставить КАЛЬКУЛЯТОР; должно быть первым утверждением в сценарии, но я думаю, что ситуация, которую вы описываете, является одним из исключений, когда оправдано иметь вычисляемый элемент до CALCULATE;

2 голосов
/ 17 ноября 2009

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

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

1 голос
/ 22 апреля 2009

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

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

0 голосов
/ 01 апреля 2012

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

0 голосов
/ 04 февраля 2009

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

0 голосов
/ 04 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...