加入

时间:2016-05-26 18:50:11

标签: join google-analytics mapping pentaho pdi

我正在使用Pentaho数据集成进行数据源集成,我需要将表A与多个Google Analytics数据流联系起来(让我们称之为GA_A,GA_B,GA_C,... GA_Z)。所有GA streems都有相同的字段,但它们来自不同的配置文件。我在每个合并步骤中使用LEFT OUTER JOIN来保留表A中的所有数据,同时添加每个GA数据流的值。问题在于,当我进行连接时,每个数据流中的所有GA字段都会添加到结果中,但会使用下划线重命名。这是一个例子:

GA_A,GA_B和GA_C都有字段" name"并且连接到表A.在最后的连接结果中,我得到字段" name" ," name_1"," name_2")。

这显然是因为LEFT OUTER JOIN的性质。但是,我想" map" "发送"所有值来自" name_1"," name_2"," name_3"等等到字段" name"。我怎样才能做到这一点?我看到那里有一个" Value Mapper" PDI中的步骤,但我不想为GA带来的10个字段中的每个字段使用一个步骤(另外,我不确定该步骤是否符合我的要求)

谢谢!

1 个答案:

答案 0 :(得分:1)

正如@ Brian.D.Myers所说,有多种解决方案可供选择。

首先,如果所有GA流都具有相同的结构,则不需要对所有这些流使用连接 - 您可以先将所有数据联合起来(只需将它们指向同一步骤即Dummy步骤),然后再进行连接 - 在这种情况下,您不会获得多个name_ *字段。

但是,如果表A和GA流中仍有相同名称的字段 - 它们显然会用下划线重命名(正如您所指出的那样必不可少)。要处理这个问题,几乎没有选择:

  1. 如果您只需复制值 - 请使用https://plnkr.co/edit/DlhNXU步骤 - 将值从一个字段复制到另一个字段
  2. 如果存在一些复杂的处理逻辑 - 请使用Javascript步骤
  3. 如果流相对较小并且您实际上需要保留两个字段 - 您可以使用"流查找"步骤而不是合并连接 - 它将允许您指定"合并"的名称。列,因此不会发生命名冲突。