Vous pouvez utiliser une boucle for
pour boucler l'ensemble des noeuds d'un flux. Par exemple, les deux exemples de script suivants parcourent en boucle tous les noeuds et modifient les noms de champ des noeuds Filtrer en majuscules.
Vous pouvez utiliser ce script dans n'importe quel flux contenant un noeud filtre, même si aucun champ n'est réellement filtré. Ajoutez simplement un noeud Filtrer qui transmet tous les champs afin de remplacer les noms de champ par des majuscules dans tous les champs.
# Alternative 1: using the data model nameIterator() function
stream = modeler.script.stream()
for node in stream.iterator():
if (node.getTypeName() == "filter"):
# nameIterator() returns the field names
for field in node.getInputDataModel().nameIterator():
newname = field.upper()
node.setKeyedPropertyValue("new_name", field, newname)
# Alternative 2: using the data model iterator() function
stream = modeler.script.stream()
for node in stream.iterator():
if (node.getTypeName() == "filter"):
# iterator() returns the field objects so we need
# to call getColumnName() to get the name
for field in node.getInputDataModel().iterator():
newname = field.getColumnName().upper()
node.setKeyedPropertyValue("new_name", field.getColumnName(), newname)
Le script effectue des boucles dans tous les noeuds du flux en cours et vérifie si chaque noeud est un filtre. Si tel est le cas, le script parcourt en boucle chaque zone du noeud et utilise la fonction field.upper()
ou field.getColumnName().upper()
pour remplacer le nom par des majuscules.