Table des matières

Search

  1. Préface
  2. Introduction aux transformations
  3. Ports de transformation
  4. Caches de transformation
  5. Transformation Outil de validation des adresses
  6. Transformation Agrégation
  7. Transformation Association
  8. Transformation Exception d'enregistrements incorrects
  9. Transformation Convertisseur de casse
  10. Transformation Classeur
  11. Transformation Comparaison
  12. Transformation Consolidation
  13. Transformation Masquage des données
  14. Transformation Processeur de données
  15. Transformation Décision
  16. Transformation Exception d'enregistrements dupliqués
  17. Transformation Expression
  18. Transformation filtre
  19. Transformation Hiérarchique à relationnel
  20. Transformation Java
  21. Référence de l'API de transformation Java
  22. Expressions Java
  23. Transformation jointure
  24. Transformation Générateur de clés
  25. Transformation Libellé
  26. Transformation Recherche
  27. Caches de recherche
  28. Cache de recherche dynamique
  29. Transformation Macro
  30. Transformation Correspondance
  31. Transformations Correspondance dans l'analyse de champ
  32. Transformations de correspondance dans l'analyse d'identité
  33. Transformation Normaliseur
  34. Transformation Fusion
  35. Transformation Analyseur
  36. Transformation Python
  37. Transformation Rang
  38. Transformation Lecture
  39. Transformation Relationnel à hiérarchique
  40. Transformation Consommateur de service Web REST
  41. Transformation Routeur
  42. Transformation Générateur de séquence
  43. Transformation Trieur
  44. Transformation SQL
  45. Transformation Normalisation
  46. Transformation Union
  47. Transformation Stratégie de mise à jour
  48. Transformation Consommateur de service Web
  49. Analyse des messages SOAP du service Web
  50. Génération des messages SOAP du service Web
  51. Transformation moyenne pondérée
  52. Transformation Fenêtre
  53. Transformation Écriture
  54. Annexe A: Délimiteurs de transformation

Guide de transformation Developer

Guide de transformation Developer

Optimisation de sélection précoce avec la transformation Java

Optimisation de sélection précoce avec la transformation Java

Vous pouvez activer une transformation Java active ou passive pour l'optimisation de sélection précoce si la transformation Java n'a pas d'effets secondaires. L'optimiseur transmet la logique de filtre via la transformation Java et modifie la condition de filtre comme requis.
Pour afficher les snippets de code pour l'optimisation de sélection précoce, choisissez PredicatePushOptimization dans le navigateur de l'onglet
Interfaces optimiseur
.

allowPredicatePush

Booléen. Active la sélection précoce. Modifiez la fonction pour qu'elle renvoie un résultat True et un message pour activer la sélection précoce. La valeur par défaut est False et la fonction renvoie un message comme quoi l'optimisation n'est pas prise en charge.
public ResultAndMessage allowPredicatePush(boolean ignoreOrderOfOp) { // To Enable PredicatePushOptimization, this function should return true //return new ResultAndMessage(true, ""); return new ResultAndMessage(false, "Predicate Push Optimization Is Not Supported"); }

canGenerateOutputFieldEvalError

Booléen. Indique si la transformation Java peut renvoyer ou non une erreur de champ de sortie, telle qu'une erreur de division par zéro. Modifiez la fonction pour qu'elle renvoie False si la transformation Java ne génère pas d'erreurs de champ de sortie. Quand la transformation Java peut générer des erreurs de champ, le service d'intégration de données ne peut utiliser l'optimisation de sélection précoce.
public boolean canGenerateOutputFieldEvalError() { // If this Java transformation can never generate an output field evaluation error, // return false. return true; }

getInputExpr

Renvoie une expression Informatica qui décrit quelles sont les valeurs d'entrée des champs d'entrée qui comprennent un champ de sortie. L'optimiseur doit savoir quels sont les champs d'entrée qui comprennent un champ de sortie pour pousser la logique de filtre via la transformation.
public InfaExpression getInputExpr(TransformationField field, TransformationDataInterface group) { // This should return an Informatica expression for output fields in terms of input fields // We will only push predicate that use fields for which input expressions are defined. // For example, if you have two input fields in0 and in1 and three output fields out0, out1, out2 // out0 is the pass-through of in1, out2 is sum of in1 and in2, and out3 is unknown, the code should be: //if (field.getName().equals("out0")) // return new InfaExpression("in0", instance); //else if (field.getName().equals("out1")) // return new InfaExpression("in0 + in1", instance); //else if (field.getName().equals("out2")) // return null; return null; }
Par exemple : un mappage contient l'expression de filtre
« out0 > 8
 ». Out0 est la valeur du port de sortie out0 dans la transformation Java. Vous pouvez définir la valeur de out0 en tant que valeur du port d'entrée in0 + 5. L'optimiseur peut pousser l'expression suivante
« (in0 + 5) > 8 »
après la transformation Java avec l'optimisation de sélection précoce. Vous pouvez renvoyer NULL si un champ de sortie n'a pas l'expression du champ d'entrée. L'optimiseur ne pousse pas les expressions de filtre après les champs de sortie sans expression d'entrée.
Vous pouvez inclure le code suivant :
if (field.getName().equals("out0")) return new InfaExpression("in0 + 5", instance); else if (field.getName().equals("out2")) return null;

inputGroupsPushPredicateTo

Renvoie une liste de groupes pouvant recevoir la logique de filtre. La transformation Java a un groupe d'entrée. Ne modifiez cette fonction de la transformation Java.
public List<TransformationDataInterface> inputGroupsPushPredicateTo( List<TransformationField> fields) { // This functions returns a list of input data interfaces to push predicates to. // Since JavaTx only has one input data interface, you should not have to modify this function AbstractTransformation tx = instance.getTransformation(); List<DataInterface> dis = tx.getDataInterfaces(); List<TransformationDataInterface> inputDIs = new ArrayList<TransformationDataInterface>(); for (DataInterface di : dis){ TransformationDataInterface tdi = (TransformationDataInterface) di; if (tdi.isInput()) inputDIs.add(tdi); } if(inputDIs.size() == 1) return inputDIs; else return null; }