Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 Расчёт выражения вне текущего контекста ограничений доступа.  [new]
vosd
Member

Откуда: Красноярск
Сообщений: 3
Добрый день.
Есть вычисление для куба рассчитывающее остаток товара.

([Дата].[Дата].[Дата], [Measures].[Остаток стоимость])
= SUM(null:[Дата].[Дата].CurrentMember,[Measures].[Стоимость0])

Понадобилось для одной из ролей ограничить период по годам

Allowed member set:
{[Дата].[Год].&[2016-01-01T00:00:00], [Дата].[Год].&[2017-01-01T00:00:00]}

В этой роли перестал корректно считаться остаток ([Measures].[Остаток стоимость]). Так как накладываются ограничения по роли.

Можно ли как то организовать выполнение вычисления этого выражения без учета ограничений указанных в роли?
24 ноя 17, 05:00    [20979713]     Ответить | Цитировать Сообщить модератору
 Re: Расчёт выражения вне текущего контекста ограничений доступа.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 1310
vosd
Добрый день.
Есть вычисление для куба рассчитывающее остаток товара.

([Дата].[Дата].[Дата], [Measures].[Остаток стоимость])
= SUM(null:[Дата].[Дата].CurrentMember,[Measures].[Стоимость0])

Понадобилось для одной из ролей ограничить период по годам

Allowed member set:
{[Дата].[Год].&[2016-01-01T00:00:00], [Дата].[Год].&[2017-01-01T00:00:00]}

В этой роли перестал корректно считаться остаток ([Measures].[Остаток стоимость]). Так как накладываются ограничения по роли.

Можно ли как то организовать выполнение вычисления этого выражения без учета ограничений указанных в роли?

Нет, потому что - Вы ограничили в роли доступ к некоторым дням, у Вас остаток на 2016-01-01 (доступ открыт) - это сумма движений с начала времен до 2015-12-31 (а там доступ закрыт).
Есть изысканный обходной путь. Прикручиваете группу мер на новое измерение "ОтборПоДням" - Да(1)/Нет(0), далее новую группу мер "ДниОтбораДляРоли" как 1 для ОтборПоДням и ключ даты для измерения "Дата" и строки для дней 2016 года, далее ВСЕ группы мер, привязанные на измерение Дата, привязываете на новое измерение "ОтборПоДням" как "многие-ко-многим" через новую группу мер "ДниОтбораДляРоли".
И в роли доступа ставите allowed member set {[ОтборПоДням].[ОтборПоДням].&[1]}.
У Вас автоматически через эту роль видны продажи, движения, остатки только для дат 2016 года.
Но. Остатки не будут корректно считаться.
Поэтому делаете еще одну группу мер с дубликатом меры "Стоимость0", НЕ привязываете как "многие-ко-многим", делаете скрытой Visible=0 и меру-дубликат используете для ([Дата].[Дата].[Дата], [Measures].[Остаток стоимость]) .
То есть стоимость для движения для 2001-2015 будет считаться для остатков 2016-01-01 и далее, а посмотреть ее будет невозможно.
24 ноя 17, 14:04    [20980979]     Ответить | Цитировать Сообщить модератору
 Re: Расчёт выражения вне текущего контекста ограничений доступа.  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 31497
Блог
Посчитать в ХД срез на дату окончания ограничения и в формуле использовать эту дату как точку отсчета.
Возможно, придется написать свои формулы для разных групп пользователей.
24 ноя 17, 19:24    [20982014]     Ответить | Цитировать Сообщить модератору
 Re: Расчёт выражения вне текущего контекста ограничений доступа.  [new]
vosd
Member

Откуда: Красноярск
Сообщений: 3
Andy_OLAP,
Спасибо за предложенный вариант.

Лучше переделаю расчет формулу расчета остатков, так чтобы использовались рассчитанные в базе источнике остатки на начало каждого года (или месяца).
25 ноя 17, 09:24    [20982628]     Ответить | Цитировать Сообщить модератору
 Re: Расчёт выражения вне текущего контекста ограничений доступа.  [new]
Andy_OLAP
Member

Откуда: я знаю, что Зенит - чемпион
Сообщений: 1310
vosd
Andy_OLAP,
Спасибо за предложенный вариант.

Лучше переделаю расчет формулу расчета остатков, так чтобы использовались рассчитанные в базе источнике остатки на начало каждого года (или месяца).

Видите ли, Вашим пользователям это потом так понравится, что они скажут - создайте отдельную роль доступа для Иванова и отдельную для Петрова, Иванову дайте доступ ко всем показателям за 1-15 января, а Петрову за 16-31 января. И не больше.
И тут окажется, что остатки на начала месяца или года не очень и подходят.

В новом измерении не обязательно варианты 1-0. Можно под каждую роль свой элемент и только к нему доступ в allowed member set.

То есть измерени "ВариантыДнейОтбора" (1-2-3), для Иванова элемент 1 (и в группе мер "ДниОтбораДляРоли" строки для дат 1-15 января), для Петрова элемент 2 (и строки для дат 16-31 января), для всех остальных (для дефолтной роли) элемент 3 и строки для дат 1900-01-01 - 2020-01-01. И далее внутри куба привязка "многие-ко-многим" не меняется. И спрятанная мера "Копия Стоимость0", не привязанная к измерению "ВариантыДнейОтбора", позволяет для любого дня рассчитать остаток. Но выводить его только по открытым для доступа датам, для каждой роли своим.

Изначально вариант гибкий и не нужно ломать куб при добавлении Сидорова, которому просто элемент 4, доступ в новой роли только к элементу 4 и новые строки в существующей группе мер "ДниОтбораДляРоли" на элемент 4 и на даты 1 марта - 23 марта 2017 (с потолка взяты для примера).
25 ноя 17, 21:03    [20983459]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить