Як запускати Python через SAS?

Можливо ви вже стикалися з ситуацій, коли у вас є програма написана на python (таких програм може бути безліч і написані вони можуть бути вашими колегами) і вам треба вмонтувати цей запуск в програмний код SAS.

Як же це зробити?



Отже, для цього скористаємося наступним open-source інструментом github. Для початку скопіюємо SASJavaExec.java файл собі і скомпилируем його в jar файл. Важливий момент: необхідно компілювати з допомогою JDK 1.7_025, т. к. при використанні JDK 1.8 відбуватиметься помилка в SAS коді.

1. Створюємо класи: java -jar SASJavaExec.jar
2. Компілюємо в jar файл: jar cfm SASJavaExec.jar manifest.txt SASJavaExec$1.class SASJavaExec.class

Де manifest.txt це файл з одного рядка: Main-Class: SASJavaExec. Тепер у нас є SASJavaExec.jar файл.

Далі потрібно прописати в налаштуваннях системи. Я запускав програму на Windows, тому в налаштуваннях середовища потрібно задати змінну CLASSPATH.

У моєму випадку це виглядало таким чином:


Більш докладно як можна це зробити можна подивитися здесь.

Після того як зробили все вище представлені кроки запускаємо SAS.

Необхідно прописати наступні шляхи:

Шлях до файлу python: %let PYTHON_EXEC_COMMAND = C:\Python27\python.exe;
Шлях до вашої програми на python:
%let WORK_DIR = C:\SAS\T_Java\Example; 
python_pgm = "&WORK_DIR.\digitsdata_svm.py";

Після цього пишемо виконуємо код — Data set:

/*** Part I: Python ***/
data _null_;
length rtn_val 8;
*** Python program takes working directory as first argument;
python_pgm = "&WORK_DIR.\digitsdata_svm.py";
python_arg1 = "&WORK_DIR"; 
python_call = cat('"', trim(python_pgm), '" "', trim(python_arg1), '"'); 
put python_pgm = ;
put python_arg1 =;
put python_call=;

declare javaobj j("SASJavaExec", "&PYTHON_EXEC_COMMAND", python_call); 
j.callIntMethod("executeProcess", rtn_val);
run;

Далі запускаємо нашу програму і дивимося лог виконання:

python_pgm=C:\SAS\T_Java\Example\digitsdata_svm.py
python_arg1=C:\SAS\T_Java\Example
python_call="C:\SAS\T_Java\Example\digitsdata_svm.py" "C:\SAS\T_Java\Example"
27, 2016 6:36:39 AM SASJavaExec executeProcess
INFO: Executing [C:\Python27\python.exe, C:\SAS\T_Java\Example\digitsdata_svm.py, C:\SAS\T_Java\Example] ...
27, 2016 6:36:39 AM SASJavaExec executeProcess
INFO: Starting external process ...
27, 2016 6:36:39 AM SASJavaExec executeProcess
INFO: External process exit 0 value.

Все в порядку, програма digitsdata_svm.py виконалася з SAS.

Сподіваюся дана стаття була для Вас корисною.

p.s. Приклад самої програми SAS був узятий c github посилання на який вказав на початку статті.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.