powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Неаддитивные меры в хранилище
20 сообщений из 20, страница 1 из 1
Неаддитивные меры в хранилище
    #39604800
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, есть задача добавить в хранилище данных неаддитивные факты в виде долей (%) в виде нескольких разрезов:
Дата-Товар-Доля
Квартал-Товар-Доля
Дата-Товарная группа-Доля
Квартал-Товарная группа-Доля

Товары входят в товарные группы, а месяца в кварталы, но доли друг с другом никак не связаны и высчитать квартал из месяцев и товарную группу из товаров не получится.
Как лучше реализовать это в хранилище?
У меня 2 варианта решения-они в конце поста.
1). сделать таблицу в виде:(
Дата; Квартал; Товар ID; Товар; Товарная группа; Индекс Дистрибуции SKU/Дата; Индекс Дистрибуции Товарная группа/Дата; Индекс Дистрибуции Товарная группа/Квартал; Индекс Дистрибуции SKU/Квартал)
но данные в разрезе квартала и товарных групп будут дублироваться.
2). сделать таблицу в виде:( Период; Тип периода; Товар/Группа; Тип группы; Индекс дистрибуции),
добавив еще 2 справочника : тип периода-месяц/квартал и тип товара -Тип группы.
Строки дублироваться не будут, но сложнее будет писать представления для OLAP.

Как лучше поступить?

Факты для загрузки берутся из внешних систем и ничего с ними сделать нельзя:
Примеры данных для загрузки:

Квартал-Товарная группа-Доля

Квартал Товарная группа Индекс Дистрибуции Товарная группа/Квартал
1Q2017 Фрукты 20%
2Q2017 Фрукты 30%
1Q2017 Фрукты 40%
2Q2017 Фрукты 50%
1Q2017 Овощи 60%
2Q2017 Овощи 70%
1Q2017 Овощи 80%
2Q2017 Овощи 90%

---------------------------------------------------------
Дата-Товарная группа-Доля

Дата Товарная группа Индекс Дистрибуции Товарная группа/Дата
01.01.2017 Фрукты 15%
01.02.2017 Фрукты 20%
01.03.2017 Фрукты 25%
01.04.2017 Фрукты 30%
01.05.2017 Фрукты 35%
01.06.2017 Фрукты 40%
01.01.2017 Фрукты 45%
01.02.2017 Фрукты 50%
01.03.2017 Фрукты 55%
01.04.2017 Фрукты 60%
01.05.2017 Фрукты 65%
01.06.2017 Фрукты 70%
01.01.2017 Овощи 3%
01.02.2017 Овощи 5%
01.03.2017 Овощи 7%
01.04.2017 Овощи 9%
01.05.2017 Овощи 11%
01.06.2017 Овощи 13%
01.01.2017 Овощи 15%
01.02.2017 Овощи 17%
01.03.2017 Овощи 19%
01.04.2017 Овощи 21%
01.05.2017 Овощи 23%
01.06.2017 Овощи 25%

------------------------------------------------------------------------------
Квартал-Товар-Доля

Квартал Товар ID Товар Индекс Дистрибуции SKU/Квартал
1Q2017 1 Яблоко 25%
2Q2017 1 Яблоко 35%
2Q2017 2 Груша 35%
1Q2017 2 Груша 45%
2Q2017 2 Груша 55%
1Q2017 3 Кабачек 65%
2Q2017 3 Кабачек 75%
1Q2017 4 Морковь 85%
2Q2017 4 Морковь 95%


Дата-Товар-Доля

Дата Товар ID Товар Индекс Дистрибуции SKU/Дата
01.01.2017 1 Яблоко 10%
01.02.2017 1 Яблоко 11%
01.03.2017 1 Яблоко 12%
01.04.2017 1 Яблоко 13%
01.05.2017 1 Яблоко 14%
01.06.2017 2 Груша 15%
01.01.2017 2 Груша 16%
01.02.2017 2 Груша 17%
01.03.2017 2 Груша 18%
01.04.2017 2 Груша 19%
01.05.2017 2 Груша 20%
01.06.2017 2 Груша 21%
01.01.2017 3 Кабачек 22%
01.02.2017 3 Кабачек 23%
01.03.2017 3 Кабачек 24%
01.04.2017 3 Кабачек 25%
01.05.2017 3 Кабачек 26%
01.06.2017 3 Кабачек 27%
01.01.2017 4 Морковь 28%
01.02.2017 4 Морковь 29%
01.03.2017 4 Морковь 30%
01.04.2017 4 Морковь 31%
01.05.2017 4 Морковь 32%
01.06.2017 4 Морковь 33%
----------------------------------------------------------------------------

