talend tMap逻辑与SQL逻辑 - 性能

时间:2017-06-21 13:42:46

标签: sql performance talend query-performance

我的情况是:我在表中有两个字段(ref1,ref2),我可以根据另一个字段(factor_column)值获取所需的值。这可以通过两种方式实现,但我不确定哪种方式更有效?

1)当factor_column = Y时使用SELECT case然后ref1 ...

2)正常SELECT ref1,ref2等。并使用talend组件中的表达式tMap:(factor_column.equals(" Y")?ref1:ref2)

我的talend工作流程如下: tOracleInput - > tMap - tOutput

在tOracleInput上放置SELECT子句的逻辑还是放在tMap上更好?

2 个答案:

答案 0 :(得分:2)

  • 如果您使用SELECT并在数据库中进行处理,那么大型数据集将在ETL / ELT作业之外处理,这可能非常有用
  • 如果使用表达式,整个数据集将加载到Talend并进行处理。根据数据集的不同,您可能没有足够的RAM或堆来完成您的请求(也可以考虑随着时间的推移不断增长的数据集)

所以这取决于您的数据大小。

答案 1 :(得分:1)

  • tOracleInput中:逻辑将通过JDBC连接在DBMS中与整个查询一起执行

  • tMap中:逻辑将在JVM中执行。

通常,使用DBMS会更快,而ETL和作业设计会更简单。