Pentaho PDI获得SQL SUM()条件

时间:2017-12-06 11:49:01

标签: kettle pentaho-spoon pentaho-data-integration

我正在使用Pentaho PDI 7.1。我试图将数据从Mysql转换为Mysql来改变数据结构。

我正在阅读源表(客户),并且每行我都要运行另一个查询来计算余额。 我试图用Database value lookup来完成它,但也许不是最好的方法。

我要运行这样的查询以获得余额:

SELECT 

 SUM(
        CASE WHEN direzione='ENTRATA' THEN -importo ELSE +importo  END
 )
   FROM Movimento WHERE contoFidelizzato_id = ?

我应该设置从上一步开始的参数。一些建议?

1 个答案:

答案 0 :(得分:0)

Database lookup value可能是一个好主意,特别是如果您习惯于数据库推理,但可能会导致许多查询效率最高。

更多PDI-ish风格将使查询如下:

SELECT contoFidelizzato_id
     , SUM(CASE WHEN direzione='ENTRATA' THEN -importo ELSE +importo END)
FROM Movimento
GROUP BY contoFidelizzato_id

并将其用作Lookup Stream Step的信息源,如下所示:

enter image description here

更多PDI-ish风格是将源表(客户)转移到两个流中:一个用于保存源行,另一个用contoFidelizzato_id分组。当然,您需要formulaJavascript,或者在Table input的SQL中添加公式,以便在需要时更改符号。

enter image description here

测试以了解哪种策略在您的情况下更好。您很快就会发现PDI非常擅长处理大数据。