PDI:将SELECT语句的结果返回给数据流

时间:2014-08-27 10:44:19

标签: transformation pentaho etl kettle data-integration

使用PDI(Kettle)我使用CSV InputTable Output步骤填充数据库的入门阶段。这很好用,但是,我还想确保刚刚插入的数据满足某些条件,例如:字段不是NULL等等。

通常这将是数据库约束的工作,但是,我们希望将数据保留在数据库中,即使它有问题(出于调试目的。尝试调试.csv文件很痛苦......)。因为它只是一个临时表,它不会导致任何完整性问题等。

为了做到这一点,我写了一些SELECT Count(*) as test123 ...语句,可以立即显示是否有错误并且易于处理(如果test123的值为0,则一切都很好,否则工作需要中止)。

我正在PDI转换中使用Execute SQL Statements步骤执行这些语句。我希望结果会自动传递给我的数据流,所以我还使用Copy rows to result步骤将其传递给正在执行的作业。

这是问题最有可能找到的地方。 我认为SELECT语句的结果没有自动传递给我的数据流,因为当我在主作业中使用变量Simple evaluation执行${test123}时(我认为这将通过执行{隐式创建) {1}})我从未得到预期的结果。

我无法在PDI文档中找到任何有关此问题的线索,因此我希望此处有人可以获得PDI的一些经验并可能提供帮助。如果某些内容仍然不清楚,只需提示,我将编辑帖子并提供更多信息。

最好的问候

编辑: 这是我主要工作的一个简单模型:

开始 - >加载数据(转换) - >检查数据(转换) - >简单评估 - > ...

1 个答案:

答案 0 :(得分:1)

如果我正确阅读你的帖子,你会混淆一些概念。

  1. 您不需要执行SQL脚本,这是表输入步骤的作业。 只需在表格输入中键入您的查询,您就可以预览数据,并通过在后续步骤中使用预览来查看数据流入数据流的步骤。执行SQL脚本不是输入步骤,这意味着它不会将外部数据添加到数据流中。

  2. 输出字段不是变量。使用“设置变量”步骤设置“变量”,该步骤采用单个输入行并将特定字段映射到变量,该变量可以在父作业或根作业级别保留。字段就是:字段。它们通过跳跃从一步传递到下一步,如果你有一个复制行到结果步骤,它们最终会传递到父作业,但它们不是变量。