0

我正在为我们的销售和营销部门开发数据集市,我遇到了建模挑战。我们的 ERP 以几种不同的方式存储定价数据:

  1. 列出每个项目的定价
  2. 产品线的定价折扣百分比,适用于客户组或特定客户
  3. 商品的自定义价格,适用于客户组或特定客户

定价部门主要使用这些数据进行操作,而不是分析。例如,他们为客户生成报告(“我有哪些特殊定价/折扣 %s?”),并确定当他们采用新的定价策略时需要更改哪些项目/项目组。

定价变化在一定程度上定期发生在小范围内,通常是在逐个客户或逐个项目的基础上进行。除了客户级别的折扣外,很少有对清单定价和团体定价(折扣和单个项目)进行大规模调整。

我一直在创建一个或多个事实表来表示这个过程。不幸的是,没有预先存在的定价业务密钥。也没有具体的“交易日期”,因为 ERP 没有(准确地)维护定价何时更改的记录。本质上,“定价事件”将是以下各项的组合:

  1. 生效日期
  2. 结束日期
  3. 项目或产品线
  4. (标价不需要)客户或客户群
  5. 价格金额或折扣百分比

单个事实表似乎有问题,因为我将不得不处理大量无效的维度和事实组合。首先,一条记录永远不会同时具有非 NULL 价格金额和非 NULL 折扣百分比;定价事件是非此即彼。其次,只有特定的维度组合对每个事实有效。例如,折扣百分比只会有一个产品线,而不是单个项目。

首先将定价建模为事实表是否有意义?如果是这样,我应该考虑多少张桌子?我的直觉是至少使用两个,一个用于百分比,一个用于价格金额,但这仍然会留下一个问题,即每条记录要么有一个有效的客户组,要么有一个有效的客户(或者都没有,对于标价),因为我们需要将客户特定的定价与客户可能拥有的任何团体定价分开。

4

1 回答 1

1

您可能需要将它们作为属性和事实来保存。

  1. 某件商品的售价是事实。当您将其乘以销售量时,它实际上是一种附加量度。所以,把它放在事实表中。应用的总折扣也是累加的,我会保留它。您稍后可以查询“2019 年每位客户打折了多少”,如果没有这些事实,这将更难实现。

  2. 但是如果你还需要查询“客户X打折是多少”之类的,那么你也应该把它作为客户维度的一个属性,把它当作II类维度,这样就可以保留折扣历史。如果您知道何时应用了某个折扣,那很好,如果不将第一次销售作为开始日期,那么您将不会太远。

  3. 也许标价也可以作为产品或产品线的属性保留在一个维度中,但前提是它们不要太频繁地变化;但是,如果大多数客户无论如何都能获得折扣,那将是有限的。

于 2019-11-20T14:41:35.807 回答