Pentaho 在循环中动态替换 table 名称

Pentaho replace table name in a loop dynamically

我目前有一个转换设置,其中包含 2 个 table 输入和一个合并行 (Diff),两个 table 输入中的 SQL select 语句是常量,除了 table 名称外,它们没有变化。所以我有:

select * from THIS_WILL_CHANGE

我有大约 100 个 table,我不想每次迭代都手动输入 table 名称,尤其是因为这是自动化...

实现此目标的最佳方法是什么?有什么方法可以像 CSV 文件一样读取所有 table 名称并以这种方式循环?任何帮助表示赞赏..

这也是我以前不得不做的事情! 您可以使用一个变量和一个作业来执行此操作,该作业对上一步的每一行执行一次。

  1. 创建一个父作业来承载这些步骤
  2. 创建一个从 'somewhere' 中获取 table 名称的转换,例如。 CSV 文件或数据库查询 - all_tables 上的 select 具有相同列名的 table 可能是一直执行此操作的好方法...
  3. 在同一转换中,使用复制行到结果步骤将数据推回作业
  4. 创建一个新的 'sub job',它对每一行执行一次,并且从主作业的 'get data' 步骤开始跳转
  5. 在子作业中,创建两个转换,一个用于设置结果字段中的变量,一个用于执行您的 select
  6. 在您的 select 查询中,选中复选框 'substitute variables' 并将与您设置的变量同名的变量放入您的 SQL 作为 ${yourVariableHere}

我已将其放在下面的图片中,希望对您有所帮助。

动态 sql 行步骤是一个很好的选择,前提是所有表都具有相同的 layout/metadata。