3

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

请考虑以下示例。

例子:

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

数据库来源:表联系人

我想转换成以下结构:

数据库目标:[联系规范化表]

所以主要思想是:

第一步:将手机插入CI_Telephone桌面即可t_id

第二步:与上一步并行插入institutionAddresscountry打开CI_Address并获取a_id

第三步:之后,我需要将那些 ids ( t_idand a_id) 插入CI_Contact(如果不存在的话)并获取c_id

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

这是我对 ETL 过程的想法:

Geokettle方法

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

我找不到与此案例类似的示例。关于这个问题的任何建议都会很棒。请分享您关于 ETL 过程以及如何从另一个未规范化的数据库规范化数据库的经验。

4

1 回答 1

2

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

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

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

第二步:与上一步并行,在 CI_Address 上插入机构地址和国家,并获取 a_id

  • 并行使用相同的步骤进行地址插入并获取 ID。

第三步:之后,我需要将这些 id(t_id 和 a_id)插入 CI_Contact(如果尚不存在)并获取 c_id

  • 使用Merge joinstep 使用密钥加入流。然后使用 Insert/Updatestep 插入 CI_Contact 如果不存在。

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

  • 使用与上述相同的步骤进行插入。

注意:因为Dimension lookup/updateCombination lookup/update步骤适用于非常适合您的要求的数据仓库。

于 2015-10-29T11:52:21.787 回答