powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Custom rollup formula только для одной из мер
8 сообщений из 8, страница 1 из 1
Custom rollup formula только для одной из мер
    #32539289
Horasani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу обратить внимение на три меры. Для одной из них используется custom rollup formula (остаток на начало), в остальных должен остаться SUM (сдано и отгружено).
Можно ли так сделать, ведь custom rollup заменяет SUM? Или можно какой-то хитрый IIf(...) применить?
Вот неудачное создание куба:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CreateCube=CREATE CUBE [OCWCube] (

   DIMENSION [Date] TYPE TIME,
      LEVEL [Все] TYPE ALL,
      LEVEL [Год] TYPE YEAR CUSTOM_ROLLUP_EXPRESSION '[Date].CurrentMember.FirstChild',
      LEVEL [Месяц] TYPE MONTH CUSTOM_ROLLUP_EXPRESSION '[Date].CurrentMember.FirstChild',
      LEVEL [День] TYPE DAY,
   DIMENSION [Product],
      LEVEL [Все] TYPE ALL,
      LEVEL [Product],
   DIMENSION [Cost],
      LEVEL [Все] TYPE ALL,
      LEVEL [Cost],

   MEASURE [Остаток] FUNCTION SUM,
   MEASURE [Сдано] FUNCTION SUM,
   MEASURE [Отгружено] FUNCTION SUM,
);
(В результате получаю по всем мерам значение первого дня).
Буду рад решению.
...
Рейтинг: 0 / 0
Custom rollup formula только для одной из мер
    #32541352
Fpmip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для себя я не придумал ничего лучше, чем использовать iif в Custom Rollup Formula, т.е.:

Код: plaintext
1.
2.
3.
4.
iif(
  [Measures].CurrentMember.Name = "Остаток",
  [Date].CurrentMember.FirstChild,
  Aggregate([Date].CurrentMember.Children, [Measures].CurrentMember)
)

Также печально, что настроенные Custom Rollup Formula не наследуются в виртуальном кубе (т.е., когда полуаддитивный [Остаток] создан в отдельном кубе с настроенными Custom Rollup, а потом все сводится в виртуальном).
Лучше бы было, если по умолчанию работало наследование...
...
Рейтинг: 0 / 0
Custom rollup formula только для одной из мер
    #32541907
Horasani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромнейшее списибо, Fpmip! Все работает как часики.
Очень жаль, что не могу подискутировать по поводу наследования. В OLAP влез меньше недели назад и пока ни бум-бум.
...
Рейтинг: 0 / 0
Custom rollup formula только для одной из мер
    #32542331
Fpmip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, вместо FirstChild используйте лучше OpeningPeriod/ClosingPeriod
...
Рейтинг: 0 / 0
Custom rollup formula только для одной из мер
    #32542765
Horasani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Fpmip
Кстати, вместо FirstChild используйте лучше OpeningPeriod/ClosingPeriod

Внедрил. Запустил. Работает. Не знаю разницы, но оставлю OpeningPeriod.
Благодарен за совет.

И еще: нутром чувствую, что рассчитать новые меры [Остаток на сумму] (Остаток*Cost), [Сдано на сумму] (Сдано*Cost) и [Отгружено на сумму] (Отгружено*Cost) чрезвычайно легко. А как?
...
Рейтинг: 0 / 0
Custom rollup formula только для одной из мер
    #32543521
Fpmip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HorasaniИ еще: нутром чувствую, что рассчитать новые меры [Остаток на сумму] (Остаток*Cost), [Сдано на сумму] (Сдано*Cost) и [Отгружено на сумму] (Отгружено*Cost) чрезвычайно легко. А как?
В OLAP'е это как раз не легко :)), точнее нецелесообразно.
Сделайте это на уровне фактов -- во view. Агрегация для остатков и движения делается аналогично.

P.S. Кстати, на мой взгляд, для агрегации остатков эффективнее могут оказаться Calculated Members, а не Custom Rollup. Нужно смотреть в каждом конкретном случае.
...
Рейтинг: 0 / 0
Custom rollup formula только для одной из мер
    #32543839
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще одно альтернативное решение для обладателей Enterprise Edition (которое должно дать выше производительность для остальных мер) - это воспользоваться CELL CALCULATIONS.
Т.е.

Код: plaintext
1.
2.
CREATE CELL CALCULATION CURRENTCUBE.InsteadOfCustomRollup
FOR '(Measures.Ostatok, Date.Year.MEMBERS)'
AS '[Date].CurrentMember.FirstChild'

Если Вы все таки хотите пользоваться IIF'ом, то условие лучше переписать как

Код: plaintext
[Measures].CurrentMember IS [Measures].[Остаток]

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
Custom rollup formula только для одной из мер
    #32546135
Horasani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суммы считаю в запросе. Оставил custom rollup. Воспользовался IS-ом. На этом остановился.
Большое спасибо!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Custom rollup formula только для одной из мер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]