Введение В этой статье я продолжу рассказывать о своем опыте работы с Microsoft Analysis Services. В дополнение к предыдущей статье хочу написать о нестандартных решениях, которые были сделаны в последнем проекте.
Эти решения приблизили меня к Microsoft Analysis Services, я стал больше уважать его и делать с его помощью то, что раньше казалось мне невозможным.
Сумма средних показателей за период
Заказчик запросил сумму средних значений по каждому элементу за период, как показано на рисунке ниже:То есть идея в том, что в контексте элементов elem1, elem2, .
, elemN куб вычисляет среднее значение для каждого элемента за выбранный период; во всех остальных случаях рассчитывается сумма.
Требуется изменить поведение куба для одного измерения, а для всех остальных оставить стандартное поведение (в описанном случае стандартное поведение — СУММ).
Решения:
- Первый вариант:
Для этого варианта вам необходимо создать скрытое измерение [ELEM COPY], просто создав копию [ELEM] и установив для его свойства Visible значение False. Далее в разделе куба «Расчеты» выберите «Новый вычисляемый элемент», как показано на рисунке:
и в появившемся окне для ввода выражений пишем:iif ( not isleaf([ELEM].
[ELEM SK].
currentmember), sum(EXISTING [ELEM COPY].
[ELEM SK].
currentmember.Children,[Measures].
[FCT VAL]), [Measures].
[FCT VAL] )
[ELEM SK] — ключевой атрибут скрытого измерения.
[Measures].
[FCT VAL] — это агрегация AvarageOfChildren, т.е.
при сборке куба мы создали измерение типа AvarageOfChildren и оно автоматически его посчитало.
Пример создания измерения с агрегацией AvarageOfChildren показан на рисунке ниже:
- Решение с использованием ОБЛАСТИ:
Это решение мне показал мой коллега, на мой взгляд, его легче понять, хотя и немного сложнее реализовать.
Что нужно сделать: Перепишите выборку для таблицы фактов: Вместо:
SELECT [DATE]
-
Сжатые Сроки Завершения Вашего Проекта
19 Oct, 24 -
Ловля Бандерлогов В Офисе
19 Oct, 24 -
Сегментация Данных С Видеокамеры
19 Oct, 24 -
Будущее, Роботы, Спецэффекты
19 Oct, 24