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

Откуда:
Сообщений: 26
Всем доброго времени суток.

Есть таблица фактов в которой хранится информация по применяемым скидкам в заказах покупателя.
Причем на один товар могут одновременно применяться несколько скидок.
Например, в заказе №12:
на товар1 в кол-ве 50 шт применяются скидки: Скидка1 - 5%, Скидка2 - 8% и Скидка3 - 2%
на товар2 в кол-ве 80 шт применяются скидки: Скидка1 - 5%, Скидка2 - 8%

OrderID Item Qty BasePrice TotalSum DiscountType Discount_% Discount_Sum
12 Товар1 50 1000 50000 Скидка1 5 2500
12 Товар1 50 1000 50000 Скидка2 8 4000
12 Товар1 50 1000 50000 Скидка3 2 1000
12 Товар2 80 1000 80000 Скидка1 5 4000
12 Товар2 80 1000 80000 Скидка2 8 6400

Если построить куб, то мера Qty просуммируется и получим результат на уровне товара1 - 150шт, на уровне Товар2 - 160шт, а на уровне заказа по всем товарам получим 310шт, хотя по факту в заказе было всего 130шт.

Посоветуйте как лучше реализовать задачу, с учетом того, что в конечном итоге необходимо определить стоимость товара с учетом всех скидок.
Заранее спасибо!
19 июн 17, 09:19    [20573702]     Ответить | Цитировать Сообщить модератору
 Re: Расчет CM в зависимости от выбранного измерения  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 1516
Kopilogus,

прочитайте про м2м
у учебной базе есть хороший пример для понимания
19 июн 17, 12:21    [20574163]     Ответить | Цитировать Сообщить модератору
 Re: Расчет CM в зависимости от выбранного измерения  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 30249
Блог
Kopilogus,

считайте в хранилище
19 июн 17, 12:56    [20574327]     Ответить | Цитировать Сообщить модератору
 Re: Расчет CM в зависимости от выбранного измерения  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1922
StarikNavy
прочитайте про м2м

о чем читать? тут не m2m, тут 2 факта с разной гранулярностью.
либо бить на 2 группы мер (это предпочительнее, т.к. есть несколько мер),
либо расшивать факты
типа:
OrderIDItemTrnTypeQtyBasePriceSumDiscount_%
12Товар1Продажа501000500000
12Товар1Скидка100-25005
12Товар1Скидка200-40008
12Товар1Скидка300-10002
12Товар2Продажа801000800000
12Товар2Скидка100-40005
12Товар2Скидка200-64008
19 июн 17, 13:15    [20574433]     Ответить | Цитировать Сообщить модератору
 Re: Расчет CM в зависимости от выбранного измерения  [new]
vborets
Member

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

переделайте таблицу, если возможно, так:

OrderID Item Qty BasePrice TotalSum Discount_%_1 Discount_Sum_1 Discount_%_2 Discount_Sum_2 Discount_%_3 Discount_Sum_3



Если невозможно, то используйте Scope и вычисляемые меры как максимальное значение.
19 июн 17, 15:29    [20574962]     Ответить | Цитировать Сообщить модератору
 Re: Расчет CM в зависимости от выбранного измерения  [new]
bideveloper
Member

Откуда:
Сообщений: 60
Сделать два представления
1.
OrderID Item Qty BasePrice TotalSum
12 Товар1 50 1000 50000
12 Товар2 80 1000 80000
2.
OrderID Item DiscountType Discount_% Discount_Sum
12 Товар1 Скидка1 5 2500
12 Товар1 Скидка2 8 4000
12 Товар1 Скидка3 2 1000
12 Товар2 Скидка1 5 4000
12 Товар2 Скидка2 8 6400

По первому представления будет мера Сумма
19 июн 17, 17:32    [20575564]     Ответить | Цитировать Сообщить модератору
 Re: Расчет CM в зависимости от выбранного измерения  [new]
bideveloper
Member

Откуда:
Сообщений: 60
По второму Скидка
Сумму с учетом скидки сделать как вычисляемую меру Сумма - Скидка.
Если нужно анализировать суммы продаж в разрезе типов скидок, то настраиваем м2м через представление скидок к представлению продаж.
19 июн 17, 17:34    [20575571]     Ответить | Цитировать Сообщить модератору
 Re: Расчет CM в зависимости от выбранного измерения  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1922
bideveloper
... то настраиваем м2м через представление скидок к представлению продаж.

покажите где здесь m2m.
По Вашему между Товаром и Датой тогда тоже m2m!!!

Конкретный Заказ имеет несколько Продаж товаров - да
Конкретная Продажа товара имеет несколько Заказов - нет
Конкретный Заказ имеет несколько Скидок на товар - да
Конкретная Скидка на товар имеет несколько Заказов - нет
ну и транзитивность
Конкретная Продажа товара имеет несколько Скидок на товар - да
Конкретная Скидка на товар имеет несколько Продаж товара - НЕТ

Вот если бы была скидка не только на позицию в заказе но и на заказ в целом....
20 июн 17, 12:51    [20577126]     Ответить | Цитировать Сообщить модератору
 Re: Расчет CM в зависимости от выбранного измерения  [new]
bideveloper
Member

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

Тип скидки относится к нескольким строкам заказов и одна строка заказа может относится к нескольким типам скидок.
Например, нужен отчет по продажам и скидкам в разрезе типов скидок Скидка1 и Скидка3

Если делать без настройки связи многие ко многим (с таблицей фактов, как в исходном примере, то будет так)
DiscountType Qty TotalSum Discount_Sum
Скидка 1 130 130000 6500
Скидка 3 50 50000 1000
Итог 180 180000 7500

Если сделать, как я предложил, то будет так
DiscountType Qty TotalSum Discount_Sum
Скидка 1 130 130000 6500
Скидка 3 50 50000 1000
Итог 130 130000 7500
20 июн 17, 14:38    [20577614]     Ответить | Цитировать Сообщить модератору
 Re: Расчет CM в зависимости от выбранного измерения  [new]
bideveloper
Member

Откуда:
Сообщений: 60
Еще поясню для полной ясности )
Строка заказа != строка в таблице фактов у автора
Строка 1 заказа у автора представлена 3-мя строками в таблице фактов и относится к 3-м типам скидок.
Строка 2 заказа представлена 2-мя строками в таблице фактов и относится к 2-м типам скидок.
20 июн 17, 14:46    [20577650]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить