Looping através de nós
Você pode usar um loop for para percorrer todos os nós em um fluxo. Por exemplo, os dois exemplos de script a seguir loop através de todos os nós e alterar nomes de campo em qualquer nós Filtro para maiúsculas.
Você pode usar esse script em qualquer fluxo que contenha um nó Filter, mesmo que nenhum campo seja realmente filtrado. Basta adicionar um nó Filtro que passa todos os campos a fim de alterar nomes de campo para maiúsculas em toda a diretoria.
# 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)
O script percorre todos os nós do fluxo atual e verifica se cada nó é um filtro. Se sim, o script se lota através de cada campo no nó e usa a função field.upper() ou field.getColumnName().upper() para alterar o nome para maiússola.