SSIS Design4: 处理外键

Posted 悦光阴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSIS Design4: 处理外键相关的知识,希望对你有一定的参考价值。

假设一种场景:有一个ETL系统,通过记录数据最后更新的时间,对数据进行增量更新。如果Data Warehouse中存在有外键关系的两个表,Group(GroupID,StudentID,GroupData) 和 Student(StudentID,StudentAlternateID,StudentData),Group表引用Student表中的StudentID字段。在导入Group数据时,如果Group中存在一个数据行R1,其StudentAlternateID不存在于Student表,如何处理?

分析:如果不导入这行数据,那么Group有丢失数据的可能。因为,Student表的数据被补齐后,除非数据行R1被再次更新,否则,R1的数据不会被导入到DW中。

结论:必须将R1导入DW。由于StudentAlternateID是Student表的业务主键,当Student表数据补齐后,能够通过业务主键匹配。

Step1,将StudentAlternateID导入到Student表,StudentData 设置为null(或其他缺失值),生成一个StudentID(Student表的代理键)。

Step2,将生成的StudentID更新到Student表中,尽管Group引用的Student数据是未知的。

Step3,后续Student表有更新时,如果存在StudentAlternateID,那么可以将StudentData更新为有效值。

 

为了区分这种数据,可以在Student表中增加一个Column:IsLateArrival bit,如果IsLateArrival=1,表示是该数据行在插入时,只能确定业务键(Alternate Key),而其他数据未知,后续,需要通过业务键来将其他数据更新为真正有效的数据。

以上是关于SSIS Design4: 处理外键的主要内容,如果未能解决你的问题,请参考以下文章

ant design4 中 less不生效或less配置主题不生效或报错

SSIS Design5:使用暂存

SSIS Design6:利用数据流

SSIS Design2:增量更新

SSIS Design1: 源数据提取

SSIS 数据流 - 具有所需外键值的顺序插入