Выполнить хранимый процесс 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']
Другие вопросы по тегам