题
我是数据仓库的新手。首先,我想要精确于我的数据仓库工具包的副本是在它的方式到我的邮箱(蜗牛邮件:p)。但我已经在网上找到了所有这些东西。
我在网上找不到的是,当你似乎在DW中有一个以上的事实时是怎么做的。在我的案件(保险)中,我有没有定期发生的退款。一个客户可以拥有3个月,然后在同一月内十个。另一方面,我有“订阅费”(不确定是什么是正确的英语术语,但你得到了这一点),每月一次或每三个月都会发生。这似乎显然像我的两个独特的事实。
这两个是一种尺寸松散地耦合,如客户端或“保险产品”。现在是这两个不同的仓库,我必须制作两个不同的报告,然后连接DW之外的报告?或者有一种方法可以设计它以适应单个下降的DW。或者我应该将这两个事实结合在一起吗?我可能会在退款时丢失粒度。
一些博客,我读取的说,一个dw总是有一个事实表。其他人提到设计具有S的事实表的步骤,但如果它们之间存在链接,则没有明确的指令,或者它们只是同一DW项目的不同组件。
有人是否知道关于DW设计的那部分精确部分的一些引用?
解决方案
向后追随您的问题。
数据仓库可以有多个事实表。但是,您确实希望最小化事实表之间的连接。可以在不同的事实表中复制事实信息重复。
您提到的对象:
退款是一个事实。时间戳是退款事实的维度。
订阅费是一个事实。时间戳是订阅费法事实的维度。
退款可能不止一次。我猜测每个客户都有一个订阅费。所以看来我们到目前为止,我们有两个事实表,客户和客户退款。
如果您知道只有3次退款(例如示例),那么您将消除客户退款事实表,并在客户表中放3个退款列。
还提到保险。客户可以拥有多个政策。所以我们有一个第三个事实表。
数据仓库通常使用 star schema 设计。 Star Schema基本上是一个事实表,连接到一个或多个维度表。您可能在数据仓库中有多个明星,因为我们已经定义了3个事实表。
其他提示
我意识到我在回答一个旧的帖子,但我对提供的任何答案都不满意。我觉得这两个问题都没有回答。
模式可以具有一个或多个事实,但这些事实没有通过任何关键关系链接。当您将乳清查询标准化/事务数据库时,最好不要在单个查询中加入事实表。由于许多到许多联盟的性质等 - 如果尝试,结果将是不正确的。
您正在寻找的答案是您需要“跨越”,基本上意味着您正在分别查询每个事实表(架构)并合并结果。这可以使用SQL或优选地通过Reporting / Analytics工具来发生,您可能拥有数据仓库。而不是重复关于如何执行此操作的答案,我会将每个人指导到两个非常好的文章: