Consulta. Como integro los datos que produce SAS a aplicaciones escritas en C++ o en Java?

119 views
Skip to first unread message

Luz Adriana

unread,
Mar 25, 2010, 5:54:25 PM3/25/10
to Lasug
Estoy aprendiendo Java. Como se pueden mandar los datos de SAS a
aplicaciones en Java?
Tenemos programas que resuelven problemas de optimización en SAS O.R.
y otros algoritmos también programados en SAS. Cómo puedo "pedirle" a
SAS Enterprise Guide desde Java que corra esos programas y obtenga una
solución que pueda recibir de regreso en Java?

CPLEX, software para optimización, tiene librerías (API) que se pueden
invocar desde Java. También tiene librerías para C++. Yo quisiera
hacer lo mismo (o algo similar) con SAS. Tengo acceso a SAS Data
Integration también.

Muchas gracias por la información.

Altons

unread,
Mar 25, 2010, 6:30:36 PM3/25/10
to Lasug
Hola Luz,

Hay 2 maneras de integrar SAS con JAVA:

1) Invocando Java desde SAS usando el objeto javaobj dentro de un Data
Step. Esta opcion no es la que estas buscando pero te lo comento para
q la tengas en cuenta.

2) Invocar SAS desde JAVA. Para poder Invocar SAS desde Java necesitas
el SAS IOM (Integrated Object Model) que te permite crear un puente de
comunicacion entre ambos ambientes permitiendote definir workspaces y
hacer llamadas a la API de SAS.

Aqui tienes un ejemplo:

import com.sas.iom.WorkspaceConnector;
import com.sas.iom.WorkspaceFactory;
import com.sas.iom.SAS.IWorkspace;
import java.util.Properties;
import com.sas.iom.SAS.ILanguageService;
import
com.sas.iom.SAS.ILanguageServicePackage.CarriageControlSeqHolder;
import com.sas.iom.SAS.ILanguageServicePackage.LineTypeSeqHolder;
import com.sas.iom.SASIOMDefs.StringSeqHolder;
import com.sas.iom.SAS.IDataService;
import com.sas.rio.MVAConnection;
import java.sql.*;
import java.io.*;

public static void main(String[] args) throws Exception {
Properties iomServerProperties = new Properties();
iomServerProperties.put("host","xxxxxxx");
iomServerProperties.put("port","xxxx");
iomServerProperties.put("userName","xxxxxx");
iomServerProperties.put("password","xxxxxxxx");
Properties[] serverList = {iomServerProperties};
//use workspace factory to get reference to workspace stub
//IWorkspace sasWorkspace = ...
// insert workspace usage code here
WorkspaceFactory wFactory = new
WorkspaceFactory(serverList,null,null);
WorkspaceConnector connector = wFactory.getWorkspaceConnector(0L);
IWorkspace sasWorkspace = connector.getWorkspace();
ILanguageService sasLanguage = sasWorkspace.LanguageService();

etc etc etc.....

El SAS IOM es un componente que por lo general viene en la instalacion
de SAS por defecto (no estoy 100% seguro), pero te recomiendo que
consultes con tu admintrador para comprobar esto.

Esto tambien se puede hacer con Visual Basic y Vbs....inclusive con
Excel, solo hay que definir el SAS workspace y lo demas queda de parte
de SAS, puedes ejecutar cualquier procedimiento SAS y escribir los
resultados en Excel, por ejemplo.

Hace tiempo que colgue los guantes con Java y me pase a Ruby, pero si
ya estas programando Java no deberias tener mayor problema


AHORA BIEN, basado en tus comentarios... creo que podrias modificar el
programa SAS que ejecutas en Enterprise guide para que escriba un
archivo plano con los resultados en algun directorio... ya con eso
seria muy facil leer los datos en JAVA. Incluso puedes agendar el
proyecto para que corra a una hora predeterminada para que tengas los
datos listo cuando ejecutes tu programa JAVA.

Espero te sirva de ayuda.

SASludos,

Alberto

Luz Adriana

unread,
Mar 26, 2010, 3:07:33 PM3/26/10
to Lasug
Muchisimas gracias por la informacion. Se ha develado un misterio que
tengo un buen rato de tener sin resolver.
Una pregunta mas. Hay algo que sirva para hacer algo semejante con C+
+? O el mismo IOM puede servir?
Muchas gracias!

> > Muchas gracias por la información.- Hide quoted text -
>
> - Show quoted text -

Altons

unread,
Mar 28, 2010, 9:44:36 AM3/28/10
to Lasug
Si tambien lo puedes hacer desde C++, Puedes usar ADO.net para
conectarte con SAS. Aqui tienes un link con la info que necesitas

http://support.sas.com/rnd/itech/doc9/dev_guide/dist-obj/winclnt/ext_iom_intro.html

SASludos,

Alberto

Josep Servat

unread,
Apr 6, 2010, 4:21:56 AM4/6/10
to lasu...@googlegroups.com
 Buenas grupo !!
 
  Tengo solo una pregunta para abrir un nuevo hilo. Alguien sabe si SAS Data integration tiene un control de versiones CVS o similar para los jobs ?
 
Saludos.

Altons

unread,
Apr 6, 2010, 5:27:10 AM4/6/10
to Lasug
Hola Josep,

Hasta donde yo sé, SAS no posee un control de versiones, pero te
comento que he trabajado en proyectos donde CVS y Subversion están
integrados con SAS para el control de versiones. Tengo ya bastante
tiempo que no trabajo con DI Studio pero hasta donde recuerdo, si
hacias boton-derecho del raton sobre un objeto (tabla o programa
fuente), luego click en Change Management -> Historial puedes ver las
versiones del archivo. tambien lo puedes hacer desde Project una vez
seleccionado el objeto.

DI studio tiene un nivel basico de control de versiones, no hace
rollback pero si maneja muy bien la seguridad y los accesos
concurrentes.

Espero te sirva.

SASludos,

Alberto

Josep Servat

unread,
Apr 6, 2010, 6:38:19 AM4/6/10
to lasu...@googlegroups.com
Muchas gracias Alberto you are GREAT!!!   Al final lo he puesto el correo en el hilo que no queria. Solo por casualidad que programas con EG o usas más herramientas ? Te lo preguntos si no es indiscreción y para saber como se mueve el mercado ;) Gracias !!

--
Has recibido este mensaje porque estás suscrito al grupo "Lasug" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a lasu...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a lasugorg+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/lasugorg?hl=es.




--
by yuse

Reply all
Reply to author
Forward
0 new messages