Цена за единицу и скидки - Таблица фактов или размеров

Я работаю над витриной для наших отделов продаж и маркетинга и столкнулся с проблемой моделирования. Наша ERP хранит данные о ценах несколькими способами:

  1. Перечислите цены для каждого товара
  2. Процент скидки от прейскурантных цен для линейки продуктов для групп клиентов или для конкретной учетной записи.
  3. Специальная цена на товар для групп клиентов или для конкретной учетной записи.

Отдел ценообразования в первую очередь использует эти данные в оперативных целях, а не в аналитических целях. Например, они создают отчеты для клиентов («Какая у меня специальная цена /% скидки?») И определяют, какие товары / группы товаров необходимо изменить, когда они используют новую стратегию ценообразования.

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

Моя голова была в создании одной или нескольких таблиц фактов для представления этого процесса. К сожалению, уже не существует бизнес-ключа для ценообразования. Также не существует конкретной «даты транзакции», поскольку ERP не ведет (точно) записи об изменении цен. По сути, «ценовое событие» будет представлять собой комбинацию:

  1. Дата вступления в силу
  2. Дата окончания
  3. Товар ИЛИ продуктовая линейка
  4. (Не требуется для прейскурантной цены) клиент или группа клиентов
  5. Сумма цены ИЛИ процент скидки

Единая таблица фактов кажется проблематичной, поскольку мне придется иметь дело с множеством недопустимых комбинаций измерений и фактов. Во-первых, в записи никогда не будет ни суммы цены, не равной NULL, ни процентной ставки скидки, отличной от NULL; ценовые события - либо-либо. Во-вторых, для каждого факта действительны только определенные комбинации измерений. Например, процент скидки всегда будет иметь только линейку продуктов, а не отдельный товар.

Имеет ли смысл моделировать ценообразование в виде таблицы фактов? Если да, то сколько столов мне следует рассмотреть? Моя интуиция состоит в том, чтобы использовать по крайней мере два, один для процентов и один для сумм цен, но это все равно оставляет проблему, когда каждая запись будет иметь либо действительную группу клиентов, либо действительного покупателя (или ни одного, для прейскурантных цен), поскольку нам необходимо поддерживать ценообразование для конкретного клиента отдельно от любых групповых цен, которые могут быть у клиента.


person cisenb    schedule 19.11.2019    source источник


Ответы (1)


Возможно, вам потребуется сохранить их как атрибуты и как факты.

  1. Цена, по которой продавалась определенная вещь, - это факт. Когда вы умножаете это количество на проданное количество, это на самом деле аддитивная мера. Так что оставьте это в таблице фактов. Применяемая общая скидка также является аддитивной, я бы оставил ее себе. Позже вы можете спросить, «сколько была скидка в 2019 году на одного покупателя», чего было бы гораздо труднее достичь без этих фактов.

  2. Но если вам также нужно запросить такие вещи, как «какая скидка используется клиентом X», вы также должны сохранить это как атрибут измерения клиента и рассматривать его как измерение типа II, чтобы сохранить историю скидок. Если вы знаете, когда была применена определенная скидка, отлично, если не примите первую продажу в качестве даты начала, и вы не будете слишком далеко.

  3. Возможно, прейскурантную цену также можно сохранить как атрибут продукта или линейки продуктов в измерении, но только если они не меняются слишком часто; но если большинство клиентов все равно получат скидки, от этого будет мало пользы.

person nsousa    schedule 20.11.2019
comment
Расширенная цена фактически хранится в таблицах фактов «Заказы» и «Счета-фактуры», поэтому мы можем рассчитывать такие вещи, как средняя цена продажи. Проблема с сохранением цены в таблице «Покупатель» состоит в том, что цена представляет собой комбинацию размерных атрибутов: цена покупателя на конкретный товар, скидка покупателя на конкретную линейку продуктов и т. Д. То же самое относится к таблице «Предметы», за исключением Прейскурантная цена, так как вам нужна цена за клиента или за группу клиентов. - person cisenb; 20.11.2019
comment
если скидки и цены относятся к конкретным покупателям и продуктам, их следует сохранить в таблице фактов. его следует хранить в таблице клиентов только в том случае, если его значения зависят только от клиента и никакие другие факторы. Альтернативой может быть таблица фактов, содержащая комбинации покупатель / продукт и их соответствующие цены, даты вступления в силу, скидки и т. Д., Однако анализ может стать сложным. - person nsousa; 21.11.2019