Pentaho PDI 获得 SQL SUM() 条件

Pentaho PDI get SQL SUM() with conditions

我正在使用 Pentaho PDI 7.1。我正在尝试将数据从 Mysql 转换为 Mysql 以更改数据结构。

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

我必须 运行 这样的查询才能获得余额:

SELECT 

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

我应该设置从上一步获取的参数。有什么建议吗?

Database lookup value 可能是个好主意,尤其是如果您习惯了数据库推理,但它可能会导致许多查询,这可能不是最有效的。

一种更像 PDI 风格的查询是这样的:

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

并将其用作查找流步骤的信息源,如下所示:

一种更像 PDI 风格的风格是将来源 table(客户)转移到两个流程中:一个是您保留源行的流程,另一个是您按 contoFidelizzato_id 分组的流程.当然,你需要一个formula,或者一个Javascript,或者在Table input的SQL里面放一个公式,需要的时候改变符号。

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