我对ETL程序很陌生。此刻,我正在使用水壶,更精确地说,用geokettle来制作一个ETL过程。我正在构建一个转换,以便从数据库源的描述表中将数据插入到数据库目标的规范化结构中。
请考虑以下例子。
示例:
我正试图在我的数据库中插入一个联系记录。请注意,在源数据库中,我有以下联系人表:

我想将其转变为以下结构:

所以主要的想法是:
第一步:将电话插入CI_Telephone表并获取t_id。
第二步:与前一步并行,在CI_Address上插入institutionAddress和country并获取a_id
第三步:在此之后,我需要将这些ids (t_id和a_id)插入到CI_Contact (如果还不存在的话)并获取c_id
第四步:在CI_ResponsibleParty CI_ResponsibleParty instituionName => organizationName和name=> individualname上插入(如果不存在),并插入引用CI_contact表的正确外键(contactInfo)。
这是我对ETL过程的想法:

问题:你怎么能用地水壶或水壶进行“级联”插入?(我不知道这是否是正确的术语)这种转换对你有意义吗?
我找不到和这个案子类似的例子。任何关于这个问题的建议都会很好。请分享您在ETL过程中的经验,以及如何从另一个未规范化的数据库中规范化数据库。
发布于 2015-10-29 11:52:21
这些步骤可用于指定的每个步骤。
第一步:将手机插入CI_Telephone表并获取t_id。
Dimension lookup/update步骤。它将返回在Technical key字段中指定它时创建的键。第二步:与前一步并行,在CI_Address上插入CI_Address和country并获取a_id
第三步:在此之后,我需要将这些ids (t_id和a_id)插入到CI_Contact (如果还不存在的话)并获取c_id。
Merge join步骤使用键连接to流。如果不存在,则使用Insert/Update步骤插入到CI_Contact。第四步:在CI_ResponsibleParty上插入(如果不存在) instituionName => organizationName和name=>个人名,并插入引用CI_contact表的正确外键(contactInfo)。
NB:,因为Dimension lookup/update和Combination lookup/update步骤是用于数据仓库的,这非常适合您的需求。
https://stackoverflow.com/questions/33412699
复制相似问题