Go back to the English version of the documentation对节点执行循环
对节点执行循环
Last updated: 2024年10月07日
您可以使用 for
循环来循环流中的所有节点。 例如,以下两个脚本示例循环所有节点,并将任何 Filter 节点中的字段名称更改为大写。
您可以在包含 "过滤" 节点的任何流中使用此脚本,即使实际上未过滤任何字段也是如此。 只需添加用于传递所有字段的 "过滤" 节点,即可将字段名称更改为全线大写。
# 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)
脚本将循环当前流中的所有节点,并检查每个节点是否为过滤器。 如果是这样,那么脚本将循环使用节点中的每个字段,并使用 field.upper()
或 field.getColumnName().upper()
函数将名称更改为大写。