Geokettle以级联方式插入,ETL规范化过程

时间:2015-10-29 11:14:43

标签: pentaho etl cascade kettle geokettle

我是ETL流程的新手。在这一刻,我正在使用水壶更精确地使用geokettle进行ETL过程。我正在构建一个转换,以便从数据库源的描述性表中将数据插入到数据库目标的规范化结构中。

请考虑以下示例。

示例:

我正在尝试在我的数据库中级联插入联系人记录。请注意,在源数据库中,我有以下联系表:

Database Source: Table Contacts

我想转换成以下结构:

Database Target: [Contact normalized tables]

所以主要的想法是:

第一步:将手机插入CI_Telephone表格并获取t_id

第二步:与上一步同时在institutionAddress上插入countryCI_Address并获取a_id

第三步:之后,我需要将这些ID(t_ida_id)插入CI_Contact(如果尚不存在)并获得c_id

第四步:在CI_ResponsibleParty instituionName =>上插入(如果尚未存在) organizationNamename => individualname,并插入引用CI_contact表的正确外键(contactInfo)。

这是我对ETL过程的看法:

Geokettle approach

问题: 如何使用geokettle或水壶进行“级联”插入? (我不知道这是否是正确的术语)这种转变对你有意义吗?

我在这种情况下找不到任何类似的例子。关于这个问题的任何建议都会很棒。请分享您关于ETL过程的经验以及如何将数据库从另一个未规范化的数据库中规范化。

1 个答案:

答案 0 :(得分:2)

这些步骤可用于您指定的每个步骤。

  

第一步:将手机插入CI_Telephone表并获取t_id。

  • 使用Dimension lookup/update步骤。它将返回您在Technical key字段中指定时创建的密钥。
  

第二步:与上一步并行插入institutionAddress   和CI_Address上的国家/地区获取a_id

  • 并行使用相同的步骤进行地址插入并获取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/updateCombination lookup/update步骤适用于数据仓库,因此非常适合您的需求。