我正在构建一个数据仓库,其中包含餐厅的送货信息。数据存储在 SQL Server 2005 中,然后放入 SQL Server Analysis Services 2005 多维数据集。
交付信息由下表组成:
事实交付
- 分支键
- 交货日期密钥
- 产品密钥
- InvoiceNumber(DD:退化维度)
- 数量
- 单位成本
- 线路成本
笔记:
- FactDeliveres 的粒度是发票上的每一行
- 产品维度包括供应商信息
问题是:事实表没有主键。主键应该是唯一标识每个交付加上 ProductKey 的东西。但是我没有办法唯一标识一个交付。
在源 OLTP 数据库中,有一个 DeliveryID,对于每个交付都是唯一的,但这是一个对用户没有意义的内部 ID。InvoiceNumber 是供应商的发票编号——这是手动输入的,所以我们得到了重复。
在多维数据集中,我仅基于 FactDeliveres 中的 InvoiceNumber 字段创建了一个维度。这确实意味着,当您按 InvoiceNumber 分组时,您可能会合并 2 个交付,只是因为它们(错误地)具有相同的 InvoiceNumber。
我觉得我需要包含 DeliveryID(称为 DeliveryKey),但我不确定如何。
我也是:
- 将其用作 InvoiceNumber 维度的基础键?
- 创建一个每次有新交付时都会增长的 DimDelivery?这可能意味着某些属性来自 FactDeliveries 并进入 DimDelivery,例如 DeliveryDate、Supplier、InvoiceNumber。
毕竟,我只能问你:当我的源数据库中有以下信息时,我如何创建一个 Deliveries 多维数据集
DeliveryHeaders
- DeliveryID (PK)
- 交货日期
- 供应商 ID (FK)
- 发票号码(手动输入)
交货详情
- DeliveryID (PK)
- 产品 ID (PK)
- 数量
- 单位成本