【问题标题】:Same Fact Table Column; Records with Multiple Reasons相同的事实表列;多因记录
【发布时间】:2011-06-06 11:38:39
【问题描述】:

我的情况类似于以下情况:

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

您是否认为将特定产品(当一天是粮食)向客户的一天销售额存储为正值,而将退货和折扣存储为负值是否可取?

此外,如果在产品以外的其他级别(例如品牌)对客户强制执行折扣,您认为是否可以使用专门分配给品牌的密钥(产品是谷物)来坚持它,而对于特定记录,product 列被指定为 N/A?

提前致谢。

【问题讨论】:

    标签: sql-server data-warehouse business-intelligence


    【解决方案1】:

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

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

    【讨论】:

    • 嗨@Joel,非常感谢。实际上,我在同一个维度表中有产品、品牌等。我的计划是在同一个表本身中给品牌一个单独的键,并在事实表中使用它(因为我们使用智能键来持久化与时间相关的记录,例如每月的记录)。您认为在事实表中将某些外键列(例如 productkey)保留为 N/A 是否可以(因为没有对应的产品而是品牌)?
    • 如果事实是与产品无关的折扣(即在品牌层面),那么我认为产品的 N/A 会很好。您将希望通过其他方式将折扣与特定销售联系起来,以便您专注于产品问题。您的原始事实表可以很容易地回答折扣来自哪里,但您还需要能够回答“我们对产品 X 打了多少折扣(出于任何原因)?”这个问题。这就是为什么使用 PK/FK 关系将折扣与销售联系起来很重要的原因。无论折扣如何,原始销售将始终有产品。
    • 谢谢@Joel,明白了。我可能需要做一些设计更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2014-10-30
    相关资源
    最近更新 更多