Должно получится:
Вариант 1

Дата Квартал Товар ID Товар Товарная группа Индекс Дистрибуции SKU/Дата Индекс Дистрибуции Товарная группа/Дата Индекс Дистрибуции Товарная группа/Квартал Индекс Дистрибуции SKU/Квартал
01.01.2017 1Q2017 1 Яблоко Фрукты 10% 15% 20% 25%
01.02.2017 1Q2017 1 Яблоко Фрукты 11% 20% 20% 25%
01.03.2017 1Q2017 1 Яблоко Фрукты 12% 25% 20% 25%
01.04.2017 2Q2017 1 Яблоко Фрукты 13% 30% 30% 35%
01.05.2017 2Q2017 1 Яблоко Фрукты 14% 35% 30% 35%
01.06.2017 2Q2017 2 Груша Фрукты 15% 40% 30% 35%
01.01.2017 1Q2017 2 Груша Фрукты 16% 45% 40% 45%
01.02.2017 1Q2017 2 Груша Фрукты 17% 50% 40% 45%
01.03.2017 1Q2017 2 Груша Фрукты 18% 55% 40% 45%
01.04.2017 2Q2017 2 Груша Фрукты 19% 60% 50% 55%
01.05.2017 2Q2017 2 Груша Фрукты 20% 65% 50% 55%
01.06.2017 2Q2017 2 Груша Фрукты 21% 70% 50% 55%
01.01.2017 1Q2017 3 Кабачек Овощи 22% 3% 60% 65%
01.02.2017 1Q2017 3 Кабачек Овощи 23% 5% 60% 65%
01.03.2017 1Q2017 3 Кабачек Овощи 24% 7% 60% 65%
01.04.2017 2Q2017 3 Кабачек Овощи 25% 9% 70% 75%
01.05.2017 2Q2017 3 Кабачек Овощи 26% 11% 70% 75%
01.06.2017 2Q2017 3 Кабачек Овощи 27% 13% 70% 75%
01.01.2017 1Q2017 4 Морковь Овощи 28% 15% 80% 85%
01.02.2017 1Q2017 4 Морковь Овощи 29% 17% 80% 85%
01.03.2017 1Q2017 4 Морковь Овощи 30% 19% 80% 85%
01.04.2017 2Q2017 4 Морковь Овощи 31% 21% 90% 95%
01.05.2017 2Q2017 4 Морковь Овощи 32% 23% 90% 95%
01.06.2017 2Q2017 4 Морковь Овощи 33% 25% 90% 95%
-------------------------------------------
Или Вариант2

Период Тип периода Товар/Группа Тип группы Индекс дистрибуции
1Q2017 Квартал Фрукты Группа 20%
2Q2017 Квартал Фрукты Группа 30%
1Q2017 Квартал Фрукты Группа 40%
2Q2017 Квартал Фрукты Группа 50%
1Q2017 Квартал Овощи Группа 60%
2Q2017 Квартал Овощи Группа 70%
1Q2017 Квартал Овощи Группа 80%
2Q2017 Квартал Овощи Группа 90%
01.01.2017 Месяц Фрукты Группа 15%
01.02.2017 Месяц Фрукты Группа 20%
01.03.2017 Месяц Фрукты Группа 25%
01.04.2017 Месяц Фрукты Группа 30%
01.05.2017 Месяц Фрукты Группа 35%
01.06.2017 Месяц Фрукты Группа 40%
01.01.2017 Месяц Фрукты Группа 45%
01.02.2017 Месяц Фрукты Группа 50%
01.03.2017 Месяц Фрукты Группа 55%
01.04.2017 Месяц Фрукты Группа 60%
01.05.2017 Месяц Фрукты Группа 65%
01.06.2017 Месяц Фрукты Группа 70%
01.01.2017 Месяц Овощи Группа 3%
01.02.2017 Месяц Овощи Группа 5%
01.03.2017 Месяц Овощи Группа 7%
01.04.2017 Месяц Овощи Группа 9%
01.05.2017 Месяц Овощи Группа 11%
01.06.2017 Месяц Овощи Группа 13%
01.01.2017 Месяц Овощи Группа 15%
01.02.2017 Месяц Овощи Группа 17%
01.03.2017 Месяц Овощи Группа 19%
01.04.2017 Месяц Овощи Группа 21%
01.05.2017 Месяц Овощи Группа 23%
01.06.2017 Месяц Овощи Группа 25%
1Q2017 Квартал Яблоко Товар 25%
2Q2017 Квартал Яблоко Товар 35%
2Q2017 Квартал Груша Товар 35%
1Q2017 Квартал Груша Товар 45%
2Q2017 Квартал Груша Товар 55%
1Q2017 Квартал Кабачек Товар 65%
2Q2017 Квартал Кабачек Товар 75%
1Q2017 Квартал Морковь Товар 85%
2Q2017 Квартал Морковь Товар 95%
01.01.2017 Месяц Яблоко Товар 10%
01.02.2017 Месяц Яблоко Товар 11%
01.03.2017 Месяц Яблоко Товар 12%
01.04.2017 Месяц Яблоко Товар 13%
01.05.2017 Месяц Яблоко Товар 14%
01.06.2017 Месяц Груша Товар 15%
01.01.2017 Месяц Груша Товар 16%
01.02.2017 Месяц Груша Товар 17%
01.03.2017 Месяц Груша Товар 18%
01.04.2017 Месяц Груша Товар 19%
01.05.2017 Месяц Груша Товар 20%
01.06.2017 Месяц Груша Товар 21%
01.01.2017 Месяц Кабачек Товар 22%
01.02.2017 Месяц Кабачек Товар 23%
01.03.2017 Месяц Кабачек Товар 24%
01.04.2017 Месяц Кабачек Товар 25%
01.05.2017 Месяц Кабачек Товар 26%
01.06.2017 Месяц Кабачек Товар 27%
01.01.2017 Месяц Морковь Товар 28%
01.02.2017 Месяц Морковь Товар 29%
01.03.2017 Месяц Морковь Товар 30%
01.04.2017 Месяц Морковь Товар 31%
01.05.2017 Месяц Морковь Товар 32%
01.06.2017 Месяц Морковь Товар 33%
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604805
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. Таких фактов в хранилище будет ~30 млн. строк.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604811
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подумайте над тем, чтобы сделать это в кубе
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604822
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критик,

