Выполнить хранимый процесс SAS с помощью Python
Я знаю, что есть метод, с помощью которого вы можете вызвать хранимый процесс через веб-приложение хранимого процесса SAS, но мне было интересно, есть ли метод, с помощью которого я могу напрямую вызвать сервер хранимых процессов.
Цель состоит в том, чтобы вызвать хранимый процесс, который доставляет данные (через файл _webout?) В python, настолько эффективно, насколько это возможно. Поэтому, возможно, это может сократить время обработки, пропуская веб-приложение SAS.
Я не думаю, что это возможно с SASPy (кажется, использует серверы Workspace).
С уважением.
1 ответ
Есть два способа вызвать сервер хранимых процессов в коде, используя библиотеки Java и библиотеки.NET.
Лично я использовал.NET для создания приложения командной строки, которое вызывает хранимый процесс и возвращает поток в STDOUT. Из Python вы только что прочитали этот вывод. Вы можете повторить это из Java (но библиотеки.NET проще в использовании).
Другой метод - использовать библиотеку, которая позволяет вам вызывать Java из вашего Python (или.NET, если вы используете MS Python) и интегрировать его таким образом.
В конце концов, в большинстве случаев проще использовать веб-приложение STP. Вы можете войти в систему один раз, сохранить токен авторизации и передать его обратно, что сводит на нет затраты на повторный вход для каждого вызова.
Лучше всего установить saspy, настроить файл sascfg_personal.py, открыть сеанс и запустить сохраненный процесс. Что-то вроде этого:
import saspy
sas = saspy.SASsession(cfgname='winiomwin')
stp = 'proc stp program="/Shared Data/Stored_Processes/your_SP"; run;'
sas_output = sas.submit(stp)
sas_log = sas_output['LOG']