Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / ssas проброс агрегации с учётом унарных операторов за иерархию родитель-потомок / 3 сообщений из 3, страница 1 из 1
15.05.2020, 07:07
    #39957820
flame_brk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssas проброс агрегации с учётом унарных операторов за иерархию родитель-потомок
Всем доброго дня!

столкнулись с одним интересным сценарием использования, который пока не удалось реализовать эффективно с точки зрения производительности:

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

в иерархии родитель-потомок для правильного расчёта используется unary operator.

когда в контексте запроса мы явно обращаемся к parent-child иерархии, то значения корректно агрегируются с учётом нужного знака.
в противном случае всё агрегируется простым суммированием.

нам требуется, чтобы значения, рассчитанные с учётом unary operator отображались выше по иерархии.
сейчас это удалось сделать только благодаря такого рода перекладке:

Код: sql
1.
2.
3.
scope ([Отчётность].[Иерархия Родитель-Потомок].[All]);  
    [Measures].[Значение] = ([Measures].[Значение], strToMember('[Отчётность].[Иерархия Родитель-Потомок].&[' + CStr([Measures].[Код Соответствующего Корневого Уровня Иерархии Родитель-Потомок]) + ']'));  
end scope;  


(т.е. через меру, в которую мы засунули идентификаторы соответствующих корней parent-child и собрали их агрегатом max. это корректно, поскольку в контексте необходимой нам перекладки там в каждом случае код только одного из корней)

проблема в том, что холодный запрос с такой перекладкой выполняется от 500мс, и это время линейно растёт в зависимости от количества строк отчёта.
когда строк становится больше сотни это занимает неприлично много времени.

без этой перекладки parent-child с unary operator выполняется не так грустно.

может быть кто-то уже решал подобную задачу и сможет направить нас в направлении более элегантного и производительного решения?
...
Рейтинг: 0 / 0
16.05.2020, 00:54
    #39958267
flame_brk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssas проброс агрегации с учётом унарных операторов за иерархию родитель-потомок
спасибо всем неравнодушным!

всё оказалось достаточно банально...
Код: sql
1.
2.
3.
scope ([Measures].[Значение], [Отчётность].[Знак].[All]);
     THIS = [Отчётность].[Знак].&[+]-[Отчётность].[Знак].&[-];
end scope;


однако, полезно периодически обращаться к классике .
...
Рейтинг: 0 / 0
18.05.2020, 10:45
    #39958811
Гулин Федор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssas проброс агрегации с учётом унарных операторов за иерархию родитель-потомок
flame_brk,
я читал сей документ не однократно
и даже юзал его для простых случаев mdm
но до таких высот не добирался

перечитав его
Код: sql
1.
THIS = [Отчётность].[Знак].&[+]-[Отчётность].[Знак].&[-];


все равно не понял как отработате сей оператор
не ясно что значит минус между 2-мя мемберами
если не сложно - пояснли плз по русски
т.е я понимаю логику что в одном случае надо взять плюс в другом минус
но вот
...
Рейтинг: 0 / 0
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / ssas проброс агрегации с учётом унарных операторов за иерархию родитель-потомок / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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