Эти данные потом и будут использоваться в кубе SSAS и в SAP BI.
А мне для начала надо придумать как грамотно их закачать в хранилище, чтобы потом добавить в куб и SAP.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604884
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ondorsal,

А в чем смысл делать это в хранилище? Доли прекрасно и быстро считаются в MDX.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604899
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bideveloper,
Эти неаддитивные меры-только часть хранилища. Уже добавлены меры в упаковках и деньгах - с ними проблем нет, но требуется строить отчеты и с учетом индекса дистрибуции из единого хранилища данных. Индексы дистрибуции загружаются из внешнего поставщика данных в уже рассчитанном виде, и там наверняка рассчитываются на основе нормальных аддитивных фактов, но доступа к исходным данным у меня нет-вот и приходится выкручиваться.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604913
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ondorsal,

просто так будет невозможно ответить, например, на вопрос, какой процент дистрибуции фруктов за период от начала квартала до текущей даты.

Если же говорить про хранилище, то я бы хранил в том виде, в котором они пришли, только наименования товаров, групп, кварталов, дат заменил на соответствующие id, которые, я так понимаю уже у вас должны быть в хранилище.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604926
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bideveloper, Доли прекрасно и быстро считаются в MDX.
Да, в моем кубе доли продаж, например, города в регионе считаются на MDX, но расчет идет на основе аддитивных фактов.
А здесь, чтобы что-то посчитать-надо это "что-то" сперва осмысленно добавить в хранилище.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604947
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bideveloper,просто так будет невозможно ответить, например, на вопрос, какой процент дистрибуции фруктов за период от начала квартала до текущей даты.


На этот вопрос отвечать не нужно. Нужно данные смотреть только в этих разрезах:
Дата-Товар-Доля
Квартал-Товар-Доля
Дата-Товарная группа-Доля
Квартал-Товарная группа-Доля

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

Основной вопрос как лучше сделать?
Вариант 1-дублирующиеся строки и брать среднее по доле.
Вариант 2-без дублирующихся строк, но с 2мя дополнительными справочниками : тип периода-месяц/квартал и тип товара -Тип группы. Сложнее будет представление для OLAP куба.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604958
Полковник.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Критикподумайте над тем, чтобы сделать это в кубе

Или в отчёте.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604994
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ondorsalНо тогда факты долей по кварталам будут затраиваться, так как гранулярность месяц (3 месяца в квартале),
а факты долей по товарным группам будут дублироваться столько раз сколько товаров в соответствующей группе. так как гранулярность товар.

В SSAS не обязательно факт связывать с измерением по ключевому атрибуту.
Данные по кварталам можно связать по атрибуту квартал из измерения дата.
Данные по товарным группам - по атрибуту товарная группа из измерения товаров.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39604998
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблица фактов Квартал-Товарная группа-Доля
Связывается с измерением Дата по атрибуту Квартал и с измерением Товары по атрибуту Товарная группа

