我正在研究金融数据集市结构。 而且我对最新的方法有所怀疑。 源系统数据库Dynamics AX 2009有三个用于客户交易的表。 一个用于开放交易的表,客户仍然需要为服务/产品付费; 一张结算交易表,其中包含客户已支付的金额; 最后一张包含所有客户交易的表格,将交易从开仓到结算以及其他交易作为客户到银行或分类账账户。
我想到了两个选项,首先我将维护一个表示三个表的事实表,开放交易的事实,任何客户交易的事实和结算交易的事实。 其次是创建一个事实来保存所有事务,为此我必须在三个表上进行完全连接。 我不确定这两种方法,因为第一种似乎是从生产中复制表并创建适当的维度。 在第二个我将创建一个大型事实表,数据将不断变化,因为打开的事务在源系统结束时被删除。
另一个疑问,我应该用scd(缓慢变化的维度)结构创建一个事实来维护历史数据吗?(星号日期,结束日期,标志)
答案 0 :(得分:2)
从给出的信息中很难说这是否需要是一个或多个Fact表。但是,您应该使用的关键点是所有信息是否具有相同的粒度。考虑一下您想要的事实表的粒度,您应该找到一个答案,表明您是需要一个表还是多个表。
如果所有信息都位于相同的粒度 - 即所有相同的维度适用于您考虑放入同一事实表的所有度量 - 那么它们可能都存在于同一个Fact表中。如果您发现某些尺寸不适用于某些尺寸,那么您可能需要重新考虑您的设计。您可能需要多个Fact表,或者您可能需要将所有度量降低到最低粒度,并将层次结构组合到单个维度中(如果您当前将它们拆分为多个维度)。
虽然有人提到在单独的多维数据集中使用度量会使得比较事情变得困难,但请记住,每个Fact表不需要一个多维数据集。您可以在一个多维数据集中包含多个Fact表,有时,当您需要能够比较共享某些维度而非其他维度的度量时,这非常有用。这比将不具有相同粒度的数据强制到一个Fact表中要好得多。
此外,听起来您正在尝试建模的是组织的销售分类帐。我建议您通过谷歌进行挖掘,因为您可能能够找到讨论销售分类帐结构的维度数据仓库设计的材料,而不是重新发明轮子。如果你对你正在尝试建模的会计概念没有一个正确的理解,我会特别建议寻找一个可以使用的参考模式,或者没有对会计概念(特别是销售分类账)进行一些阅读。了解帐户结构应该有助于您了解Fact表的内容,如何对Dimensions建模等等。
这是Kimball建模技术的一个非常有用的删节版本,它讨论了谷物,以及不同类型的Fact表,以及许多其他主题:
答案 1 :(得分:1)
我认为您应该只使用一个事实表(一个多维数据集)并使用维度来区分open / settle / etc。交易。这就是维度的含义:它们可以帮助您对度量进行分类并获得特定的视图。这种方法还将为您的多维数据集创建知识提供更多可能性。使用单独的立方体打开/结算/等。在交易中,将这些数据设置为对比将更难或不可能。
由于数据不断变化,您应该考虑在给定时间内更新您的事实表,并在需要时重建您的多维数据集。
如果您使用scd或不使用scd,实际上取决于您处理的数据及其使用的数据。是否有商业案例声称它?有技术用途吗? 我认为这是你必须自己决定的事情。