0 / 0
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() 函数将名称更改为大写。

Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more