【问题标题】:Pentaho map values to field after join加入后 Pentaho 将值映射到字段
【发布时间】:2016-05-26 18:50:11
【问题描述】:

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

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

这显然是由于 LEFT OUTER JOIN 的性质而发生的。但是,我想将“name_1”、“name_2”、“name_3”等中的所有值“映射”到“name”字段。我怎样才能做到这一点?我看到 PDI 中有一个“值映射器”步骤,但我不想为我从 GA 带来的 10 个字段中的每一个都使用一个步骤(另外,我不确定该步骤是否符合我想要做的)

谢谢!

【问题讨论】:

  • 你能张贴一张你改造的照片吗?有几种方法可以解决这个问题。

标签: join google-analytics mapping pentaho pdi


【解决方案1】:

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

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

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

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

【讨论】:

  • 解决联合问题的方法是将所有 GA 步骤发送到选择值步骤。但是,Pentaho 仍然无法将所有联合数据与另一个表连接起来。尽管如此,还是解决了工会问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-10
  • 2011-02-10
  • 1970-01-01
  • 2021-09-22
  • 1970-01-01
相关资源
最近更新 更多