在spss-modeler

时间:2018-02-20 22:55:14

标签: spss-modeler

我正在使用Modeler 18.0而且我是该工具的新手。

我继承了30个流文件。每个流以30个excel源节点开始,文件名如\ .xlsx(例如c:\ source \ regl_sales_01_WI_2017Q3.xlsx)。我需要为2017Q4版本的源文件更新所有900个节点。

我可以使用某种类型的脚本来查找和替换吗?这是一个独立的脚本吗?好像我可以使用类似node.setPropertyValue(“full_filename”,“c:\ source \ regl_sales_01_WI_2017Q3.xlsx”)的东西。如果我只能识别脚本和节点。

谢谢

1 个答案:

答案 0 :(得分:0)

我认为您的问题可以通过独立脚本和stream.findAll()功能来解决。

你可以这样做:

from os import listdir
from os.path import isfile, join

session = modeler.script.session()
tasks = session.getTaskRunner()
mypath = 'C:\\yourpath'
streams = [f for f in listdir(mypath) if (isfile(join(mypath, f)) and f.endswith(".str"))]
for streamFile in streams:
    print(stream.getName()+" is getting processed.")
    stream = tasks.openStreamFromFile(demosDir + streamFile, True)
    inputNodes = stream.findAll("excelimport", None)
    for in in inputNodes:
        ff = in.getPropertyValue("full_filename")
        ff.replace("2017Q3.xlsx", "2017Q4.xlsx")
        in.setPropertyValue("full_filename", ff)
    print(stream.getName()+" is processed.")
    stream.close()

我没有对此进行测试,但它不需要进行大量调整才能正常工作。