参数

参数提供了一种在运行时传递值而不是在脚本中直接对这些值进行硬编码的有用方式。 参数及其值的定义方式与流的定义方式相同; 即,作为流的参数表中的条目,或作为命令行上的参数。 Stream 类实现由 ParameterProvider 对象定义的一组函数,如下表中所示。 Session 提供了一个 getParameters() 调用,该调用返回用于定义这些函数的对象。

表 1. 由 ParameterProvider 对象定义的函数
方法 返回类型 描述
p.parameterIterator() 迭代器 返回此对象的参数名的迭代器。
p.getParameterDefinition( parameterName) ParameterDefinition 返回具有指定名称的参数的参数定义或 None(如果此提供程序中不存在此类参数)。 结果可以是调用此方法时的定义快照,并且不需要反映通过此提供程序对该参数进行的任何后续修改。
p.getParameterLabel(parameterName) string 返回指定参数的标签或 None(如果不存在此类参数)。
p.setParameterLabel(parameterName, label) 不适用 设置指定参数的标签。
p.getParameterStorage( parameterName) ParameterStorage 返回指定参数的存储或 None(如果不存在此类参数)。
p.setParameterStorage( parameterName, storage) 不适用 设置指定参数的存储。
p.getParameterType(parameterName) ParameterType 返回指定参数的类型或 None(如果不存在此类参数)。
p.setParameterType(parameterName, type) 不适用 设置指定参数的类型。
p.getParameterValue(parameterName) 对象 返回指定参数的值或 None(如果不存在此类参数)。
p.setParameterValue(parameterName, value) 不适用 设置指定参数的值。

在以下示例中,脚本汇总了一些 Telco 数据以查找具有最低平均收入数据的区域。 然后使用此区域设置流参数。 然后,在 "选择" 节点中使用该流参数以从数据中排除该区域,然后在其余部分上构建流失模型。

此示例并不真实,这是因为脚本本身生成了“选择”节点,并因此已经在“选择”节点表达式中直接生成正确的值。 但是,流通常是预先构建的,因此以这种方式设置参数提供了一个有用的示例。

此示例脚本的第一部分将创建流参数,该参数将包含平均收入最低的区域。 另外,此脚本还将在汇总分支和模型构建分支中创建节点,并将这些节点连接在一起。

import modeler.api

stream = modeler.script.stream()

# Initialize a flow parameter
stream.setParameterStorage("LowestRegion", modeler.api.ParameterStorage.INTEGER)

# First create the aggregation branch to compute the average income per region
sourcenode = stream.findByID("idGXVBG5FBZH")

aggregatenode = modeler.script.stream().createAt("aggregate", "Aggregate", 294, 142)
aggregatenode.setPropertyValue("keys", ["region"])
aggregatenode.setKeyedPropertyValue("aggregates", "income", ["Mean"])

tablenode = modeler.script.stream().createAt("table", "Table", 462, 142)

stream.link(sourcenode, aggregatenode)
stream.link(aggregatenode, tablenode)

selectnode = stream.createAt("select", "Select", 210, 232)
selectnode.setPropertyValue("mode", "Discard")
# Reference the flow parameter in the selection
selectnode.setPropertyValue("condition", "'region' = '$P-LowestRegion'")

typenode = stream.createAt("type", "Type", 366, 232)
typenode.setKeyedPropertyValue("direction", "Drug", "Target")

c50node = stream.createAt("c50", "C5.0", 534, 232)

stream.link(sourcenode, selectnode)
stream.link(selectnode, typenode)
stream.link(typenode, c50node)

示例脚本将创建以下流。

图 1。 从示例脚本生成的流
从示例脚本生成的流