0

我从我得到的数据中获得了一个复合自然键。使用composite_key = ID-PRODUCT_ID-CLIENT_ID-OFFICE_ID,我想在一个代理键中转换这个键。例如:composite_key = 55-001-234-01 to surrogate_key = 123;这是正常的情况,有时办公室代码可以更改,但我想要将记录标识为与surrogate_key = 123相同的Ex:composite_key = 55-001-234-02。我怎样才能实现这个功能来创建数据仓库。代理键的组合键

如何比较从一种提取到另一种提取的组合键,并了解该字段是否可以被认为是有效的?

+0

您将有一张表格将自然键映射到替代键。但是,通常情况下,您只需在数据表中使用自然键,并使用唯一约束和代理键。 –

+0

好的,但是我怎么能理解组合键例如办公室的变化是否会导致相同的代理键。在这种情况下,如果我认为这些记录是相同的,因为只有办公室发生了变化,并且从商业角度来看没有问题。 – odew

+0

您必须编写一些规则,用户定义的函数似乎是一个好方法。 –

回答

3

如果具有不同OfficeID的两个成员应该映射到相同的代理键,那么它意味着OfficeID不是组合键的一部分,只是具有类型2(替换行为)的标准属性。

如果你的维度不是太大,我建议在你的ETL工具中使用简单的Slowly Changing Dimension组件。如果您没有这样的组件,只需查看该维度中的成员是否存在。如果存在,则应用更新(最终)更改OfficeID,如果不应用插入。

如果您有很大的维度和性能问题,那么通过计算一组属性类型2的校验和可能会有用并提高性能。您的查找应该返回此校验和并将其与您当前的校验和进行比较行。如果它们是标识符,则不需要执行更新语句。