我是ETL流程的新手。在这一刻,我正在使用水壶更精确地使用geokettle进行ETL过程。我正在构建一个转换,以便从数据库源的描述性表中将数据插入到数据库目标的规范化结构中。
请考虑以下示例。
示例:
我正在尝试在我的数据库中级联插入联系人记录。请注意,在源数据库中,我有以下联系表:
我想转换成以下结构:
所以主要的想法是:
第一步:将手机插入CI_Telephone
表格并获取t_id
。
第二步:与上一步同时在institutionAddress
上插入country
和CI_Address
并获取a_id
第三步:之后,我需要将这些ID(t_id
和a_id
)插入CI_Contact
(如果尚不存在)并获得c_id
第四步:在CI_ResponsibleParty
instituionName
=>上插入(如果尚未存在) organizationName
和name
=> individualname
,并插入引用CI_contact
表的正确外键(contactInfo)。
这是我对ETL过程的看法:
问题: 如何使用geokettle或水壶进行“级联”插入? (我不知道这是否是正确的术语)这种转变对你有意义吗?
我在这种情况下找不到任何类似的例子。关于这个问题的任何建议都会很棒。请分享您关于ETL过程的经验以及如何将数据库从另一个未规范化的数据库中规范化。
答案 0 :(得分:2)
这些步骤可用于您指定的每个步骤。
第一步:将手机插入CI_Telephone表并获取t_id。
Dimension lookup/update
步骤。它将返回您在Technical key
字段中指定时创建的密钥。第二步:与上一步并行插入institutionAddress 和CI_Address上的国家/地区获取a_id
第三步:在那之后,我需要得到那些id(t_id和a_id) 插入CI_Contact(如果尚不存在)并获取c_id
Merge join
步骤使用密钥加入到流。然后用
如果不存在,Insert/Update
将插入CI_Contact。第四步:在CI_ResponsibleParty上插入(如果尚未存在) instituionName => organizationName和name =>个人姓名,和 插入引用的正确外键(contactInfo) CI_contact表。
NB:由于Dimension lookup/update
和Combination lookup/update
步骤适用于数据仓库,因此非常适合您的需求。