Altova MapForce 2025 Enterprise Edition

Si vous souhaitez filtrer des données ou obtenir une valeur par condition, vous pouvez utiliser un des types de composant suivants :

 

Filtre : Nœuds/Lignes ( mff_ic_insert_filter )

SQL WHERE/ORDER ( ic-component_whereorder )

Condition If-Else ( mff_ic_if_else )

 

Vous pouvez ajouter ces composants dans le mappage soit depuis le menu Insérer, soit depuis la barre d'outils Insérer composant. Attention, chaque composant indiqué ci-dessus possède son propre comportement et ses propres exigences. Les différences sont expliquées dans les sections suivantes.

 

Filtrer les nœud ou les lignes

Si vous souhaitez filtrer des données, y compris des nœuds XML  ou des lignes CSV, utiliser un composant Filtrer nœuds/lignes. Celui-ci vous permet d'extraire un sous-ensemble de nœuds depuis un ensemble de données plus important, sur la base d'une condition vrai ou faux. Sa structure dans la zone de mappage le reflète :

mff_filter_component

Dans la structure ci-dessus, la condition connectée à bool détermine si le nœud/ligne connecté va bien vers la sortie on-true ou on-false. Concrètement, si la condition est vraie, le nœud/ligne sera redirigé vers la sortie on-true. Ainsi, si la condition est fausse, le nœud/ligne sera redirigé vers la sortie on-false.

 

Si votre mappage nécessite de consommer uniquement des items qui correspondent à la condition de filtre, vous pouvez laisser la sortie on-false sans connexion. Si vous devez traiter les items qui ne correspondent pas à la condition de filtre, connecter la sortie on-false vers une cible dans laquelle ces items doivent être redirigés. Si vous souhaitez ajouter une exception lorsque la condition du filtre n'est pas remplie, il est obligatoire de connecter la sortie on-false (voir Ajouter des exceptions).

 

Pour un exemple de mappage étape par étape, voir Exemple : Filtrer des nœuds.

 

Filtrer les données de base de données

Les composants Filtrer nœuds/lignes peuvent filtrer des données depuis toute autre structure de composant prise en charge par MapForce, y compris des bases de données. Néanmoins, si vous souhaitez filtrer des données depuis une base de données, il est recommandé d'utiliser un composant SQL WHERE/ORDER à la place. Ce composant SQL WHERE/ORDER est optimisé pour travailler avec des bases de données et fournit une meilleure performance qu'un composant Filtrer nœuds/lignes.

mff_sql_where

Pour plus d'informations concernant ces composants, voir Composant SQL WHERE / ORDER.

 

Retourner une valeur par condition

Si vous souhaitez obtenir une seule valeur (pas un nœud ou une ligne) de manière conditionnelle, utiliser une Condition If-Else. Veuillez noter que celles-ci ne sont pas appropriées pour filtrer les nœuds ou les lignes. Contrairement aux composants Filtrer nœuds/lignes, une Condition If-Else retourne une valeur de type simple (comme un string ou un entier). C'est pourquoi, les Conditions If-Else ne se prêtent que pour des scénarios dans lesquels vous devez traiter une valeur simple par condition. Par exemple, partons du principe que vous avez une liste de températures moyennes par mois, dans le format :

 

<Temperatures>  
  <data temp="19.2" month="2010-06" />
  <data temp="22.3" month="2010-07" />
  <data temp="19.5" month="2010-08" />
  <data temp="14.2" month="2010-09" />
  <data temp="7.8" month="2010-10" />
  <data temp="6.9" month="2010-11" />
  <data temp="-1.0" month="2010-12" />
</Temperatures>

 

Une Condition If-Else vous permettrait de retourner, pour chaque item dans la liste, la valeur "high" si la température dépasse 20 degrés Celsius, et la valeur "low" si la température est inférieure à 5 degrés Celsius.

 

Dans le mappage, la structure de la Condition If-Else ressemble à l'exemple suivant :

ifelse-extend01

Si la condition connectée à bool est vraie, alors la valeur connectée à value-true est sorti sous la forme de result. Si la condition est fausse, la valeur connectée à value-false est sortie sous la forme de result. Le type de donnée de result n'est pas connu à l'avance ; il dépend du type de données de la valeur connectée à value-true ou value-false. Attention : ce doit toujours être un type simple (string, entier, etc). La connexion de valeurs d'entrée de type complexe (comme des nœuds ou des lignes) n'est pas prise en charge par la Condition If-Else.

 

Les Conditions If-Else sont extensibles. Cela signifie que vous pouvez ajouter plusieurs conditions dans le composant en cliquant sur la touche Ajouter ( gui_add_function_parameter ). Pour supprimer une condition préalablement ajoutée, cliquer sur la touche Supprimer ( gui_delete_function_parameter ).  Cette fonction vous permet de contrôler plusieurs conditions et de retourner une valeur différente pour chaque condition, si elle est vraie.

mff_if_else_extendable

Les Conditions If-Else étendues sont évaluées du haut en bas (la première condition est contrôlée en premier, puis la deuxième, etc.). Si vous souhaitez retourner une valeur si aucune des conditions ne sont vraies, connectez-vous à otherwise.

 

Pour un exemple de mappage étape par étape, voir Exemple: Retourner une valeur par condition.

© 2018-2024 Altova GmbH