组合使用相似前键的两个源表时的自然键

时间:2019-02-21 09:40:43

标签: sql-server etl data-warehouse

我有两个源表,一个基本上是发票,另一个是已迁移的发票。同一对象可能应该用于两者,但是我却使用了它。它们包含大多数相同的数据。

我曾经考虑过将两者组合成一个维度表,但是两者都将使用相同的自然键。我应该如何处理?

我想到的一个可能的解决方案是对迁移的表使用负数,但是自然键不能与源完全对齐。

我是否将它们合并到事实表中?然后由于NULL,我无法链接回维度表。

还是我要添加其他列或信息以表明发票是哪种类型?

编辑


下面当前表的简单模型。 该维度当前仅包含未迁移的数据,它具有主键,但是 如果我将迁移的发票表合并到此,它将看起来好像正在进行更改 是原始发票而非第二组发票

尺寸

surrogate_key| source_pk | Total |  scd_from   | scd_to
             |           |       |             |
 1           | 1         | 100   | 01/01/2019  | 31/01/2019
 2           | 1         | 150   | 01/02/2019  | 31/12/2019
 3           | 2         | 50    | 01/01/2019  | 31/12/9999

原始发票表

pk         | Total
___________________
 1         | 150
 2         | 50

源迁移的发票表

pk         | total
___________________
 1         | 200
 2         | 300

1 个答案:

答案 0 :(得分:0)

如果发票和迁移的发票具有相同的自然键,但是某些字段具有不同的值(您的示例显示它们之间的总金额不同),则基于Dim中的自然键有一行,但是有2个不同的列来表示2个来源。根据您的示例,您的DIM中需要invoice_Total和migrationd_invoice_Total列。