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

Откуда:
Сообщений: 146
Добрый день, уважаемые!
Помогите разобраться с проблемой.
Есть 4 физических табицы:
Справочники -
1) Календарь - Time(Дата, НазвМесяца, КодМесяцГод, Год)
2) Цвет стула - Color(ИДТипа, НазвЦвета)
3) Киоск - Kiosk(ИДКиоска, НазвКиоска)
Факты -
3) Факт работы "киоска" - KWORK(Дата, ИДКиоска,is_work(0 или 1))
4) Факт продажи стульев - KSALES(Дата, ИДКиоска, ИДТипа, ШТ)

Мне нужен вычисляемый показатель, доля продажи стульев на один приведенный магазин в разрезе цветов стульев.
sh = sum(ШТ)/(sum(is_work)/count distinct(Дата))

Встрял на расчете - sum(is_work).
Нужно, чтобы для каждого цвета стула рассчитывалось одинаковое число приведенных магазинов.
Сейчас для каждого цвета стула, считается разное количество рабочих киоско-дней, в выбранном периоде месяц...
Разные значения , получаются потому, что не во все дни продавались стулья определенного цвета, а если пустые продажи стула определенного цвета в определенный день, то и sum(is_work) пустое. И агрегат sum(is_work) за месяц получается не полный.

Как сделать, что бы агрегат sum(is_work) не зависел от наличие продаж определенного цвета в определенный день и при этом можно было делить на корректный sum(ШТ) по каждому цвету?


На BMM уровне делаю:
1) логическую таблицу (измерение) - "календарь"
2) логическое измерение - Time. Иерархия: Год -> НазвМесяца -> Дата.
3) логическая таблица (измерение) - "Киоск"
4) логическое измерение - Kiosk. Иерархия: Total -> НазвКиоска.
5) логическая таблица (измерение) - "ЦветСтула"
6) логическое измерение - ЦветСтула. Иерархия: Total -> НазвЦвета.
7) логическая таблица (факт) - "Продажи".
Логические колонки для "Продажи" без агрегации: Дата, ИДТипа, ИДКиоска.
Логические колонки для "Продажи" с агрегацией по правилу sum: ШТ, CNT_K

Логическая таблица "Продажи" имеет два Logical Table Source: KWORK и KSALES.
CNT_K мапируется к полю is_work из KWORK как есть, на вкладке content ничего не указываю.
На вкладке CNT_K levels указываю уровни Total для измерений: Kiosk и ЦветСтула.
27 янв 17, 13:24    [20153142]     Ответить | Цитировать Сообщить модератору
 Re: Oracle BI - не корректно агрегирует параметр по месяцам  [new]
Evgeny2
Member

Откуда:
Сообщений: 146
Эх.. Чувствую надо было с простого вопроса начать....
Предположим есть таблица фактов с 2 измерениями.
Как описать BMM, чтобы было три логических таблиц (измерений), и факт при этом агрегировался по всем трем измерениям.
По существующим двум измерениям, факт рассчитывался как есть на основе существующих данных.
А по третьему измерению принимал значения агрегата двух первых измерений?
27 янв 17, 16:52    [20154337]     Ответить | Цитировать Сообщить модератору
 Re: Oracle BI - не корректно агрегирует параметр по месяцам  [new]
Evgeny2
Member

Откуда:
Сообщений: 146
Есть кто смелый и отчаянный, попробовать разобраться в реализации задачки?
Мне думается можно создать отдельную logical table и туда накидать вычисляемые показатели.
Я так делал, но при разворачивании CNT_K по измерению ЦветСтула->НазвЦвета, показатель ругается.
28 янв 17, 10:47    [20156158]     Ответить | Цитировать Сообщить модератору
 Re: Oracle BI - не корректно агрегирует параметр по месяцам  [new]
max_kov
Member

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

Evgeny2,

Не могу понять физический смысл формулы sum(ШТ)/(sum(is_work)/count distinct(Дата)), мне кажется, она неверная.
Мне представляется два варианта (как минимум), в зависимости от требуемого результата:
1. Процент в среднедневных продажах, учитывая только рабочие дни магазинов:
sum(шт)/sum(is_work)/TOTAL(sum(шт)/sum(is_work)) (в знаменателе - сумма!)
2. Простая доля продаж в общем объеме:
sum(шт)/TOTAL(sum(шт))

Расчет на уровне анализа, не ВММ!
В любом случае, у меня есть подозрение, что стоит только разделить общий факт на "Продажи" и "Рабочие дни магазинов" - и все расчеты начнут работать корректно...
29 янв 17, 10:20    [20158174]     Ответить | Цитировать Сообщить модератору
 Re: Oracle BI - не корректно агрегирует параметр по месяцам  [new]
terna
Member

Откуда:
Сообщений: 76
Evgeny2,
А из какой таблицы берете count distinct(Дата) ?
есть подозрение, что из KSALES, а надо из KWORK, чтобы count distinct(Дата) не зависело от цвета стула, ну и total level для него выбрать.
30 янв 17, 10:27    [20160270]     Ответить | Цитировать Сообщить модератору
 Re: Oracle BI - не корректно агрегирует параметр по месяцам  [new]
Evgeny2
Member

Откуда:
Сообщений: 146
После долгих ковыряний, я нашел корень зла!
Проблема была в том, что я для логической колонки в качестве Sort order column, указал поле с датами.
А нужно было, указать порядковый номер месяца....
Поэтому агрегат по месяцу считался не верно - бралось значение первого дня.

Спасибо max_kov и terna за участие!
1 фев 17, 08:39    [20168367]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить