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

Откуда:
Сообщений: 47
OBIEE 12c, но я думаю, что это применимо и к 11 версии BI

Есть ли возможность на бизнес уровне настроить вычисляемый показатель, чтобы он отображал одно значение, если выбран определенный(ые) показатель(и) или другое, в противном случае?

Имеется в виду следующее:
У меня модель состоит из данных многомерного куба Esaabse(суммы, веса) и данных реляционной таблицы(детальные данные типа документов, пользователей, и их агрегатов вида count distinct).
Для примера:
Изм Период
-Год
-Квартал
-Месяц
Изм Товар
-Категория
-Детальный Товар
Показатели
-Стоимость(essbase)
-Вес(essbase)
-Документ(реляц БД)
-Пользователь(реляц БД)
-Кол-во документов(рел БД)
-Кол-во пользователей(рел БД)
-Стоимость(рел БД)*
-Вес(рел БД)*

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


Пример
Если я выбираю, например, измерение Период-Год и Показатель Стоимость(essbase), я получаю данные из многомерного куба вида
Период Стоимость(essbase)
2016 1000$
2017 2000$

Если я добавляю к этому Показатель Документ
Период Стоимость(essbase) Документ
2016 null 123
343
233
2017 null 878

Если я добавляю Стоимость(рел БД)
Период Стоимость(essbase) Документ Стоим(рел БД)
2016 null 123 300$
343 300$
233 400$
2017 null 878 2000$

Но две Стоимости неудобны для пользователей, поэтому
Мне необходимо либо
1. Добавить новый вычилсяемый показатель Стоимость(вычисляемая), который будет
Отображать значение показателя Стоимость(essbase), если не выбраны показатели Пользователь или Документ и отображать значение показателя
Стоимость(рел БД), если какой-либо из этих показателей выбран

2.Добавить новый вычилсяемый показатель Стоимость(вычисляемая), который будет
Отображать значение показателя Стоимость(essbase), если она не null и
Стоимость(рел БД), если null
IFNull(Стоимость(essbase), Стоимость(рел БД)) меня не устраивает, т.к. сразу идет запрос и к Многомерной и к реляционной БД в любом случае.

3. Как-то настроить модель, чтобы в случае добавления детальных показателей(Документ или Пользователь) Стоимость(essbase) отображалась, как значение для изместных пересечений измерений(Период-Товар)
20 май 18, 16:29    [21423783]     Ответить | Цитировать Сообщить модератору
 Re: OBIEE Сложная (или не очень) формула на на бизнес уровне в репозитории или...  [new]
terna
Member

Откуда:
Сообщений: 102
menja_zovut_deniska,

Реализовать выбор того или иного источника можно при помощи построения бизнес-модели.
Первым делом нужно сделать таблицы измерения для "документ" и "пользователь"
На физическом уровне связывете их с фактом из БД по соотвтествующим полям.
Добавляете их на логический уровень

Там также соединяете с фактом
Делаете для этих новых измерений level-based иерархии (можно стандартныv образом с 2 уровнями - total и detail - есть пункт меню по нажатию правой кнопкой по таблице-измерению на лог. уровне)

Далее в фактовой логической таблице у Вас 2 источника. Вам не нужно 2 разных показателя один из эсбэйса, другой из БД
Делаете один показатель, но с 2 разными источниками.

В меню показателя на вкладке column source: derived from phisical mappings (ставите галочку, чтоб показывал все источники) и для каждого источника выбираете соответствующий столбец.

Ещё нужно указать, что в источнике из БД данные есть для уровней "документ" и "пользователь" : открываете в папке sources соответствующий источник и указываете на вкладке content детальный уровень для этих иерархий.

В отчёты нужно будет добавлять документ и пользователь из таблиц-измерений.
Также источники для таблицы факта нужно расположить в следующем порядке: сначала essbase, потом БД

Описанная конструкция будет работать следующим образом:
Система проверяет, какие показатели в каких разрезах вы выбрали в отчёт: сначала смотрит первый источник в списке фактовой таблицы (то есть эссбэйс, т.к. мы его расположили первым), если в этом источнике есть все запрошенные столбцы и он соединён (согласно вкладке контент со всеми запрошенными измерениями), то он берет все данные из него, если нет, то переходит к следующему. То есть речь не про юнион из двух источников, а про выбор одного или другого. В случае если нет детализации по пользователю и документу - будет выбран источник эссбэйс для показателя, в случае если есть, то источник БД

Юнион тоже можно реализовать. Просто из Вашего описания не очень понятно как источник из БД относится к измерениям времени и товара, по какому признаку данные распределяются между эссбэйс и БД (дублируют они друг друга или дополняют)
21 май 18, 12:41    [21425523]     Ответить | Цитировать Сообщить модератору
 Re: OBIEE Сложная (или не очень) формула на на бизнес уровне в репозитории или...  [new]
menja_zovut_deniska
Member

Откуда:
Сообщений: 47
terna,

Спасибо за ответ, но "Первым делом нужно сделать таблицы измерения для "документ" и "пользователь""
- не получится, потому что членов измерений может быть несколько миллионов, а самих измерений пару десятков(это детальные данные в реляционной таблице).


Похоже это я перемудрил и нужно было не самому пытаться разрулить, какую стоимость показывать, а смапить их и дать движку BI возможность выбрать источник))

Но получить ответ на вопрос уже не рамках этой задачи было бы интересно
Возможно ли построить логику на бизнес уровне, чтобы
"Отображать значение показателя Стоимость(essbase), если не выбраны показатели Пользователь или Документ и отображать значение показателя Стоимость(рел БД), если какой-либо из этих показателей выбран"
21 май 18, 13:22    [21425687]     Ответить | Цитировать Сообщить модератору
 Re: OBIEE Сложная (или не очень) формула на на бизнес уровне в репозитории или...  [new]
terna
Member

Откуда:
Сообщений: 102
menja_zovut_deniska,

ок, но по идее, если делать всё "по науке", то все же для каждого такого измерения надо на логическом уровне делать таблицу-измерение. Как вариант для случая с большим количеством записей и фактическим отсутствием соответствующего справочника в качестве такового предлагают использовать повторно сам факт (можно погуглить по degenerate dimention).

Но так-то должно работать и всё то же самое, но без справочников, если сделать один показатель с источником в двух разных физических таблицах (просто указать источники в правильном порядке сначала более общий, потом более детальный, на случай, если в общем не нашёл всех показателей, можно также явно указать приоритет источников).

А для двух разных показателей по идее вариант только с ifnull, но он и правда пойдёт с запросами в обе таблицы сразу.
21 май 18, 17:42    [21426769]     Ответить | Цитировать Сообщить модератору
 Re: OBIEE Сложная (или не очень) формула на на бизнес уровне в репозитории или...  [new]
terna
Member

Откуда:
Сообщений: 102
menja_zovut_deniska,

почему заостряю внимание на том, как "по науке", потому что опыт показывает, что вот вариант попроще вроде работает, а потом получаешь проблемы откуда не ждали (то считается не совсем правильно, то агрегируется не так), и каждый раз непредсказуемо это всплывает именно из-за того, что где-то "перехитрил" систему и дальше продолжаются костыли) но это, наверное, у всех так)
21 май 18, 17:46    [21426786]     Ответить | Цитировать Сообщить модератору
 Re: OBIEE Сложная (или не очень) формула на на бизнес уровне в репозитории или...  [new]
menja_zovut_deniska
Member

Откуда:
Сообщений: 47
Спасибо за ссылку на degenerate dimention
Интересно
24 май 18, 15:12    [21436806]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить