0 / 0
Torna alla versione inglese della documentazione
Esecuzione di cicli attraverso i nodi
Ultimo aggiornamento: 07 ott 2024
Esecuzione di cicli attraverso i nodi

È possibile utilizzare un loop for per scorrere tutti i nodi in un flusso. Ad esempio, i seguenti due esempi di script eseguono il loop in tutti i nodi e modificano i nomi dei campi in qualsiasi nodo Filtro in maiuscolo.

È possibile utilizzare questo script in qualsiasi flusso che contiene un nodo Filtro, anche se nessun campo è effettivamente filtrato. È sufficiente aggiungere un nodo Filtro che passi tutti i campi in modo da modificare i nomi dei campi in maiuscolo.

# 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)

Lo script esegue il loop in tutti i nodi nel flusso corrente e verifica se ciascun nodo è un filtro. In tal caso, lo script esegue il loop in ogni campo del nodo e utilizza la funzione field.upper() o field.getColumnName().upper() per modificare il nome in maiuscolo.