在 SSAS 中从关系数据库设计事实数据表的最佳方法是什么?



我正在SQL Server 2012中设计一个数据仓库数据库,它将用于创建多维数据集。假设我在原始关系数据库中有 3 个表

Supplier (SupplierId, SupplierName .....)
Invoice (InvoiceId, SupplierId, InvoiceCode, InvoiceName, InvoiceTotal ...)
InvoiceLineItem (InvoiceLineItemId, Description, InvoiceId, Rate, Count, Total)

我想将其转换为仓库数据库。所以我创建了 3 个维度和 2 个事实数据表

DimSupplier (SupplierId, SupplierName .....)
DimInvoice (InvoiceId, InvoiceCode, InvoiceName ....)
FactInvoice (InviceId, SupplierId, InvoiceTotal)
DimInvoiceLineItem (InvoiceLineItemId, Description)
FactInvoiceLineItem (InvoiceLineItemId, InvoiceId, SupplierId, Rate, Count, Total)

我的问题是我不确定外键的最佳方法是什么。我是否应该将SupplierId密钥分别从FactVoice和FactInvoiceLineItem移动到DimVoice和DimInvoiceLineItem中,这样事实就可以通过查看DimVoiceDimInvoiceLineItem来找出此信息。这里最好的方法是什么。我知道最好保持尽可能平坦。这里有任何帮助,因为我对数据分析很陌生?

我认为您根本不需要FactInvoice表。它唯一提供的是 InvoiceTotal ,这应该是FactInvoiceLineItem.Total的总和。省略此表将使结构相当简单:只有一个事实数据表和三个维度。

顺便说一句:我没有看到任何日期维度。将其从当前位置提取为一个单独的维度可能是有意义的,可能是DimInvoice.您可能希望添加"日期组字段",例如"月","季度","年",具体取决于用户请求以及"星期几","一年中的周数"等。

相关内容

最新更新