web-dev-qa-db-fra.com

Déclarations de cas / fonction de décodage dans Informatica

Quelqu'un pourrait-il m'aider à rédiger des déclarations de cas dans Informatica PowerCenter Designer? Je suis relativement nouveau sur Informatica et, d'après mon expérience limitée, je pense que les déclarations de cas ne sont pas prises en charge. Il existe une fonction de décodage avec des fonctionnalités similaires, mais je ne trouve pas de bons exemples sur la syntaxe.

J'apprécierais vraiment que quelqu'un puisse me donner des exemples spécifiques sur la façon d'utiliser les instructions case/decode dans Informatica.

Merci beaucoup pour votre aide!

11
Ashish Sachdeva

Vous avez raison - il n'y a pas d'instruction CASE, mais vous pouvez utiliser DECODE pour la simuler:

DECODE( TRUE
      , DECIMAL_PORT > 0, 'positive value'
      , DECIMAL_PORT < 0, 'negative value'
                        , 'zero' )

C'est l'équivalent de l'instruction Transact-SQL CASE suivante:

CASE
  WHEN DECIMAL_PORT > 0 THEN 'positive value'
  WHEN DECIMAL_PORT < 0 THEN 'negative value'
  ELSE 'zero'
END

Voici comment ça fonctionne:

  • le 1er paramètre est une valeur codée en dur TRUE,
  • même les paramètres (2e, 4e et ainsi de suite) sont les conditions,
  • les paramètres impairs (3e, 5e et ainsi de suite) sont les valeurs de retour,
  • le dernier paramètre est le valeur de retour par défaut,
  • la première condition qui évalue la valeur du 1er paramètre (c'est-à-dire la première condition qui est vraie) détermine la valeur qui est retournée,
  • si aucune des conditions n'est remplie, le dernier paramètre est renvoyé.
18

Regardez également la fonction IIF () qui est souvent utilisée pour implémenter la logique conditionnelle:

IIF(DECIMAL_PORT > 0, 'positive value', IIF(DECIMAL_PORT < 0 ,'negative value', 'zero'))
3
arturro