Parâmetros

Os parâmetros fornecem uma maneira útil de passar valores em tempo de execução, em vez de codificá-los diretamente em um script. Os parâmetros e seus valores são definidos da mesma forma que os fluxos, ou seja, como entradas na tabela de parâmetros de um fluxo ou como parâmetros na linha de comando. A classe Stream implementa um conjunto de funções definidas pelo objeto ParameterProvider , conforme mostrado na tabela a seguir. Session fornece uma chamada getParameters() que retorna um objeto que define essas funções.

Tabela 1. Funções definidas pelo objeto ParameterProvider
Método Tipo de retorno Descrição
p.parameterIterator() Iterador Retorna um iterador de nomes de parâmetros para esse objeto.
p.getParameterDefinition( parameterName) ParameterDefinition Retorna a definição de parâmetro para o parâmetro com o nome especificado ou None se esse parâmetro não existir nesse provedor. O resultado pode ser um instantâneo da definição no momento em que o método foi chamado e não precisa refletir nenhuma modificação posterior feita no parâmetro por meio desse provedor.
p.getParameterLabel(parameterName) sequência Retorna o rótulo do parâmetro nomeado ou None se esse parâmetro não existir.
p.setParameterLabel(parameterName, label) Não aplicável Define o rótulo do parâmetro nomeado.
p.getParameterStorage( parameterName) ParameterStorage Retorna o armazenamento do parâmetro nomeado ou None se esse parâmetro não existir.
p.setParameterStorage( parameterName, storage) Não aplicável Define o armazenamento do parâmetro nomeado.
p.getParameterType(parameterName) ParameterType Retorna o tipo do parâmetro nomeado ou None se esse parâmetro não existir.
p.setParameterType(parameterName, type) Não aplicável Define o tipo do parâmetro nomeado.
p.getParameterValue(parameterName) Objeto Retorna o valor do parâmetro nomeado ou None se esse parâmetro não existir.
p.setParameterValue(parameterName, value) Não aplicável Define o valor do parâmetro nomeado.

No exemplo a seguir, o script agrega alguns dados da Telco para descobrir qual região tem os dados de renda média mais baixos. Um parâmetro de fluxo é então definido com essa região. Esse parâmetro de fluxo é então usado em um nó Select para excluir essa região dos dados, antes que um modelo de rotatividade seja criado com base no restante.

O exemplo é artificial porque o script gera o próprio nó Select e, portanto, poderia ter gerado o valor correto diretamente na expressão do nó Select. No entanto, os fluxos são normalmente pré-construídos, portanto, a configuração de parâmetros dessa forma fornece um exemplo útil.

A primeira parte desse script de exemplo cria o parâmetro de fluxo que conterá a região com a renda média mais baixa. O script também cria os nós na ramificação de agregação e na ramificação de criação de modelos e os conecta.

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)

O script de exemplo cria o seguinte fluxo.

Figura 1. Fluxo que resulta do script de exemplo
Fluxo que resulta do script de exemplo