Puede utilizar un bucle for
para realizar un bucle a través de todos los nodos de un flujo. Por ejemplo, los dos ejemplos de script siguientes pasan por todos los nodos y cambian los nombres de campo en cualquier nodo Filtrar a mayúsculas.
Puede utilizar este script en cualquier flujo que contenga un nodo Filtrar, incluso si no hay campos filtrados realmente. Simplemente añada un nodo Filtrar que pase todos los campos para cambiar los nombres de campo a mayúsculas en todos los campos.
# 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)
El script realiza un bucle a través de todos los nodos del flujo actual y comprueba si cada nodo es un filtro. Si es así, el script pasa por cada campo del nodo y utiliza la función field.upper()
o field.getColumnName().upper()
para cambiar el nombre a mayúsculas.