Sql server 同一事实表列;有多种原因的记录

Sql server 同一事实表列;有多种原因的记录,sql-server,data-warehouse,business-intelligence,Sql Server,Data Warehouse,Business Intelligence,我的处境与以下类似: 例如,我们需要将客户销售存储在事实表中(在使用维度建模构建的数据仓库下)。我有要存储的销售、与销售相关的折扣、销售退货和取消 您认为将某一特定产品一天的销售额(当这一天是谷物时)存储为正值,而将退货和折扣存储为负值是明智的吗 此外,如果在产品(例如品牌)以外的级别对客户实施折扣,您认为是否可以使用指定给品牌(产品是谷物)的键来持续折扣,同时为特定记录的产品列指定N/a 提前谢谢 如果你的销售额被认为是一件好事(我想是的),那么将销售额记录为正数是非常有意义的。因此,任何减少

我的处境与以下类似:

例如,我们需要将客户销售存储在事实表中(在使用维度建模构建的数据仓库下)。我有要存储的销售、与销售相关的折扣、销售退货和取消

您认为将某一特定产品一天的销售额(当这一天是谷物时)存储为正值,而将退货和折扣存储为负值是明智的吗

此外,如果在产品(例如品牌)以外的级别对客户实施折扣,您认为是否可以使用指定给品牌(产品是谷物)的键来持续折扣,同时为特定记录的产品列指定N/a


提前谢谢

如果你的销售额被认为是一件好事(我想是的),那么将销售额记录为正数是非常有意义的。因此,任何减少销售额(即折扣和退货)的交易应记录为负数。这将使你的销售报告非常自然


如果您有可能解释记录的不同维度,则应该填充有意义的维度。所以,是的,如果在你的商业交易中发生了这样的事情,那就把折扣归因于品牌而不是产品。这样,您的报告将能够查看所有折扣、特定产品的折扣和整个品牌的折扣。如果您的事实表显示了折扣(产品或品牌)的最直接“原因”,那么您的报告将比通过与产品的关系将事实与品牌联系起来更有用。

Hi@Joel,非常感谢。实际上,我在同一尺寸表中有产品、品牌等。我的计划是在同一个表中给品牌一个单独的键,并在事实表中使用它(因为我们使用智能键来保存与时间相关的记录,如每月记录)。您认为在事实表中将某些外键列(如productkey)保留为N/A可以吗(因为没有对应的产品而不是品牌)?如果事实是独立于产品的折扣(即在品牌级别),则我认为产品保留N/A是可以的。你会希望有一些其他的方式将折扣与具体的销售挂钩,这样你就可以专注于产品问题。您的原始事实表可以很容易地回答折扣的来源,但您还需要能够回答“我们对产品X的折扣有多少(出于任何原因)?”这就是为什么使用PK/FK关系将折扣与销售联系起来很重要的原因。不管有什么折扣,原始销售都会有一个产品。谢谢@Joel,明白了。我可能需要做一些设计上的改变。