【问题标题】:How to do not see the previous fields into output table step?如何看不到前面的字段进入输出表步骤?
【发布时间】:2017-02-14 09:32:01
【问题描述】:

我有一个名为 Test 的 Kettle Pentaho 转换。

此 ETL 过程应加载单个数据库的三个不同表,其中每个表都有自己的源到另一个数据库的不同表中。

为此,我使用了三个table input steps。每个都连接到value mapper,然后连接到Select value step,然后连接到Data Validator,最后连接到add sequence step,最后连接到table output

总结一下,每次表加载我总共有六个步骤。 当我在编辑决赛步骤时,我发现了一个我想解决的问题,我拖动以前表格的字段加载。

例如,表A加载有field bank_id,在第二个表中它不存在,但在第二个加载过程的table output step中我可以选择这个,尽管我不想要这个。

有什么选项可以看不到前面的字段吗?这样我就可以避免简单的错误。特别是当表有一个同名的字段时。

谢谢

编辑

【问题讨论】:

  • 如果您有 3 个单独的流,则不应在第二个输出步骤中看到第一个表中的字段。您是否在某处合并流和/或复制第一个表输出以创建第二个?
  • 是的,我重复了这些步骤,但随后将我需要的东西更改为表格和选择语句。
  • 很奇怪你会看到来自另一个流的字段。你能附上转换的截图吗?
  • 实际上在同一个转换中使用多个流并不是一个好主意。流之间的数据开始混乱。通常几乎是不明智的,但如果数据量很大,那么这种影响就会开始出现。我可以确认这种行为,并在转换中使用简单的规则单流。
  • @Cyrus 我已经添加了截图。谢谢。

标签: pentaho etl kettle


【解决方案1】:

截图非常清楚地说明了情况,所以现在答案很简单:

删除行之间的对角线跳(箭头)。

PDI 中的转换没有单一的起点或终点,因此您无需将所有步骤连接在一行中。拥有三个独立的流就可以了。

转换中的所有步骤都是并行开始的,然后在行进入时等待并处理它们(或者在输入步骤的情况下,开始读取数据并将行生成到它们的输出跃点中)。这意味着您的三个流将在它们自己的从输入到输出的跳跃之后并行执行。

【讨论】:

  • 感谢您的回答。我以前见过,但是如果需要,如何在进程之间创建依赖关系?例如,最后两个进程插入到具有外键的表中。
  • 作业按顺序执行其步骤(除非您专门配置并行性)。将您的流放在单独的转换中,并在作业中首先放置父表 trans,然后是子表。
  • 感谢您的评论。
【解决方案2】:

添加一个选择值步骤,我经常使用添加过滤步骤来“清理”流程

【讨论】:

  • 我只看到行过滤器。步骤名称是什么?
  • 对不起,步骤的名称是:“选择值”
猜你喜欢
  • 1970-01-01
  • 2021-04-08
  • 1970-01-01
  • 2019-01-20
  • 1970-01-01
  • 1970-01-01
  • 2015-12-30
  • 2020-02-23
  • 1970-01-01
相关资源
最近更新 更多