SPSS Modeler использует Python для выполнения цикла по месяцам из кода SQLPython

Программы на Python
Anonymous
SPSS Modeler использует Python для выполнения цикла по месяцам из кода SQL

Сообщение Anonymous »

У меня есть узел в SPSS Modeler с кодом SQL, представленным ниже.
Он выбирает месяц и подсчитывает количество за один месяц.
Я создал параметр «$P-p_ly_parameter» и присвоил ему значение 201807.

Я хочу запустить цикл по месяцам с 201807 по 201907 год.

Я использую код Python, помещая его в «Инструменты», «Свойства потока», «Выполнение». .

Но когда я его запускаю, он не позволяет мне получить ожидаемые результаты.
На самом деле я не получаю никаких результатов.

Очевидно, я что-то упускаю.
Я полагаю, что результатом цикла не является присвоение месячного идентификатора для каждого месяца.

Не могли бы вы помочь мне, как выполнить цикл в правильно?
Должен ли я использовать узел Select и включить что-то вроде этого?

Код: Выделить всё

-- SQL
SELECT
cust.month_id,
count(*) as AB_P1_TOTAL

FROM tab1 cust
JOIN tab2 dcust ON dcust.month_id=cust.month_id and
dcust.cust_srcid=cust.cust_srcid
WHERE
cust.month_id ='$P-p_ly_parameter'
group by cust.month_id
order by cust.month_id

# Python

import modeler.api

# boilerplate definitions
stream = modeler.script.stream()
taskrunner = modeler.script.session().getTaskRunner()

# variables for starting year
startYear = 2018
# gets us to 2019
yearsToLoop = 1

# get the required node by Id
# double click on node, go to annotations and get ID from bottom right
selectNode = stream.findByID('id5NBVZYS3XT2')
runNode = stream.findByID('id3N3V6JXBQU2')

# loop through our years
for year in range(0, yearsToLoop):
# loop through months
for month in range(1,13):
#month_id = str(startYear + year) + str(month).rjust(2,'0')#ar
p_ly_parameter = str(startYear + year) + str(month).rjust(2,'0')#ar
#debug
#print month_id
print p_ly_parameter
# set the condition in the select node
#selectNode.setPropertyValue('condition', 'month_id = ' + month_id)
#selectNode.setPropertyValue("condition", "'month_id = '$P-p_ly_parameter'")
#selectNode.setPropertyValue('mode', 'Include')

# run the stream
runNode.run(None)
Я ожидаю результатов по месяцам, например 201807 500, 201808 1000 и т. д.
Но теперь я ничего не получаю

Подробнее здесь: https://stackoverflow.com/questions/575 ... m-sql-code

Вернуться в «Python»