数据仓库-维度建模

| 我是BI / Datawarehousing的新手,在构建了一些简单的示例之后,我需要构建一个更复杂的结构。我的项目最初涉及产品许可证,并且我按月/年和按计划衡量了售出的数量,并且仅计算了许可证的数量。 现在的要求是引入那些度量标准。例如,当您进入一组特定的许可证时,他们希望查看这些许可证的完全不同的指标。例如,如果在2011年3月售出100个许可证,则安装,激活和取消了产品数量。 (我们跟踪该信息,但不在DW中跟踪)。因此,我正在寻找执行此操作的最佳方法...我假设要做的第一件事是为安装,激活和取消添加三个维度-并具有三个事实表?还是每个许可证都有一个事实表,并且有一行要取消,安装或激活? (因此可以重复一份许可)。还是有一个事实表,其中有用于安装,取消和激活的不同字段?另外,您如何将一个事实表与另一个事实表关联?是通过维度还是它们可以通过其他方式关联? 任何帮助将非常感激! 编辑: 感谢您的帖子...我也想第二种选择可能是正确的选择。但是在这个实现中,我有一个独特的问题。因此,可以衡量的事实之一是出售许可证的数量-当然是按日期划分的。可以说我为安装,取消,激活添加了一行。要求他们能够看到关联的事实。例如,如果在给定的时间范围内添加单独的行,则可以告诉我售出了多少,安装了多少。 但是他们希望看到在特定的时间范围内购买了多少,在其中购买了多少。例如,如果时间表是三月,并且三月份售出了100个,那么在这100个中,有多少个已安装-即使它们的安装时间可能比游行晚得多,因此行日期不在他们正在查找的时间范围内at ....这是常见问题吗?如何解决?     
已邀请:
我假设我要做的第一件事是为安装,激活和取消添加三个维度-并具有三个事实表? 并不是的。许可证销售是事实。它有价格。 许可证销售具有日期,产品,客户和程序等维度。 \“安装\”或\“激活\”是许可证的状态更改事件。每个许可证都有“事件”(销售,安装,激活等)。 因此,许可证具有一个“出售”事实,一个“安装”事实以及一个“激活”事实。每个(至少)是与时间的关系。   还是每个许可证都有一个事实表,并且有一行要取消,安装或激活? (因此可以重复一份许可)。 这提供了最大的灵活性,因为每个事件都可以具有多个维度。然后可以组织一系列事件以提供许可证的历史记录。 效果很好。 您通常会希望为简单的计数和总和创建汇总表,以省去遍历所有最常见仪表板指标的事件。   要求他们能够看到关联的事实。 对。您正在将事实表中的几行连接在一起。事件已售出的行,外部与已安装事件的行,外部与已激活事件的行连接,以此类推。这只是事实之间的外部连接。 所以。三月份的销售量很容易。事件= \“销售\”。时间是time.month = \“ march \”的所有行。简单。 成为安装的3月的销售数量。相同的\“ march sales \” where子句external与这些许可证的所有\“ install \”事件一起加入。 \“ sales \”的计数与count(*)相同。安装次数可能会少一些,因为外部联接将一些空值放入。 进入激活状态的三月销售额。 \“ march sales \” where子句外部与所有\“ activation \”事件一起加入。请注意,激活没有日期限制。   还是有一个事实表,其中有用于安装,取消和激活的不同字段? 由于表的列决定了业务流程,因此效果也不佳。该业务流程可能会更改,您将无休止地调整事实表中的列。 说过它“不能很好地解决”,意味着它没有最大的灵活性。在某些情况下,您不需要最终的灵活性。在某些情况下,行业(或法规)可能会定义非常固定的结构。   另外,您如何将一个事实表与另一个事实表关联?是通过维度还是它们可以通过其他方式关联? 根据定义的尺寸。事实表只有两件事-尺寸和尺寸的FK。 某些维(例如“许可证实例”)是退化的,因为维除了PK之外几乎没有可用的属性。 因此,您有一个与许可证相关联的“已售出”事实,一个与许可证相关联的可选“已安装”事实以及一个与许可证相关联的可选“激活”事实。许可证是一个对象ID(数据库代理密钥),并且可能是许可证标识符本身(可能是许可证序列号或数据库外部的某物)。 在执行任何其他操作之前,请使用Ralph Kimball的数据仓库工具包。     

要回复问题请先登录注册