Дата-Товарная группа-Доля
Связывается с измерением Дата по атрибуту Дата и с измерением Товары по атрибуту Товарная группа

Квартал-Товар-Доля
Связывается с измерением Дата по атрибуту Квартал и с измерением Товары по атрибуту Товар (id товара)

Дата-Товар-Доля
Связывается с измерение Дата по атрибуту Дата и с измерением Товары по атрибуту Товар (id товара)
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39605009
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bideveloperondorsalНо тогда факты долей по кварталам будут затраиваться, так как гранулярность месяц (3 месяца в квартале),
а факты долей по товарным группам будут дублироваться столько раз сколько товаров в соответствующей группе. так как гранулярность товар.

В SSAS не обязательно факт связывать с измерением по ключевому атрибуту.
Данные по кварталам можно связать по атрибуту квартал из измерения дата.
Данные по товарным группам - по атрибуту товарная группа из измерения товаров.

Я так и хочу связать по ID товара и Дате.
Склоняюсь к варианту: 4 выгрузки в 4 таблицы фактов+представление, объединяющее их в одну.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39605016
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ondorsal+представление, объединяющее их в одну.
Зачем?
Если сделаете как я написал выше, то уже в одном отчете сможете вывести все показатели.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39605019
bideveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А из 4-х мер долей в разных разрезах (Товар, Дата), (Товар, Квартал), (Товарная группа, Дата), (Товарная группа, Квартал) можно для удобства сделать одну вычисляемую меру Индекс дистрибуции. Которая будет показывать нужный индекс в зависимости от атрибутов измерений, выбранных в отчете.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39605303
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ondorsal .Индексы дистрибуции загружаются из внешнего поставщика данных в уже рассчитанном виде, и там наверняка рассчитываются на основе нормальных аддитивных фактов, но доступа к исходным данным у меня нет-вот и приходится выкручиваться.

так "Индексы" или "доли"?

Хотя не важно, на вашем месте из неаддитивных сделал аддективные, и хранил бы именно их. как показывает практика, так будет проще в работе с ними
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39605312
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ondorsalКоллеги, есть задача добавить в хранилище данных неаддитивные факты в

Квартал Товарная группа Индекс Дистрибуции Товарная группа/Квартал
1Q2017 Фрукты 20%
1Q2017 Овощи 80%
---------------------------------------------------------


а может у вас данные все таки вполне себе аддективные? и тогда храним как есть, а не морочим голову коллегам :)
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39605313
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StarikNavyтак "Индексы" или "доли"?

Да, путаница вышла - это доли. Индексы дистрибуции - это термин, который дает название этим долям, измеряющийся в процентах.

StarikNavyХотя не важно, на вашем месте из неаддитивных сделал аддективные, и хранил бы именно их. как показывает практика, так будет проще в работе с ними

Согласен, но выгрузить аддитивные исходники и посчитать доли (Индексы дистрибуции) на их основе не представляется возможным.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39605320
ondorsal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bideveloperА из 4-х мер долей в разных разрезах (Товар, Дата), (Товар, Квартал), (Товарная группа, Дата), (Товарная группа, Квартал) можно для удобства сделать одну вычисляемую меру Индекс дистрибуции. Которая будет показывать нужный индекс в зависимости от атрибутов измерений, выбранных в отчете.

bideveloperЕсли сделаете как я написал выше, то уже в одном отчете сможете вывести все показатели.

Спасибо, попробую так.
...
Рейтинг: 0 / 0
Неаддитивные меры в хранилище
    #39605428
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ondorsal,

были похожие решения, финансовые показатели расчитываемые другой системой (корреляции, ковариации длинных цепей между чёрт знает чем, и пр. статистика за периоды которую SQL/VBA/MDX функциями не посчитаешь, или ну очень медленно расчёт в живую будет).

Т.е. куб использоволся только ради быстрого доступа - из UI запрос поступал в виде нужного набора системы координат в многомерном пространстве.

Меры в nonagregatable (aggrregation usage = none , null processing = preserve - т.к. много мер было, некоторые поставлялись а некоторые нет, иначе null станет = 0 что не верно), ключ на измерение по дате и храним тоже как дату- первое число квартала а не сам квартал, только добавляем ещё одно поле которое у тебя как тип периода (лучше сделать tinyint индикатор - уровень)
потом scope где на даты пишем уровень 0, на месяцы уровень 1, на кварталы уровень 2 и т.д.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Неаддитивные меры в хранилище
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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