0

我有一个数据库,其中一个属性实际上带有两个(字符串由“;”分隔)。看看下面的例子:

例子

这是我的数据库 A(源),它有一个像这样的表:

在此处输入图像描述

事实上,这看起来一切正常,但是当你假设author可以有一个或多个入口时。你会有这样的记录:

文档(id 1,作者“John Matt; Mary Knight”,摘要“Lorem ipsum...”,2015 年

所以我打算在数据库 B(Target) 上做的是这样的: 在此处输入图像描述

其中a_idfrom table是在 tableAuthors上引用的外键。author_idDocument

首先确保我将填写所有作者(这没有问题),然后将组作者分配给相应的文档(这是问题),因为我可能遇到这种情况

作者(id 1,姓名“John Matt”)(id 2,姓名“John Matt”)(id 2,姓名“Mary Knight”)

请注意,id 2将被插入到前面的示例中。

问题:

如何使用使用水壶的 ETL 过程来完成此过程?这是一个好的做法还是用“;”分隔的字符串属性就足够了?

4

1 回答 1

0

如果我正确理解了您的问题,那么您的数据库中的行如下

document (id 1, author "John Matt; Mary Knight", abstract "Lorem ipsum...", year 2015)

现在您需要提取以 . 分隔的多个作者;

PDI 为您提供了一个名为Split fields to row的步骤。使用分隔符 as ;,您将获得数据的多个拆分副本。接下来,您可以使用作者表中的唯一 ID。

或者,您也可以使用 Modified Java Script 步骤来拆分行。建议您使用第一步。

希望这可以帮助 :)

于 2015-11-04T11:08:01.713 回答