2017-06-21 1 views
1

Mon scénario est le suivant: J'ai deux champs (ref1, ref2) dans la table où je peux obtenir les valeurs dont j'ai besoin en fonction d'une autre valeur de champ (factor_column). Cela peut être réalisé de deux façons, mais je ne suis pas sûr que ce qui serait le plus efficace?talend tMap logique vs SQL logique - performance

1) en utilisant le cas SELECT lorsque factor_column = Y puis REF1 ...

2) ref1 normale SELECT, ref2 etc. Et en utilisant une expression dans le composant de talend tMap: (factor_column.equals ("Y")? ref1: ref2)

Mon flux de travail est talend quelque chose comme: tOracleInput -> tMap - tEXTRANT

est-il préférable de mettre la logique à la clause SELECT sur tOracleInput ou de mettre tMap?

Répondre

1
  • Si vous utilisez le SELECT et effectuer le traitement dans la base de données, d'énormes ensembles de données seront traitées en dehors de l'ETL/travail ELT qui peut être très utile
  • Si vous utilisez une expression, l'ensemble des données sera chargé dans Talend et traité. En fonction de l'ensemble de données, il se peut que vous n'ayez pas assez de RAM ou de tas pour compléter votre requête (pensez également à des ensembles de données croissants au fil du temps)

Cela dépend de la taille de vos données.

0
  • Dans le tOracleInput: La logique sera excuted avec toute la requête, dans le SGBD via une connexion JDBC

  • Dans le tMap: La logique sera exécutée dans la machine virtuelle Java.

Généralement, il sera plus rapide d'utiliser le SGBD plutôt que l'ETL et la conception du travail sera plus simple.